Saya perlu (visual) memilih rentang garis dari baris perintah.
Sebagai contoh, perintah berikut :?^\s*for?+,/^\s*end/- p
mencetak semua baris yang berisi antara a for
dan end
(cara eksklusif). Alih-alih melakukan operasi pencetakan, saya ingin beralih ke mode visual dengan garis-garis yang disorot. Saya mencari di manual tetapi saya tidak dapat menemukan ex-command seperti itu.
command-line
visual-mode
nicmus
sumber
sumber
Jawaban:
Batas-batas pemilihan mode visual ditentukan oleh tanda
<
dan>
.Dengan demikian, perintah berikut akan memasuki mode visual dengan garis 5 hingga 10 (inklusif) dipilih:
:5mark <
mengatur awal seleksi ke baris 5,:10mark >
setel akhir seleksi ke baris 10,gv
memasuki mode visual dengan area yang ditentukan di atas dipilih,V
membuat seleksi secara berurutan.Anda dapat melewatkan rentang Vim apa pun ke dalam
:mark
perintah: berikut ini akan memasuki mode visual menggunakan ekspresi regulerfoo
danbar
untuk menentukan batas-batas area pemilihan:Perintah berikut adalah versi yang lebih sederhana di atas, tetapi tergantung pada posisi kursor:
Untuk penjelasan lebih lanjut, lihat:
:help mark-motions
:help :mark
:help ranges
:help gv
:help v_V
:help :execute
:help search()
help expr-.
sumber
?^\s*for?+ mark < | /^\s*end/- mark > | norm gv
+
dan-
di @ nicmus sedang menyesuaikan rentang untuk membuat pilihan tidak termasuk garis yang cocok dengan ekspresi reguler. (Lihat:help range
).
concatenation operator benar-benar melemparkan saya off jadi di sini adalah contoh jika seseorang merasakan hal yang sama::execute "l" . "s"
akan menghasilkan output yang sama seperti:ls
.