Sesuaikan ujung lain dari pilihan visual

14

Saya pikir ini akan memungkinkan untuk fitur pemilihan visual dari vim untuk melampaui efisiensi bahkan dari mouse dengan memberikan kemampuan untuk "beralih" terminal pilihan saat ini:

Illustrated (Ini |akan mewakili kursor (Vim memilikinya beroperasi di sisi kiri karakter itu aktif) dan [text]mewakili teks yang dipilih, hanya berpura-pura mereka mengambil lebar nol. Latar belakang ruang antara [ ]tampak abu-abu, dan karakter segera mengikuti |is green):

Dimulai dari

Some |text here
Some second line of text
Some more text in the third line 

Tekan v2j; perhatikan mkarakter yang termasuk dalam pilihan (itu disorot oleh kursor sekarang):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Tekan 10l:

Some [text here
Some second line of text
Some more text |i]n the third line 

Pada titik inilah saya mungkin memutuskan ingin mulai memilih dari lokasi yang berbeda. misalnya, termasuk "Some"pada baris pertama.

Saya tidak punya pilihan dalam editor / IDE khas. Saya mungkin harus memindahkan tangan saya ke mouse, biasanya terlalu menyakitkan untuk memilih teks menggunakan metode tradisional, penggunaan kata hopping via Ctrldan page-up / down memang membantu, tapi tidak peduli apa, saya harus berkomitmen ke salah satu titik terminasi pilihan saya sebelum saya memulai seleksi .

Jadi di Vim saya suka kemampuan untuk mengambil kondisi saya saat ini dan membawanya ke sini dengan memukul sebuah misteri yang mengikat:

Some [|text here
Some second line of text
Some more text i]n the third line 

Lalu saya bisa menekan ^atau <Home>(keduanya melakukan hal yang sama dalam hal ini di mana tidak ada spasi putih terkemuka) untuk mengubahnya menjadi

[|Some text here
Some second line of text
Some more text i]n the third line 

Katakanlah saya berubah pikiran lagi , saya ingin menyesuaikan ujung yang lain!

[Some text here
Some second line of text
Some more text |i]n the third line 

Hit e:

[Some text here
Some second line of text
Some more text i|n] the third line 

Cantik! Saya dapat melakukan apa pun yang saya inginkan selanjutnya dengan pilihan ini sekarang.

Jadi apa yang mengikat misteri ini?

Selain itu, bahkan yang lebih berpotensi efisien adalah seperangkat ikatan alternatif untuk beberapa perintah gerakan yang paling sering digunakan ke deretan tombol lain, dan ini akan (ketika dalam mode visual) selalu memindahkan ujung pilihan yang lain. Jadi dalam operasi pemilihan mode visual, jika tombol gerakan untuk ujung seleksi yang lain diatur ke "yuio" (mungkin bukan pilihan yang baik karena kita membutuhkan ytetapi hanya menanggung dengan saya) kita bisa mengetik

v2j10l5ye

daripada

v2j10lX^Xe

Hei, Anda tahu, itu tidak terlalu berarti. Berikan saja fitur X itu. :)

Jawaban sempurna yang saya cari:

  • Hei, lihat ke atas :help some_awesome_vim_feature_that_just_does_this
  • Hei, lihat https://github.com/awesome_user/vim_plugin_that_does_this
  • Hei, lihat :help vimscript_functions_that_allow_mutation_of_visual_selections

Saya cukup baru dengan daya tarik ini dengan Vim jadi saya sangat hijau ketika datang ke Vimscript, dan jujur ​​saya ingin menjauh dari mencoba belajar bahasa lain , jadi mudah-mudahan saya tidak akan dipaksa untuk membangun ini sebagai sebuah plugin.

Steven Lu
sumber
Baik. Sekarang saya tidak tahu apa yang sedang terjadi di sini (pertanyaan menjadi ninja-pindah secara misterius dari SO ke SU), tetapi saya awalnya memposting ini di SO dan saya benar-benar lebih suka untuk tetap di sana. Dengan segala hormat kepada non-programmer, hanya programmer pernah peduli ini banyak tentang mengedit teks. Tentu saja, semua pengguna vim dapat mengambil manfaat dari belajar bagaimana ini bekerja, saya hanya berpikir itu akan mendapatkan lebih banyak bola mata dan kesempatan yang lebih baik untuk mendapatkan jawaban di sana di mana plugin devs berada.
Steven Lu
Apakah Anda terkadang membaca :help? :help visual-modememiliki semua info yang mungkin Anda perlukan tentang mode visual, termasuk o.
romainl
Kadang-kadang saya membacanya, tetapi mungkin perlu waktu yang hampir bersamaan untuk menuliskan pikiran saya. Ini adalah tugas yang lebih pasti daripada menebak-nebak apa string bantuan itu.
Steven Lu
Belajar lebih baik daripada menebak. Jawaban Heptite mengajari Anda dua hal, dapatkah Anda menyebutkannya?
romainl
Ya, maksud saya ada banyak hal yang harus dipelajari tetapi saya sudah lupa apa yang dilakukan Omodal O, tapi saya akan ingat o. Hal kedua yang Anda maksud adalah mungkin semakin :helpbanyak menggunakannya . Dan saya telah menggunakannya lebih dari ketika saya mulai.
Steven Lu

Jawaban:

48

Saya tidak yakin saya benar-benar memahami apa yang Anda inginkan, tetapi mungkin ini:

:help v_o

Pada dasarnya, ketika teks disorot secara visual, Anda dapat menekan odan itu akan melompat ke "ujung" lain dari wilayah visual tanpa mengubahnya.

Heptite
sumber
2
Sial, ya !!! Itu bahkan lebih baik daripada yang saya harapkan, itu sudah terikat pada satu kunci , jadi di Xatas sebenarnyao
Steven Lu
1
Izinkan saya juga menunjukkan bahwa klik kanan mouse (jika Anda memiliki terminal Anda dikonfigurasi untuk melewatinya ke Vim) akan dengan cerdas membiarkannya menyesuaikan ujung terdekat dari pemilihan visual saat ini ke tempat kursor berada. Ini membuatnya menjadi metode yang jauh lebih sedikit menimbulkan rasa sakit untuk menyesuaikan area seleksi karena tidak membuang lokasi ujung seleksi yang berlawanan.
Steven Lu
@ Svenvenu: Ini tidak dibuang begitu saja. Anda dapat mengetuk olagi dan kembali.
Heptite
@StevenLu Ini mungkin seharusnya jawaban yang diterima, mengingat itu tidak hanya menyelesaikan masalah Anda, memiliki satu ton upvote, juga terjadi persis apa yang saya butuhkan pada hasil Google pertama, dan sebenarnya satu-satunya jawaban yang diajukan oleh siapa pun ...
Kingdon
Yap, saya pikir saya tidak pernah menerimanya karena itu diposting begitu cepat sehingga saya belum diizinkan untuk melakukannya pada saat itu, dan saya dengan senang hati menggunakan fitur Vim ini selama hampir lima tahun sejak itu, tidak pernah perlu mengingatkan diri saya apa Kuncinya adalah, karena sangat mudah diingat.
Steven Lu