vi / vim, bagaimana saya bisa menulis sejumlah baris ke file baru

30

Saya memiliki banyak baris yang ingin saya tulis ke file yang berbeda.
Bagaimana saya bisa melakukan itu?

Michael Durrant
sumber

Jawaban:

44

Anda dapat melakukan

:100,200w filename

Tentu saja 100.200 adalah rentang baris yang ingin Anda tulis.

Bernhard
sumber
Apakah alamatnya inklusif atau eksklusif?
Marcin
3
Inklusif. Juga termasuk jika Anda menggunakan pola:: / ^ sesuatu /, / ^ else / w nama file, atau tandai: 'a,' bw nama file termasuk baris bertanda 'a' dan 'b'.
Bruce Ediger
Hai @ Bernhard, bagaimana jika saya ingin memotong garis dari file saat ini.
Ravi Sevta
19

Yang paling umum:

  1. Pindahkan kursor ke baris pertama grup yang ingin Anda tulis. Hit m dan asecara berurutan. Itu "menetapkan tanda bernama 'a'".

  2. Pindahkan kursor ke baris terakhir grup, tekan 'm' dan 'b'. '

  3. Ubah ke mode perintah tekan: sebagai urutan lakukan :'a,'b w filenamelalu tekan kembali.

Itu akan bekerja di vi, nvi dan vim.

Metode lain, bekerja dalam vim yang lebih modern:

  1. Letakkan kursor pada baris pertama dari grup baris yang ingin Anda tulis. Tekan V, untuk "mulai blok visual garis".

  2. Pindahkan kursor ke bagian bawah grup garis. Vim akan menyorot dengan membalikkan video setiap baris.

  3. Menulis. Tekan :untuk masuk ke mode baris perintah. Itu akan memberi Anda prompt di bagian bawah scren yang terlihat seperti: :'<,'> Itu berarti dari awal blok visual sampai akhir. Ketik wdan nama file dan tekan kembali.

Anda dapat menambahkan baris tunggal ke akhir file seperti yang Anda butuhkan dengan meletakkan kursor pada baris yang ingin Anda tulis lalu mengetik: :.w >> filenamedan menekan kembali.

Perintah "write a group of lines" juga bekerja dengan ">> nama file" bukan hanya "nama file". ">>" menyebabkan vi atau vim untuk menambahkan file, bukan hanya menulisnya.

Bruce Ediger
sumber
8

Untuk menambah jawaban Bernhard, Anda juga dapat memilih wilayah menggunakan mode visual dan kemudian masuk :w filename.

noffle
sumber
8

Jika Anda tahu nomor baris yang ingin Anda tulis, Anda bisa melakukannya dari baris perintah:

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

satu trik kecil adalah menggunakan nomor baris relatif. Sebagai contoh:: + 0, + 99w nama file menulis 100 baris berikutnya menjadi nama file.

Guokai Ma
sumber
Bukankah itu akan menimpa file asli? OP ingin menulis ke file yang berbeda.
SabreWolfy
1
@ SabreWolfy No; mungkin Anda melewatkan 'nama file' setelah nomor baris. Saya baru saja menguji versinya dan itu berhasil.
felwithe