Vim: cara lebih cepat untuk memilih blok teks dalam mode visual

190

Saya telah menggunakan vim selama beberapa waktu dan saya sadar bahwa memilih blok teks dalam mode visual adalah semudah SHIFT+ Vdan menggerakkan tombol panah ke atas atau ke bawah baris demi baris sampai saya mencapai ujung blok teks yang saya ingin dipilih.

Pertanyaan saya adalah - apakah ada cara yang lebih cepat dalam mode visual untuk memilih blok teks misalnya dengan SHIFT+ Vdiikuti dengan menentukan nomor baris di mana saya ingin seleksi dihentikan? (via :35misalnya, di mana 35 adalah nomor baris yang ingin saya pilih - ini jelas tidak berfungsi jadi pertanyaan saya adalah menemukan bagaimana jika sesuatu yang mirip dengan ini dapat dilakukan ...)

Calvin Cheng
sumber
3
+1 Pertanyaan bagus karena saya sering melakukan hal seperti ini. Saya bertanya-tanya apakah mungkin ini bukan tempat mulai menggunakan menggunakan v%atau v/patternatau sesuatu yang lain?
user786653
9
vip pilih paragraf dalam vis pilih kalimat dalam.
SergioAraujo
27
V35Gakan memilih secara visual dari baris saat ini ke baris 35, juga V10jatau V10kakan secara visual memilih 10 baris berikutnya atau sebelumnya
Stephan
1
@Stephan, itulah yang saya cari. Terima kasih!!
pekik
untuk lini memilih saya menggunakan shortcut: nnoremap <Space> V. Ketika dalam mode garis visual klik kanan dengan mouse untuk menentukan pilihan (setidaknya di linux begitu). Lagi pula, lebih efektif daripada dengan keyboard saja.
Mikhail V

Jawaban:

212

Selain apa yang dikatakan orang lain, Anda juga dapat memperluas pilihan menggunakan pencarian pola.

Misalnya, v/fooakan memilih dari posisi Anda saat ini ke instance "foo." Jika Anda benar-benar ingin memperluas ke instance "foo" berikutnya , pada baris 35, misalnya, cukup tekan nuntuk memperluas pilihan ke instance berikutnya, dan seterusnya.

memperbarui

Saya tidak sering melakukannya, tetapi saya tahu bahwa beberapa orang menggunakan tanda secara luas untuk membuat pilihan visual. Misalnya, jika saya di jalur 5 dan saya ingin memilih ke jalur 35, saya mungkin menekan mauntuk menempatkan tanda adi jalur 5, kemudian :35untuk pindah ke jalur 35. Shift+ vuntuk masuk ke mode visual yang linier, dan akhirnya `auntuk memilih kembali untuk menandai a.

Jay
sumber
21
Jika Anda perlu memasukkan pola yang dapat Anda gunakan v/foo/e. The esingkatan dari "akhir" dari pola cocok.
Peter Rincker
6
Dan Anda dapat memodifikasi dari baris itu dengan offset: V / foo / + 5 atau V / foo / -5 (Saya menggunakan mode visual linewise seperti penulis).
bheeshmar
Apa yang akan Anda lakukan jika Anda ingin memilih rentang teks yang cocok dengan pencarian Anda; yaitu: menemukan dan memilih (seluruh kata) istilah pencarian Anda?
Daniel Park
5
@ DarelPark Untuk memilih kata saat ini, gunakan v i w. Jika Anda ingin memilih non-spasi yang berdekatan saat ini, gunakan v i Shift+ w. Perbedaannya adalah ketika tanda sisipan ada di sini MyCla|ss.Method, kombo pertama akan memilih MyClassdan yang kedua akan memilih semuanya.
Jay
1
Terima kasih. Ditemukan bahwa menggunakan juga v i w smemungkinkan Anda untuk melakukan operasi "penggantian" secara efektif.
Daniel Park
113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G mencapai apa yang Anda inginkan

bheeshmar
sumber
89

Vim adalah bahasa. Untuk benar-benar mengerti Vim, Anda harus tahu bahasanya. Banyak perintah adalah kata kerja, dan vim juga memiliki objek dan preposisi.

V100G
V100gg

Ini berarti "pilih garis saat ini hingga dan termasuk garis 100."

Objek teks adalah tempat di mana banyak daya berada. Mereka memperkenalkan lebih banyak objek dengan preposisi.

Vap

Ini berarti "pilih di sekitar paragraf saat ini", yaitu pilih paragraf saat ini dan baris kosong yang mengikutinya.

V2ap

Ini berarti "pilih di sekitar paragraf saat ini dan paragraf berikutnya."

}V-2ap

Ini berarti "pergi ke akhir paragraf saat ini dan kemudian pilih secara visual dan paragraf sebelumnya."

Memahami Vim sebagai bahasa akan membantu Anda mendapatkan jarak tempuh terbaik dari itu.

Setelah memilih ke bawah, maka Anda dapat menggabungkan dengan perintah lain:

Vapd

Dengan perintah di atas, Anda dapat memilih di sekitar paragraf dan menghapusnya. Ubah dke menjadi yuntuk menyalin atau ke cuntuk mengubah atau ke puntuk menyisipkan.

Setelah Anda memahami bagaimana semua perintah ini bekerja bersama, maka pada akhirnya Anda tidak perlu memilih apa pun secara visual. Alih-alih memilih secara visual dan kemudian menghapus paragraf, Anda bisa menghapus paragraf dengan dapperintah.

kzh
sumber
} V-2ap Penggunaan -2 sangat cerdas.
Ambareesh
40

v35G akan memilih semuanya mulai dari kursor hingga baris 35.

vmenempatkan Anda dalam mode pilih, 35menentukan nomor baris yang ingin Anda Gtuju.

Anda juga dapat menggunakan v}yang akan memilih semuanya hingga awal paragraf berikutnya.

michaelmichael
sumber
16

Untuk memilih jumlah garis:

shift + v 9j - pilih 10 baris

mateusz.fiolka
sumber
2
Untuk rentang kecil ini bagus, terutama ketika dipasangkan dengan:set rnu
Peter Rincker
9

Shift+V n j atau Shift+V n k

Ini memilih baris saat ini dan baris berikutnya / sebelumnya n. Saya merasa sangat berguna.

Peng Zhang
sumber
Ini adalah cara sederhana yang saya cari. Terima kasih
Arsal
6

v 35 j

teks ditambahkan untuk minimum 30 karakter

μBio
sumber
6

v%

akan memilih seluruh blok.

Main dengan juga:

v}, vp, vs, Dll

Lihat bantuan:

:help text-objects

yang mencantumkan berbagai cara untuk memilih huruf, kata, kalimat, paragraf, blok, dan sebagainya.

bjfletcher
sumber
4

Anda dapat menekan vi}untuk memilih blok yang dikelilingi {}tanda kurung di mana kursor Anda saat ini berada.

Tidak masalah di mana Anda berada di dalam blok itu (pastikan Anda berada di blok terluar). Anda juga dapat mengubah {apa pun yang memiliki pasangan seperti )atau ].

iggy
sumber
3

Anda selalu bisa menggunakan angka anteseden untuk mengulangi tindakan:

  • Dalam mode visual, ketik 35dan kursor akan bergerak ke bawah 35 kali, memilih 35 baris berikutnya
  • Dalam mode normal:
    • hapus 35 baris 35dd
    • tempel 35 kali 35p
    • batalkan 35 perubahan 35u
    • dll.
jackson
sumber
3

cukup tekan saja Shift v line number gg

contoh: baris Anda saat ini ke baris 41 Cukup tekan Shift v 41 gg

ReyApr
sumber
1

} berarti memindahkan kursor ke paragraf berikutnya. jadi, gunakan v}untuk memilih seluruh paragraf.

mabeiyi
sumber
0

Untuk memilih semua dalam visual: Ketik Esc untuk memastikan Anda berada dalam mode normal

:0 

ketik ENTER untuk pergi ke awal file

vG
Sergio Abreu
sumber
Anda dapat menggunakan ggdalam mode normal untuk menuju ke baris pertama juga.
huangzonghao
0

Mungkin berguna untuk mengetahui:

Untuk memilih jumlah baris yang sama misalnya, gunakan 1v Anda harus melakukan beberapa modifikasi untuk dapat digunakan 1v, secara blok atau lancip.

Hari ini saya melihat tip yang luar biasa ini dari sini :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

Anda juga dapat mengatur ulang batas blok visual dengan melakukannya:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point
SergioAraujo
sumber
0

Saya menggunakan ini dengan flip dalam mode indent:

v buka mode Visual di mana saja di blok

zaza toogle itu dua kali

yoann guillard
sumber