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


回答:


44

できるよ

:100,200w filename

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


アドレスは包括的または排他的ですか?
マーチン

3
包括的。パターンを使用する場合も含めます::/ ^ something /、/ ^ else / w filename、またはmark: 'a、' bw filenameには、 'a'および 'b'とマークされた行が含まれます。
ブルースエディガー

こんにちは、@ Bernhard、現在のファイルから行を切りたい場合はどうすればいいですか。
ラビセヴタ

19

最も一般的な:

  1. 書き込みたいグループの最初の行にカーソルを移動します。ヒットmaシーケンシャル。それは「 'a'という名前のマークを設定」です。

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

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

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

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

  1. 書き出す行のグループの最初の行にカーソルを置きます。ヒットV「の行を視覚的にブロックを開始する」ために、。

  2. カーソルを行グループの一番下に移動します。Vimは各行を反転表示で強調表示します。

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

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

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


8

Bernhardの答えに追加するために、ビジュアルモードを使用して地域を選択し、を入力することもできます:w filename


8

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

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

1

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


それは元のファイルを上書きしませんか?OPは別のファイルに書き出したいと考えています。
SabreWolfy

1
@SabreWolfyいいえ。行番号の後に「ファイル名」を忘れた可能性があります。私は彼のバージョンをテストしましたが、うまくいきました。
12:40の
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.