Vim でテキストを編集してる時、他のファイルの内容を読み込みたい時があります。
 

現在の行の1行下に、対象ファイルの内容を単に全部読み込むだけだったら、コマンドモードで次のように打ち込めばOK。
 

 
:r file
 

 
 
現在のファイルの指定した行の下に読み込むには r(read) の前に行を指定します。
例えば10行目の下(つまり11行目に)指定したファイルの内容を読み込むには、
 

 
:10r file
 

 
 
指定したファイルの全体ではなく、一部分だけ読み込みたい場合には、r の後に ! を書いてコマンドを続けます。
sed でもいいと思うのですが、僕は Awk が好きなので次のように書きます。
 

 
:r !awk 'NR <= 4 {print}' file
 

 
上記のように書いて Enter すると、現在の行の下に file の先頭から4行目までが読み込まれます。
 
Awk の中身ですが、NR が指定したファイル中の行番号になるので「行番号が4以下だったら、print(出力)しなさい」というコマンドになり、Vim の exコマンド r(read) が Awk の出力を現在のファイルに読み込む、という流れになります。
 
 

§1039 · Posted By · 12月 7, 2012 · Development · Tags: , , , · [Print]