anggap saya memiliki teks berikut:
aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"
Saya ingin melakukan seleksi seperti di bawah ini:
aaa-dd-e:
"aaa",
bb-x:
"bb",
c-9:
"c"
Saya mencoba menggunakan cv untuk membuat blok visual, tetapi setelah saya membuat seleksi pada kolom pertama dan saya menekan "f:" (saya bermaksud memperluas seleksi menjadi tanda titik dua pada setiap baris seperti di atas), yang saya dapatkan adalah:
aaa-
dd-e: "aaa",:
bb-x
"bb",
c-9:
"c"
seleksi berhenti di usus besar pertama dan membuat persegi panjang.
visual-mode
Aaron Shen
sumber
sumber
Jawaban:
Seleksi secara umum merupakan tujuan untuk mencapai tujuan, lebih-lebih dalam Vim di mana seleksi seringkali tidak diperlukan sejak awal.
Dengan asumsi Anda masih ingin menempatkan kutipan di sekitar nama properti di file non-JSON Anda untuk mengubahnya menjadi JSON yang tepat:
:'<,'>norm I"^[f:i"
('<,'>
secara otomatis dimasukkan untuk Anda dan^[
diperoleh dengan<C-v><Esc>
).Jika Anda memiliki plugin surround yang indah, langkah 2 menjadi:
Dengan substitusi, langkah 2 bisa menjadi:
sumber
:g/regex/norm
, saya dapat dengan mudah mencapai apa pun yang ingin saya lakukan."+y
atau"*y
, tergantung pada clipboard yang ingin Anda targetkan. Ada banyak pertanyaan terkait di sekitar sini.Vim hanya mendukung pilihan blok persegi panjang, dengan pengecualian batas kanan bergerigi ketika Anda menekan
$
.Ada beberapa plugin (seperti vim multiple cursors ) yang dapat meniru banyak pilihan, tetapi Anda juga harus dapat mencapai tujuan Anda yang sebenarnya (yang sayangnya tidak Anda sebutkan) dengan perintah Vim murni, misalnya
:global
dan:substitute
(jika Anda dapat memformulasikan sebuah reguler ekspresi yang cocok dengan seleksi di setiap baris), atau dengan mengulangi makro (jika ada gerakan tertentu yang mencakup seleksi di setiap baris).sumber
Hanya untuk melemparkan topi lain ke atas ring, jika Anda benar-benar ingin menggunakan pemilihan visual, Anda dapat menggunakan plugin Tabular untuk meluruskan titik dua, kemudian buat pilihan visual Anda.
Jika Anda mengambil teks asli Anda:
:Tab /:\zs
akan menyelaraskan semuanya setelah titik dua, seperti di bawah iniDan kemudian Anda dapat membuat pilihan blok visual Anda.
Seperti yang dikatakan orang lain, pemilihan visual mungkin tidak diperlukan dalam situasi ini. Menggunakan
norm
atau mengganti mungkin dapat mencapai apa yang Anda inginkan tanpa repot dengan pilihan visual.sumber
Saya telah menemukan solusi untuk masalah ini yang sangat sederhana! Mulai mode blok visual dari bagian bawah pemilihan teks yang ingin Anda salin dan pilih ke atas! Ini akan memperluas blok saat Anda naik, sedangkan jika Anda menyorot ke bawah tampaknya membuat pilihan lebih kecil.
sumber