Dengan vim, bagaimana saya bisa memindahkan sepotong teks ke file baru? Untuk saat ini, saya melakukan ini:
- pilih teks
- menggunakan
:w new_file
- pilih teks lagi
- hapus teksnya
Apakah ada cara yang lebih efisien untuk melakukan ini?
Sebelum
a.txt
sometext
some other text
some other other text
end
Setelah
a.txt
sometext
end
b.txt
some other text
some other other text
Dengan "memindahkan sepotong teks ke file baru" Saya berasumsi maksud Anda memotong potongan teks dari file saat ini dan membuat file baru yang hanya berisi teks itu.
Berbagai contoh:
:1,1 w new_file
untuk membuat file baru yang hanya berisi teks dari nomor baris 1:5,50 w newfile
untuk membuat file baru yang berisi teks dari baris 5 ke baris 50:'a,'b w newfile
untuk membuat file baru yang berisi teks dari tandaa
ke tandab
Di atas hanya menyalin teks dan membuat file baru yang berisi teks itu. Anda kemudian perlu menghapus sesudahnya.
Ini dapat dilakukan dengan menggunakan rentang dan
d
perintah yang sama::5,50 d
untuk menghapus teks dari baris 5 ke baris 50:'a,'b d
untuk menghapus teks dari tandaa
ke tandab
Atau dengan menggunakan dduntuk kasing tunggal.
Jika Anda memilih teks menggunakan mode visual, dan kemudian menekan
:
saat teks dipilih, Anda akan melihat yang berikut pada baris perintah::'<,'>
Yang menunjukkan teks yang dipilih. Anda kemudian dapat memperluas perintah ke:
:'<,'>w >> old_file
Yang akan menambahkan teks ke file yang ada. Kemudian hapus seperti di atas.
Satu liner:
:2,3 d | new +put! "
Rinciannya:
:2,3 d
- hapus baris 2 hingga 3|
- secara teknis ini mengalihkan output dari perintah pertama ke perintah kedua tetapi karena perintah pertama tidak menghasilkan apa-apa, kami hanya menggabungkan perintah bersamanew
- membuka buffer baru+put! "
- memasukkan isi register yang tidak disebutkan namanya ("
) ke dalam buffer!
) ada di sana sehingga isinya diletakkan sebelum baris saat ini. Ini menyebabkan dan mengosongkan baris di akhir file. Tanpanya, ada baris kosong di bagian atas file.sumber
'<,'>d | new | 0put "
untuk kejelasan.Berdasarkan jawaban @ embedded.kyle dan Tanya Jawab ini , saya berakhir dengan liner satu ini untuk menambahkan pilihan ke file dan menghapus dari file saat ini. Setelah memilih beberapa baris
Shift+V
, tekan:
dan jalankan:Bagian pertama menambahkan baris yang dipilih. Perintah kedua memasuki mode normal dan berjalan
gvd
untuk memilih pilihan terakhir dan kemudian menghapus.sumber
Pilih teks dalam mode visual, lalu tekan yuntuk "menarik" ke dalam buffer (salin) atau duntuk "menghapus" ke dalam buffer (memotong).
Kemudian Anda dapat
:split <new file name>
membagi jendela vim Anda ke atas, dan tekan puntuk menempelkan teks yang ditarik. Tulis file seperti biasa.Untuk menutup pemisahan lagi, berikan pemisahan yang ingin Anda tutup
:q
.sumber
:x
, Anda dapat menggabungkan tulisan dan menutup menjadi satu dan membuatnya menjadi lima langkah. : P