web-dev-qa-db-ja.com

vi / vim、複数の行を新しいファイルに書き出すにはどうすればよいですか

別のファイルに書き出す行がたくさんあります。
どうやってやるの?

32
Michael Durrant

できるよ

:100,200w filename

もちろん100,200は書きたい行の範囲です。

47
Bernhard

最も一般的な:

  1. 書き込みたいグループの最初の行にカーソルを移動します。 mおよびaシーケンシャルを押します。それが「a」というセットマークです。

  2. カーソルをグループの最後の行に移動し、「m」と「b」を押します。

  3. コマンドモードヒットに切り替えます。シーケンスとして:'a,'b w filenameを実行してから、リターンを押します。

これはvi、nvi、vimで機能します。

別の方法は、より現代的なvimで機能します。

  1. 書き出す行のグループの最初の行にカーソルを置きます。 「行のビジュアルブロックを開始」するには、Vを押します。

  2. カーソルを行グループの一番下に移動します。 Vimは各行を反転表示してハイライトします。

  3. 書き出す。 :を押して、コマンドラインモードに入ります。これにより、画面下部に次のようなプロンプトが表示されます。:'<,'>これは、ビジュアルブロックの開始から終了までを意味します。 wとファイル名を入力してReturnキーを押します。

書き出す行にカーソルを置いて:.w >> filenameと入力し、Enterキーを押すことで、必要に応じて単一行をファイルの最後に追加できます。

「行のグループを書き込む」コマンドは、「filename」だけでなく「>> filename」でも機能します。 ">>"を指定すると、viまたはvimはファイルに書き込むだけでなく、ファイルに追加します。

21
Bruce Ediger

記述したい行番号がわかっている場合は、コマンドラインから実行できます。

vim -c "100,200w new_file.txt" -c wq original_file.txt
8
Akavall

ベルンハルトの回答に追加するには、ビジュアルモードを使用して地域を選択し、:w filenameを入力することもできます。

8
noffle

小さなトリックの1つは、相対行番号を使用することです。例::+ 0、+ 99w filenameは、次の100行をfilenameに書き込みます。

1
Guokai Ma