2011-01-13 5 views
5

Vimでvimで複数の行の先頭に単語を追加するには?

すべての行の先頭に単語を追加するにはどうすればよいですか? また、最後に追加するにはどうすればよいですか?

例:.. 私は

A 
B 
C 
D 

を持っている場合、私は

int A = 
int B = 

などにそれを作りたい。..

答えて

11

使用のビジュアルブロックモードで行くことができる(VCtrlキー)コラム希望し、この場合にはそう

Escキーしたい文字を入力し、Iをヒットし、その後ヒット、あなたはA上にカーソルを置くと思います、Ctrlキーヒット - Dに下る、Vを、Iintを入力します(あなたがそれをタイプしながら、それが唯一の最初の行に表示されます)をヒットし、その後'LLそれをその時点でEscキーを打ちます視覚的に選択されたすべての部分にその挿入を適用します。

これは、文書のどこからでも、行の先頭または行末に適用されます。あなたがこれを行うことができますビジュアルブロック挿入

+1

これは、 'virtualedit'が空でない場合にのみ、空行で動作します。 – Benoit

+0

+1これは最も一般的な解決方法です。 'v_b_I'ではなく':help v_b_A'を追加するために –

+0

'visual block'は' visual mode'とは異なる点に興味があります –

2

グローバル代替が私のことを行う必要があります

:%s/.\+/int & =/ 

これはそれは動作します:置換の2番目の部分(すなわち、int & =)で、アンパサンドは最初の部分(.*)で機械化されたものに置き換えられます。 .*が行全体と一致するので、各行は必要に応じて置換されます。選択する -

あなたは(あなたが任意の置換を持ちたいしないで)空行を持っている場合は、あなたが

:%s/^\S\+$/int & =/ 
+0

はそれが$ 0にはないでしょうか? –

+0

$ 0?これはPerlやC++(TR1) – Benoit

+0

のための$ 0はおそらく別の正規表現ベースの言語です。 –

7

詳細は

:he v_b_I:あなたがコピーする必要がある場合

:%s/^/at the beginning/ 
:%s/$/at the end/ 
4

:%s/.\+/int & =

+は、空行に

2

とは一致しません最初の単語だけを入力してください。

:%s/^\w\+/int & =/g 

あなたはインデントを保持したい場合は、その後でください:

:%s/^\(\s*\)\(\w\+\)/\1int \2 =/g 
関連する問題