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?

Jawaban:


44

Anda dapat melakukan

:100,200w filename

Tentu saja 100.200 adalah rentang baris yang ingin Anda tulis.


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.


8

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


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

1

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.