2012-04-23 13 views
4

は、私はこのような正規表現を持っています。毎回8つの空白を入力する必要はありません。これを行うよりエレガントな方法はありますか?Vimの検索と置換クエリ

答えて

3

あなたがキーストロークを節約した後であれば、あなたは置換テキストと名前付きレジスタを初期化することができます

:let @a = repeat(' ', 8) 

あなたの置換コマンドを構築する際に続いて、あなたはCTRL-R + {レジスタを介してレジスタの内容を挿入-name}:さらに簡略化のため

:%s/pattern/<C-R>a&/gc 

、Iは&介して置換文字列の検索パターンを参照しています。

+0

ありがとうございました。私にとって妥当な解決策のようです。私はレジスタ初期化コードを.vimrcに入れることができます。私は私のコードで8つのスペースインデントを使用する必要があるので、これが必要です。 – Rakesh

+0

私はこれを疑っていましたが、置換の代わりに '%g/pattern />'を使ってこれを解決したいと思います。 PS:答えを受け入れることを忘れないでください。 –

+0

@RakRaksあなたは時折8スペースのインデントだけでなく、コード全体で8スペースのインデントを使用する必要があるということを意味しましたか?もしそうなら、あなたに役立つようにヴィムを得るもっと良い方法があります。 –

3

あなたがprintf('%*s', 8, '')を使用することができます。

フィールド幅または精度、またはその両方は、代わりに、数字列のasterisk '*'によって示すことができます。この場合、Number引数はフィールドの幅を指定します。

:%s/pattern/\=printf('%*spattern', 8, '')/gc 
1

あなたは、たとえば、numberbeforeのコマンドを入力して、いくつかのviコマンドを繰り返すことができます:8 Aさんを挿入する 8iA (そのスペースを持つことを交換してください)。