memilih rentang garis dari baris perintah


8

Saya perlu (visual) memilih rentang garis dari baris perintah.

Sebagai contoh, perintah berikut :?^\s*for?+,/^\s*end/- pmencetak semua baris yang berisi antara a fordan 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.


Apakah maksud Anda "eksklusif"?
Kaya

kamu benar! Saya mengedit pertanyaan
nicmus

Jawaban:


7

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 < | 10mark > | normal gvV
  • :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 :markperintah: berikut ini akan memasuki mode visual menggunakan ekspresi reguler foodan baruntuk menentukan batas-batas area pemilihan:

:execute search("foo") . "mark <" | execute search("bar") . "mark >" | normal gvV

Perintah berikut adalah versi yang lebih sederhana di atas, tetapi tergantung pada posisi kursor:

/foo/mark < | /bar/mark > | normal gvV

Untuk penjelasan lebih lanjut, lihat:


Terima kasih! Saya diselesaikan dengan:?^\s*for?+ mark < | /^\s*end/- mark > | norm gv
nicmus

@nicmus Ah ya, itu lebih sederhana untuk penggunaan khusus Anda. Saya telah memperbarui jawaban saya.
Kaya

Hanya demi pembaca masa depan yang mungkin bertanya-tanya, komentar +dan -di @ nicmus sedang menyesuaikan rentang untuk membuat pilihan tidak termasuk garis yang cocok dengan ekspresi reguler. (Lihat :help range)
Kaya

The .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.
Toraritte
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.