7

vimでは、ソースコードの識別子にサフィックスを追加し、「。」を使用して他の識別子でそれを繰り返したいと思うことがよくあります。

すなわち変換する:

foo bar baz faz

に:

foo_old bar_old baz_old faz_old

私はできるようになりたいです:

ea_old<ESC>w.w.w.

それ以外の:

ea_old<ESC>wea_old<ESC>wea_old<ESC>wea_old<ESC>

つまり、単語の末尾にテキストを追加して、履歴に繰り返し可能なコマンドとして表示したいのです。誰もがこれを行う方法を知っていますか?

できます:

nmap <C-a> ea

単語の最後に追加するもう少し便利な方法を作成しますが、「a」を繰り返すだけです。理想的には、「eaarbitrarytext」シーケンス全体を繰り返すことができるようにしたいと思います。

私はrepeat.vimプラグインをインストールして少しいじくり回しましたが、vimscriptで何をしているのかよくわかりません。

要件の明確化:カー​​ソルが識別子のどこかに来るまで任意の移動コマンドを使用してジャンプし、「。」を押すことができるようにしたい。接尾辞の追加を繰り返します。上記の例は、特殊なケースを意図しています。

4

3 に答える 3

9

ea_oldESCe.e.e.あなたのために働くはずです。

別の可能な解決策はc、検索および置換コマンドでフラグを使用することです。

:.s/\<[[:alnum:]]\+\>/&_old/gc

あとは、押しyて各交換を確認するだけです。これは、実行する置換が多数あり、それぞれを手動で確認したい場合に高速です。一方、行のすべて_oldの単語に追加したい場合は、次を削除できます。c

:.s/\<[[:alnum:]]\+\>/&_old/g
于 2012-05-19T17:23:35.923 に答える
9

私の推測では、OP は、「コマンドの任意の大きなシーケンスを非常に簡単に繰り返したい」として再定式化できる、より一般的な問題を説明するために非常に単純な例を使用したと思われます。

そしてそのために、qコマンドがあります。録音するお気に入りのレジスタを選択し、「q」と発声してから、次のように入力します。

qq-- 録音を開始します

(ここで複雑な一連のアクションを実行します...)

q-- 記録を停止します

@q-- 録音を再生します

そして、プログラミング時にこれを頻繁に使用しているので、上記のアクションをF2、 、F3およびF4キーボードにそれぞれマッピングすることになりました。これにより、一連のアクションを 1 回のキー ストロークで繰り返すことができます。.vimrc で:

nmap <F2> qq
nmap <F3> q
nmap <F4> @q
于 2012-05-20T09:42:10.630 に答える
1

この特定のケースでは、検索と置換を使用できます: s/ /_old /g

于 2012-05-20T09:53:25.713 に答える