Pada baris perintah tekan <C-u>
lalu ketik @*
dan masukkan.
<C-u>
akan menghapus rentang visual '<,'>
yang telah dimasukkan secara otomatis jika beberapa teks dipilih secara visual.
:@*
akan mengeksekusi konten *
register yang berisi apa pun yang dipilih secara visual saat ini.
Bahkan jika teks yang dipilih / disorot ada di browser web Anda (firefox, chrome, ...), itu akan berfungsi, *
register akan memungkinkan Anda untuk mengaksesnya langsung di vim.
Jika teks Anda dipilih dalam buffer vim, solusi lain adalah dengan menyalinnya dalam register yang bernama, misalnya sebuah register dengan mengetik "ay
.
Kemudian, pada baris perintah, ketik: <C-r>a
dan masukkan.
Ctrl+ rakan memberi Anda semacam prompt yang diwakili oleh karakter "
(untuk informasi lebih lanjut baca :h c_Ctrl-r
).
Pada prompt baru ini, jika Anda memberi nama register, kontennya akan dimasukkan pada baris perintah, tempat Anda dapat mengeditnya sebelum dieksekusi.
Selain itu jika Anda menyalin beberapa teks tanpa menentukan register, itu akan dapat diakses dari register yang tidak disebutkan namanya " .
Jadi misalkan Anda punya baris vimscript dalam file dan ingin sumber itu dengan cepat, Anda dapat menyalinnya Y
, lalu sumberkan pada baris perintah dengan: :<C-r>"
dan masukkan.
Akhirnya, jika Anda menggunakan solusi terakhir ini, hanya ada masalah yang harus Anda waspadai.
Jika Anda melihat karakter aneh di baris perintah seperti ini ^M
, itu adalah tanda caret dari carriage return. Anda harus menghapusnya, jika tidak, Anda mungkin akan mendapatkan kesalahan.
Singkatnya, Anda:
- salin baris vimscript Anda dengan
Y
- beralih ke mode perintah dengan
:
- tekan
<C-r>
untuk masuk ke register register
- ketik
"
untuk memanggil register yang tidak disebutkan namanya
- tekan backspace untuk menghapus
^M
karakter
- dan tekan enter.
@*
sebelumnya, terima kasih!: <C-r>a
benar-benar berfungsi dengan baik juga :) Saya kira vim membaca^M
's sebagai baris kembali - dan dieksekusi masing-masing sebagai baris / perintah individu sendiri?Sebenarnya saya melakukannya sedikit berbeda, saya hanya mengedit di vimrc saya dan sumber ulang setiap kali saya menulisnya. (Saya memiliki satu set file vimrc yang bertingkat sehingga ini memungkinkan saya untuk mengubah salah satunya.)
sumber
Lebih langsung ke pertanyaan daripada jawaban saya yang lain, Anda dapat menentukan pemetaan seperti ini (
nnoremap
untuk tidak ada pilihan, cukup jalankan baris saat ini;vnoremap
untuk saat mode visual aktif):Dalam kedua kasus, "baris saat ini" adalah
:execute
d, jadi dalam versi visual Anda menggunakan:execute
satu demi satu baris melalui pemilihan visual.Seperti yang dinyatakan dalam jawaban lain,
<C-u>
menghapus rentang spesifikasi yang muncul di baris perintah saat :diketik. The|
karakter perlu melarikan diri karena jika tidak mereka ditafsirkan sebagai akhir darivnoremap
perintah.Ini juga bisa diubah menjadi fungsi untuk menghilangkan beberapa senam pelarian tetapi sepertinya bukan kemenangan besar bagi saya saat ini. Pada dasarnya vnoremap akan diperluas menjadi beberapa baris dan diedit
call
dengan kisaran atau tidak tergantung pada mode pemetaan [nv].sumber