Saat dalam Mode Sisipkan di Vim, apakah ada cara untuk menelusuri teks yang memindahkan beberapa karakter maju dan mundur selain menggunakan tombol panah?
Jika saya tekan h, j, kdan lsementara dalam mode Insert, karakter yang sebenarnya dicetak di layar bukannya bergerak melalui teks.
Cara saya melakukannya saat ini adalah harus menggunakan Ctrl+ [( Esc) dan melintasi teks itu; tapi jelas itu tidak produktif.
imap jk <Esc>
) sehingga Anda tidak perlu mematahkan momentum Anda dan menjangkau seluruh keyboard Anda untuk menekan tombol.<ESC>
) dipetakan kekj
bukanjk
; temanku Dijkstra yang harus disalahkan!jk
dankj
, jadi saya cukup menekannya seperti tombol besar dengan dua jari dan tidak masalah urutan saya kembali normal.Jawaban:
Anda tampaknya menyalahgunakan vim, tapi itu kemungkinan karena tidak terlalu terbiasa dengannya.
Cara yang benar adalah dengan menekan Esc, pergi ke tempat Anda ingin melakukan koreksi kecil, memperbaikinya, kembali dan terus mengedit. Ini efektif karena Vim memiliki lebih banyak pergerakan daripada karakter biasanya maju / mundur / naik / turun. Setelah Anda mempelajari lebih banyak tentang mereka, ini akan menjadi lebih produktif.
Berikut adalah beberapa kasus penggunaan:
Tapi, jika Anda masih ingin melakukan traversals teks kecil tanpa meninggalkan modus insert, ikuti rson 's saran dan penggunaan Ctrl+ O. Mengambil contoh pertama yang saya sebutkan di atas, Ctrl+ OFfakan memindahkan Anda ke karakter "f" sebelumnya dan meninggalkan Anda dalam mode sisipkan.
sumber
Ctrl+o
untuk mengeluarkan satu perintah dalam mode normal. Terkadang hal ini dapat membawa Anda ke tempat yang Anda inginkan, terutama ketika dikombinasikan dengan perintah pergerakan t / T dan f / F.:h ins-special-keys
.ctrl-h
: backspace,:ctrl-w
delete wordctrl-u
,: delete ke awal barisalt-b
,: kembali sebuah kata.Saat dalam mode insert , gunakan CtrlOuntuk masuk ke mode normal hanya dengan satu perintah:
yang mungkin merupakan cara paling sederhana untuk melakukan apa yang Anda inginkan dan mudah diingat.
Kunci kontrol lain yang sangat berguna dalam mode insert:
ini akan menghilangkan banyak switch boros kembali ke mode normal.
sumber
Masukkan mode
Gerakan
hjkl
Meskipun apa yang Pavel Shved mengatakan - bahwa itu mungkin lebih dianjurkan untuk membiasakan diri Escmeniru modus Insert - di sini adalah contoh set pemetaan untuk navigasi cepat dalam mode Insert:
Ini akan membuat Alt+ hdalam mode Sisipkan pergi satu karakter ke kiri, Alt+ jke bawah dan seterusnya, analog ke hjkldalam mode Normal.
Anda harus menyalin kode itu ke file vimrc Anda untuk memuatnya setiap kali Anda memulai vim (Anda dapat membukanya dengan mengetikkan
:new $myvimrc
mulai dalam mode Normal).Setiap gerakan mode Normal
Karena tombol Altpengubah tidak dipetakan (ke sesuatu yang penting) secara default, Anda dapat dengan cara yang sama menarik fungsionalitas lain (atau semua) dari mode Normal ke mode Insert. Misalnya:
Pindah ke awal kata saat ini dengan Alt+ b:
(Penggunaan lain Altdalam mode Sisipkan)
Perlu disebutkan bahwa mungkin ada kegunaan yang lebih baik untuk Altkunci daripada mereplikasi perilaku mode Normal: misalnya di sini adalah pemetaan untuk menyalin dari baris yang berdekatan bagian dari kolom saat ini sampai akhir baris:
(Saya menggunakan
\
kelanjutan garis dan lekukan untuk meningkatkan kejelasan - perintah ditafsirkan seolah-olah ditulis pada satu baris.)Tombol cepat bawaan untuk mengedit
(Tidak ada tombol pintas bawaan untuk pergerakan dalam mode Sisipkan.)
Referensi:
:help insert-index
Mode baris perintah
Kumpulan pemetaan ini membuat gerakanAlt + atas tersedia di baris perintah:hjkl
Atau, pemetaan ini menambahkan gerakan ke mode Sisipkan dan mode baris perintah dalam sekali jalan:
Perintah pemetaan untuk menarik perintah mode Normal ke mode Baris perintah terlihat sedikit berbeda dari perintah pemetaan mode Sisipkan (karena mode baris perintah tidak memiliki mode Sisipkan Ctrl+ O):
Tombol cepat bawaan untuk gerakan dan pengeditan
Referensi:
:help ex-edit-index
sumber
Alt
kuncinya?Jika Anda seorang vim purist, lewati membaca jawaban ini. OTOH, jika Anda baru mengenal vim dan sedang mencari beberapa tips bermanfaat yang tidak akan Anda temukan di ratusan tutorial dan blog vim, baca terus ... :-)
Beberapa cara yang tidak ortodoks (vim)
Ini tahun 2014, dan sebagai seseorang yang baru kembali ke sini
vim
saya dapat menawarkan beberapa sudut pandang dan tip yang berpotensi bertentangan.Gunakan shift + kiri atau shift + kanan untuk menelusuri kata
Sementara pengulangan adalah konsep yang kuat dalam vim, saya (secara pribadi) merasa aneh bahwa menggunakannya memaksa saya untuk menghitung (garis, karakter, kata-kata, dll.) Atau membuat tebakan. Otak saya biasanya bekerja seperti "Saya ingin kursor di sana " dan tidak seperti "Saya ingin kursor _5_words_to_the_left_". Dengan cepat dapat menggerakkan kursor, dan mengamati secara visual di mana titik penyisipan dengan cara ini memungkinkan saya untuk mengingat apa yang saya edit daripada harus menghitung berapa banyak hop yang harus saya buat untuk sampai ke tempat saya perlu mengedit.
Aktifkan mode mouse, dan gunakan roda mouse dan mengklik
... untuk menavigasi isi teks yang besar.
Sebagian besar (semua) komputer modern memiliki touchpad yang terintegrasi erat dengan keyboard (mis. MacBook). Desainer industri telah menghabiskan waktu bertahun-tahun untuk mengoptimalkan desain ini sehingga masalah lama karena harus memindahkan tangan dari keyboard tidak lagi menjadi masalah nyata. Oke, itu jika Anda terbiasa dengan mouse dan tidak suka berganti, tetapi bagi siapa pun yang baru vim (seperti yang mungkin menemukan posting ini melalui pencarian), ini seharusnya tidak menjadi masalah.
Sebagai bonus, klik + seret menempatkan Anda dalam mode visual
Dengan mouse diaktifkan, mengklik dan menarik memiliki efek beralih ke mode visual dan menandai wilayah untuk menarik.
Dan gunakan roda gulir
Menggunakan mouse (roda) untuk bergulir, dan mengklik untuk memposisikan kursor (duh) hanya berfungsi. Lihat http://usevim.com/2012/05/16/mouse/ untuk informasi lebih lanjut tentang ini.
Sehingga...
Inilah yang saya sebut cara navigasi yang lebih modern (menggunakan mouse, roda gulir, dll.), Sama efektifnya tergantung pada preferensi input Anda.
HTH
sumber
Banyak orang di komunitas Vim berpendapat bahwa Anda tidak boleh menavigasi dalam mode Sisipkan, bahwa itu bukan cara Vim. Saya pikir ini adalah sentimen yang salah dipelajari ketika beralih dari editor standar ke Vim.
Vim paling kuat ketika Anda menggunakan alatnya untuk membuat atomik, tindakan atau penemuan berulang.
Tidak apa-apa untuk menavigasi saat dalam mode Sisipkan jika Anda memperbaiki kesalahan yang Anda buat dalam sesi Sisipkan yang sama. Anda tidak boleh menavigasi di luar rentang teks yang Anda modifikasi.
Jika Anda membuat kesalahan saat memasukkan teks dan keluar dari mode Sisipkan untuk memperbaikinya Anda tidak akan dapat mengulangi tindakan yang dimaksud,
.
akan mengulangi koreksi.Vim memang mendukung banyak tombol navigasi mode Sisipkan. Jelas ada tombol panah, Beranda, dan Akhir, tetapi ada juga banyak cara pintas lainnya. Lihat
:h ins-special-keys
.sumber
Di GVim, Anda dapat menggunakan mouse. Tapi jujur, apa yang salah dengan menggunakan tombol panah? Ada alasan mengapa mereka menggunakan keyboard.
sumber
Untuk memiliki navigasi yang sedikit lebih baik dalam mode insert, mengapa tidak memetakan beberapa tombol?
Jika Anda dapat bekerja membuat kunci Meta berfungsi di terminal Anda, Anda dapat mengejek mode emacs lebih baik. Navigasi dalam mode normal adalah cara yang lebih baik, tetapi untuk gerakan yang lebih pendek itu membantu untuk tetap dalam mode insert.
Untuk lompatan yang lebih lama, saya lebih suka terjemahan default berikut:
Ini bergeser ke mode normal dan kembali kata
sumber
Saya percaya Homedan End(dan PageUp/ PageDn) juga bekerja secara normal saat dalam mode insert, tapi selain itu, saya tidak percaya ada kunci standar lain yang didefinisikan untuk traversal teks.
sumber
Maaf tapi vim tidak berfungsi seperti itu.
Anda harus beralih ke mode "normal", navigasikan dan kemudian kembali untuk memasukkan lagi.
sumber
Anda dapat membuat pemetaan yang berfungsi dalam mode sisipkan. Cara untuk melakukannya adalah melalui inoremap. Catat 'i' di awal perintah (noremap berguna untuk menghindari tabrakan peta utama). Akibat wajarnya adalah 'n' untuk mode 'normal'. Anda dapat menduga apa yang menurut vim 'normal';)
NAMUN, Anda benar-benar ingin menavigasi dalam teks menggunakan mode 'normal'. Vim sangat hebat dalam hal semacam ini dan semua kekuatan itu tersedia dari mode normal. Vim sudah menyediakan cara mudah untuk beralih dari mode normal ke mode insert (misalnya, i, I, a, A, o, O). Caranya adalah membuatnya mudah untuk masuk ke mode normal. Cara untuk melakukannya adalah dengan memetakan kembali kunci yang lebih nyaman. Tetapi Anda membutuhkan yang tidak akan bertentangan dengan pengetikan reguler Anda. Saya menggunakan:
Karena jj (itu 2 j diketik satu demi satu dengan cepat) sepertinya tidak muncul dalam kosakata saya. Yang lain akan memetakan kembali ke tempat yang nyaman.
Perubahan penting lainnya yang saya buat adalah untuk mengganti tombol CAPSLOCK dan CONTROL pada keyboard saya (menggunakan konfigurasi keyboard komputer host) karena saya hampir tidak pernah menggunakan CAPSLOCK dan memiliki tombol besar, indah tepat di tempat yang saya inginkan. (Ini umum untuk pengguna Emacs. Kelemahannya adalah ketika Anda menemukan diri Anda menggunakan keyboard 'tidak tetap'! Aaarggh!)
Setelah remap CAPSLOCK, Anda dapat dengan nyaman menggunakan remapping mode insert berikut:
Ingatlah bahwa beberapa tombol sudah dipetakan dalam mode insert (mundur-kill-word adalah Cw (Control-w) secara default, Anda mungkin sudah memiliki binding yang Anda inginkan. Karena itu, saya lebih suka Ch jadi di .vimrc saya punya :
NAMUN, Anda mungkin menginginkan kejang memori otot yang sama dalam mode normal, jadi saya juga memetakan Ch sebagai:
(d) elete (b) ackwards menyelesaikan hal yang sama dengan kunci tombol yang sama. Jenis edit cepat ini adalah yang saya temukan berguna dalam praktek untuk kesalahan ketik. Tetapi tetap pada mode normal untuk bergerak dalam teks dan tidak lebih dari membunuh kata sebelumnya. Setelah Anda terbiasa mengubah mode (menggunakan remap tentu saja), itu akan jauh lebih efisien daripada memetakan kembali mode insert.
sumber
Anda dapat menggunakan
imap
untuk memetakan tombol apa saja dalam mode penyisipan ke salah satu tombol kursor. Seperti itu:Sekarang h berfungsi seperti dalam mode normal, menggerakkan kursor. (Memetakan h dengan cara ini jelas merupakan pilihan yang buruk)
Setelah mengatakan bahwa saya tidak berpikir cara standar untuk bergerak dalam teks menggunakan VIM adalah "tidak produktif". Ada banyak cara yang sangat ampuh untuk melintasi teks dalam mode normal (seperti menggunakan w dan b, atau / dan?, Atau f dan F, dll.)
sumber
Untuk beberapa gerakan dan tindakan yang sering digunakan, saya telah menetapkan pemetaan berikut. Ini menghemat penekanan tombol dibandingkan dengan kombinasi CTRL + O dan karena saya sering membutuhkannya, mereka terbayar dalam jangka panjang.
sumber