Dengan asumsi saya memiliki baris dalam file dengan XXXX
menjadi pengganti yang saya pilih melalui v
sebagai berikut:
XXXX Some other text
Bagaimana saya bisa mengubah hanya satu XXXX
dengan output dari perintah eksternal, seperti date +%Y%m%d
?
Saya mendapat sejauh
:'<,'>!date +\%Y\%m\%d
tapi itu menggantikan seluruh lini.
external-command
replace
muk.li
sumber
sumber
Jawaban:
Anda dapat menghapus teks dan memasukkan output dari perintah menggunakan CtrlR- =:
Untuk ekspresi, Anda dapat menggunakan
system()
fungsi untuk menjalankan perintah eksternal.Setelah memilih teks, tekan
c
, lalu<c-r>=
dan gunakansystem('date +%Y%m%d')
sebagai ekspresi.sumber
date
. Jika Anda mencoba sesuatu sepertisystem('printf %s foo')
, yang tidak menghasilkan baris baru, Anda akan melihat ada perbedaan.strftime
fungsi yang bisa Anda gunakan alih-alihsystem('date …')
. String formatnya sama."=system('date +%Y%m%d')p
pilihan visual sebagai gantinya.Jika Anda meletakkan kursor pada garis seperti itu, Anda dapat:
0
untuk meletakkan kursor di kolom pertama.f
Space untuk meletakkan kursor di tempat kosong pertama.i
Enter Esc untuk membagi garis.l
untuk memindahkan kursor satu baris ke atas.:.!date +\%Y\%m\%d
untuk mengeksekusi perintah.J
untuk bergabung dengan garis lagi.Dari
:h :visual_example
:Lihat juga
:h visual-operators
untuk detailnya.Dari komentar ini : Anda juga dapat mencoba plugin vis atau NrrwRgn . Keduanya harus menanganinya dengan baik. (Terima kasih @ christian-brabandt untuk tipnya).
sumber
Buat pemetaan sementara untuk penggantian seperti itu. Sebagai contoh:
Kemudian dalam mode visual Anda dapat memilih teks, ketik
qq
dan itu akan diganti oleh output perintah. Dalam contoh iniwc -c
akan memproses pilihan Anda, yang merupakan@"
parameter.perl -pe chomp
diperlukan untuk menghapus baris baru dari output.sumber
Coba ini:
date
perintah ke register a, dengan baris akhir yang dihapus.XXXX
(g/XXXX/
), danXXXX
dengan konten register a (s/XXXX/\=@a/g
)Lihat
:h let-@
dan:h :global
juga bagian "Sublist" di:h list-index
sumber
Plugin: Perintah Blok Visual (vis) oleh DrChip
Instalasi
vis.vba.gz
dan ketergantungancecutil.vba.gz
ke paket vim8Contoh OP menjadi
sumber