タグ付けされた質問 「repeated-commands」

同じコマンドの再生に関する質問。これには、ドットコマンド(。)、@マクロ、@:などのメソッドが含まれます。

2
記録(記録されたマクロ)を表示および編集するにはどうすればよいですか?
私は(私の操作を記録するために複雑な繰り返しを使用していますqq、レコードにいくつかの操作を、q停止する)と私は間違いをしました。 記録した内容を確認して、間違いを修正することはできますか? 記録されたキャラクターを@q作品ごとに呼び出しますが、マッピング(:map q- No mapping found)に表示されません。 次のように入力しても、ヘルプにはあまり情報がありません:help recording。

4
最後のUIコマンドを繰り返すことはできますか?
.最後の編集コマンドを繰り返すために使用できることを知っています。 最後のUI操作コマンドを繰り返す方法はありますか?たとえば10<C-W>-、ウィンドウを10行縮小するように記述できます。もっと小さくしたい場合は、⟨ いくつかのキー pressを押してこのコマンドを簡単に繰り返すことができると便利です。

3
挿入モードに入らずに複数の文字を置き換える方法
次のような行があるファイルがあります。 foofoo.xy.barbar 私が変更したいxyとしますgh。私が実行しようとしました2r> - ghが、それは置き換えとして、明らかにそれは、仕事をしませんでしたxyしgg、その後、左に私のカーソルの1スポットを移動しました。 挿入モードに入らず、または多くのキーストロークを使用せずにこれを行う方法はあり:s/xy/gh/ますか(例:)?


3
vimにわずかな違いがある繰り返しのテキストを挿入する方法は?
このようなテキストを挿入したい: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... テキストを何度も貼り付けてから、置換を使用して各行の1つの単語を変更できることはわかっていますが、この方法は依然として非常に不便です。 単語または単語リストを「変数」に保存し、この変数を使用して同様のテキストを生成する方法はありますか? 編集私は元の質問で何かを不明確にしました、実際私はいくつかの非常によく似た関数定義を作ろうとしているので、wordA wordB...はテキストの各クローンに何度も現れ、テキストには多くの行が含まれる場合があります。パターンは次のとおりです。 similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (テキストには改行が含まれている可能性があり、wordA、wordB ...は何度も存在する可能性があります) 2番目の編集 "similar_text"の部分は、そのような仕事をするたびに異なる可能性があるため、この仕事の解決策は再利用可能である方がよいでしょう。私は非常によく似た関数定義、または文字列から関数へのマッピングテーブルを作成しようとしているためです。 回答といくつかの練習を読んだ後、改行を含む可能性のある別々の「part1」、「part2」...「partN」を書くのは難しいので、この仕事をある種の置換と考える方が便利だと思います。まずテンプレート: similar_text1 $WORD similar_text2 $WORD …

4
コマンドシーケンスをまとめて繰り返し(。)
検討してください: apple pear カーソルを最初の行に置いてと入力するとYp、次のように生成されます。 apple apple pear カーソルをpear行に置いて入力.し、最後のコマンドを繰り返します。これはp(組み合わせではなく)のみを繰り返しYp、以下を生成します。 apple apple pear apple .最後のN個のコマンドを繰り返すように指示する方法を教えてください。2.組み合わせを繰り返しYpて生成するようなもの: apple apple pear pear それはうまくいきません-それはp2回繰り返されます。しかし、アイデアは「最後の2つのコマンドのシーケンスを繰り返す」でしょう。 qコマンドシーケンスを記録し、で繰り返すことができることはわかっています@@が、このソリューションは理想的ではありません。これは、前もって計画を立てておく必要があるためです。あなたはそれをやった。 私が望むものを達成する方法はありますか? 賞品:上記が不可能な場合、最後のマクロ再生を繰り返す方法はありますか?たとえば、@@最後のマクロを再生するために入力した場合、それ以降はもう一度.入力するのと同じです@@-これは違います(たとえば、結果が@@現在の行によって異なる場合)

6
n行を削除して1行のスクリプトをスキップ
単にn行を削除し、1行をスキップして、ドキュメントの最後まで繰り返す基本的なVimスクリプトを作成したいと思います。特定の一致は気にせず、行を削除したいだけです。例えば; したがって3ddj、ドキュメント全体に対してコマンドを繰り返したいと思います。 Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want …

6
各行の最初の4文字を同じ行の終わりにコピーする方法は?
次のような一連の行があるとします。 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 最初の4文字(年)を取得し、行の最後にコピーして、次のようにする方法はありますか。 2001 "Some Kind of …

2
マクロに最後のアクション(。)を保存する
使用事例 通常モードです。マクロの記録については明確に考えていませんが、コマンドを1つ変更します。これで、ドットを使用してこのアクションを繰り返すことができます。 毎回コマンド全体を入力するのではなく、後で使用するためにマクロに保存しておくと便利なアクションだと気づきました。ドットを使用して、このコマンドを必要とするすべての変更に今すぐ対応するか、編集を続行して、後でマクロに保存してこのコマンドを使用できます。 後者は私がやりたいことですが、変更を元に戻す最も簡単な方法は簡単ではありません。変更を元に戻し、マクロの記録を開始し、コマンドを再入力して必要な変更を行い、マクロの記録を停止します。 これまでに試したこと: マクロにドットを記録すると、ドットが実行される変更ではなくドットが記録されるため、機能しません。(たとえば、ドットで保存されたコマンドがd5w、マクロの記録を開始し、を介してアクションを実行した場合、マクロを実行するたびに5ワードが削除されることを期待すると、それは起こりません。次に実行するときマクロはコマンドではなくドットを実行しますd5w。つまり、マクロの記録後に他の変更を行った場合、たとえば、3つの単語を使用d3wして削除し、それが最後に行った変更である場合、マクロを実行すると3つ削除されます。 5ではなく単語です。実行しているだけなので.)

1
コマンドのプレフィックスに不条理に大きな数が使用されるのを防ぐ(または少なくとも確認を促す)にはどうすればよいですか?
あなたが思うほど頻繁には起こりませんが、たまに起こり、私は猫を飼っていません。 基本的に、数字の行またはテンキーをマッシュしてから、繰り返し可能なコマンドをトリガーするキーコンボをたまたま叩いた場合、誤ってVimに数千回、数百万回、または数十億回もタスクを実行するように命令することができます。これは簡単に制御できなくなり、データが失われる可能性があります。 したがって、ソースコードにこのようなDoSを防止するための健全性チェックとして機能するように変更できる構成または何かがあるかどうか疑問に思います。

1
アドレスで複数行を削除
私はこのvimgolfチャレンジを見ていて、アドレスで特定の行を削除するのは良いことだと思いました。でこれを実行できることはわかって:<line_number>dいますが、d実行するために複数の行番号をリストする方法はありますか?私はこのようなものを想像します::1,4,32dもちろん、それは機能しません。 これはどのように行われますか?

1
:g / ^ / normおよび:%normによるラインリファレンスの違いの理解
次の非常に単純なファイルがあるとしましょう a b c d e そして、各行の後に空行を追加することにしました。いくつかの異なる方法がすぐに思い浮かびます。私たちはそれをするだけかもしれません(したがって、失敗を受け入れます)。のようなマクロを記録し、qqo<ESC>jqそれを数回繰り返す場合があります。 当時、私には他の2つの方法がより明白に思えました。 まず、:normコマンドoを各行に発行すると思いました。だから私は走る:%norm o。しかし、実際に何が起こるかというと、5行の空白行があり、その後に上記の分離されていない行が続きます。私はこれを%norm、vimが実際にこの5行のファイルの最初の5行で次の通常のコマンドを発行してメッセージを取得することを意味すると解釈します。oコマンドは、新しい行を作成し、vimのは、それはいくつかの他の識別子によって、実際に行番号で参照していないという意味で「ダム」です。 さて、恥ずかしかったです。承知しました。上記の方法が機能するかどうかを確認するために、他にもいくつか試してみましたが、残念ながらできませんでした。好奇心から、私は他のお気に入りの大量適用方法を試しました。これは私を試してみました:g/^/norm o。驚いたことに、これはうまくいきます!だから私の目には、vimは上記と同じようにここでは「ダム」ではなく、単に行番号だけではなく行を参照しているようです。 正確には何が起こっているのですか?

1
最後から2番目(またはそれ以前)の変更を繰り返す方法はありますか?
この.コマンドは、最後のプリミティブアクションをすばやくすばやく実行するのに非常に役立ちます。ただし、その間に行ったその他の変更はこれを上書きします。 "2バッファに常に最後のヤンクが含まれるのと同様に、マクロとして定義することなく古い変更を呼び出して繰り返す方法はありますか?

1
数字のプレフィックスが付いたホットキーで何度も機能を実行することは可能ですか?
exコマンドを実行する前に数値の接頭辞を入力した場合、それが適用される規則は、行範囲全体で操作を準備するようにコマンドを設定することです。ドキュメントで説明されています 行数 変更する行数がわかっている場合は、番号を入力してから「:」を入力できます。たとえば、「5:」と入力すると、次のようになります。 :.,.+4 これで、使用するコマンドを入力できます。範囲「。」を使用します。(現在の行) "。+ 4"(4行下)まで。したがって、5行にまたがっています。 今私が扱っているのは私のカスタム関数です、これはこれです: function! MyAmazingEnhancedDot() if v:hlsearch == 1 :normal! .n else :normal! .j endif endfun これは、一連の行または一連の検索一致に対して操作を繰り返すことを含む、反復的なタスクを合理化する方法にすぎません。 この機能はホットキーにバインドされています。以下のようなAlt+ .または何でも。 私の目的は、非常に強力な何かをできるようにすることです:私は入力することができるはず/varName<CR>ciwnew-var<ESC>n9<Alt+.>の10個のインスタンス名の変更を達成するためvarNameにしますnew-var。 これを行うと実際に何が起こるかというと、名前の変更が行われず、9行が.列0の-saved編集操作で操作されているということです。 私はVimが私のキーストロークを次のように解釈しているとしか想定できません:.,.+8 normal! .n。 ガラスの半分いっぱいの側で:normal! .jは、バインドのケースが実際に機能しjます。これは、影響のないモーションはこの状況では影響がないためです。(私はまだjそれが数字の接頭辞のないインタラクティブなユースケースで動作させるために必要です)。 それで私の質問は、Vimがバインドに適用する行拡張動作をどのようにオーバーライドできるかということです。数値接頭辞を引数またはそのようなものとして読み取ることができれば素晴らしいと思います。

4
を交換してください。->特定の場所
コードを修正.する->とき、時々私はと取り替える必要があります。 多くの(数百の)ドット(.)があり、変更する必要があるのは少数のドットだけなので、通常、検索と置換は使用できません。 ただし、make changelistを実行しているときに変更が必要なものを見つけました。 繰り返し演算子を使用しても、1つのインスタンスを変更してからドットコマンドで繰り返すと、次のようになるため、まったく機能しません。 structBlah->.memberBlah 次にx、不要なドットを削除するために使用すると、最後の変更が削除されたため、貼り付けとドットが機能しなくなります。 つまり、基本的に問題は繰り返しオペレーターがモーションと編集を繰り返すことですが、ここでは削除と挿入の2つの編集を繰り返す必要があります。 これを行う便利な方法はありますか?私の考えの1つは、次のようなマクロを使用することでした。 xi-><ESC>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.