Dalam vim, ketika saya gunakan
:r !ls somefilename
itu menyisipkan output dari perintah itu pada baris baru di bawah baris saat ini.
Jika aku melakukan
let @a = system("ls")
dan kemudian
"ap
masih menyisipkan output pada baris baru di bawah baris saat ini.
Apakah ada cara untuk membuat keluaran memasukkan vim di lokasi saat ini?
command-line
vim
deshmukh
sumber
sumber
Jawaban:
Anda dapat menempelkan konten buffer clipboard antara karakter dengan Ctrl-R * dalam mode insert (dan pendekatan serupa untuk buffer lainnya). Jadi jika Anda bisa mendapatkan perintah sistem ke buffer, Anda harus mengaturnya. (Sumber: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).
:let @a=system("ls -l")
akan memasukkan outputls -l
ke registera
. Anda kemudian dapat menempelkannya (dalam mode sisipan) dengan^R-a
.sumber
*
) jadi jika Anda menyalurkan output perintah Anda ke clipboard Anda, itu akan ada di dalam"*
untuk Anda gunakan.akan membaca output dari perintah dan memasukkannya ke dalam baris di bawah baris saat ini. Ini adalah bagaimana vi diprogram Anda tidak dapat mengubah perilaku.
Tetapi katakan jika Anda berada di nomor baris 3. Jika Anda mencoba
:r !date
. Ini akan memasukkan nilai tanggal ke dalam nomor baris 4.Jika Anda ingin nilai tanggal ditampilkan pada nomor baris 3, maka Anda
:2r !date
akan mencoba memasukkan nilai tanggal pada nomor baris 3.sumber
Berikut adalah cara alternatif untuk menempelkan output dari perintah eksternal sebelum kursor:
atau gunakan register ekspresi (
:help @=
):lalu tekan P. Atau cara yang lebih singkat dengan:
sumber
:exe
) yang dapat dimasukkan dalam perintah.