Alasan utama saya suka vim daripada emacs adalah bahwa jarak gerakan tangan saya jauh dari baris rumah sangat rendah (bahkan sebagai programmer). Namun, satu-satunya waktu utama saya melakukan ini adalah meninggalkan mode insert, dengan menekan Escape.
Saya baru-baru ini belajar bahwa saya dapat menggunakan Ctrl + C untuk meninggalkan mode penyisipan juga. Namun, ini bukan perbaikan.
Bagaimana saya bisa keluar dari mode penyisipan tanpa harus meninggalkan barisan rumah, dan tanpa memengaruhi kemampuan saya untuk mengetik secara masif? Catatan: Saya menggunakan sebagian besar vanilla vim dengan tata letak keyboard dvorak, meskipun saya ingin mendengar solusi untuk tata letak qwerty juga.
key-bindings
insert-mode
keyboard-layout
escape
durron597
sumber
sumber
Jawaban:
Ikatan umum yang akan Anda lihat adalah jj , karena itu berfungsi dengan baik untuk tata letak QWERTY jika Anda menggunakan pemosisian baris rumah.
Dalam hal itu, untuk mengetik literal
jj
- Anda harus menunggu 1 detik (secara default) antara mengetik karakter kedua. (lihat:help 'timeout'
detailnya)Ada juga
c-o
yang akan membawa Anda keluar dari memasukkan, membiarkan Anda melakukan satu perintah normal, dan kemudian menempatkan Anda kembali ke masukkan.http://vim.wikia.com/wiki/Avoid_the_escape_key
sumber
j
adalahc
kuncinya. Jadi ini tidak terlalu buruk (untuk mengetikcc
). Saya juga bisa mengikathh
(qwertyj
key = dvorakh
), yang hanya akan mem-boot saya jika saya sedang mengetikshhhhhhh
atau sesuatu.jk
? Temukan dua tombol yang berdekatan di Dvorak tetapi bukan kombinasi umum dalam bahasa pilihan Anda.tn
, misalnya, adalah posisi yang setara denganjk
.jk
/kj
keluar dari mode normal bahkan di Dvorak; mereka adalah tombol "c" dan "v" pada keyboard QWERTY, jadi mudah untuk pointer kiri dan jari tengah saya.ii
saja. Ya, Anda harus memindahkan jari-jari Anda dari barisan rumah tetapi masih nyaman. Dan yang lebih penting lagi, Anda dapat beralih antar mode tanpa menggerakkan jari Anda.Selain built-in alternatif
<C-[>
dan<C-c>
untuk<Esc>
kunci dikutip oleh orang lain, solusi lain yang populer adalah untuk remap<CapsLock>
sebagai Luput tambahan. Ini baik pada keyboard Qwerty dan Dvorak.Dengan cara ini Anda dapat menekan Esc dengan sangat mudah dengan jari kelingking kiri, tanpa melepaskan tangan dari HomeRow (kebetulan, CapsLock adalah tempat Escape dulu berada di keyboard saat vi diciptakan).
Remapping dapat dilakukan:
di Linux, bervariasi sesuai dengan Lingkungan Desktop. Misalnya pada Linux Mint / Cinnamon hanya masalah memilih opsi yang tepat di Menu-> Keyboard-> Layout Keyboard-> perilaku Caps Lock. Atau, tetapi kurang mudah, ini dapat dipetakan ulang di tingkat Xorg menggunakan program xmodmap dan menjalankannya dengan
.Xmodmap
file berikut :Sistem ini dapat diatur untuk menjalankannya secara otomatis di setiap login dengan menempatkan secara strategis baris skrip shell berikut (seandainya
.Xmodmap
ada di direktori home Anda~
) dalam rantai file-file bersumber otomatis login:Namun rumit, karena sebenarnya file yang bersumber bervariasi sesuai dengan lingkungan (desktop) yang digunakan. Sebagai contoh, saya memiliki xmodmap disebut sebagai entri di Cinnamon "Aplikasi Startup" (yang memungkinkan saya untuk melakukan lebih dari penyesuaian kustomisasi kunci GUI standar).
Beberapa orang bahkan melangkah lebih jauh dan memprogram kunci CapsLock untuk berperilaku:
Ctrl
kunci dengan menekan dan menahannya,Esc
kunci dengan menekan dan melepaskannya dengan cepat.Ini dapat dilakukan pada Windows dan Mac dengan mengatur / memprogram dengan benar utilitas remap yang sesuai (khusus untuk petunjuk AutoHotkey dapat ditemukan di sini dan untuk memeriksa KeyRemap4MacBook di sini ). Di Linux menggunakan program xcape .
sumber
Ctrl
tombol (pada posisi biasa) tanpa memutar jari kelingking: Anda dapat menekannya dengan telapak tangan eksternal, seperti yang dijelaskan dengan baik di sini (saya menemukan trik pintar yang bagus di 'Net, saatnya memberikannya kembali :) dan pujian kepada siapa yang menciptakannya)Ctrl
keAlt
(Cmd
) dan sebaliknya, maka<C-[>
benar-benar bersinar. Pinky lemah, ibu jari kuat. Pada QWERTY Anda bahkan tidak perlu meninggalkan rumah baris untuk itu, pada Dvorak itu tidak begitu baik, tetapi dapat diterima.Pemetaan yang saya gunakan adalah:
Dengan cara ini, Anda cukup menekan jdan kpada saat yang sama, tanpa harus khawatir yang mana yang Anda tekan terlebih dahulu.
sumber
<C-[>
dan<C-c>
dua alternatif asli untuk<Esc>
.Lihat
:help i_<esc>
dan:help i_ctrl-c
yang menjelaskan perbedaan antara<C-c>
dan<Esc>
.sumber
<C-[>
memiliki simetri yang bagus untuk itu (kedua jari kecil bergerak berlawanan arah).<C-c>
tidak persis sama dengan<Esc>
.<C-c>
dapat secara halus memecah plugin dan autocmds.Anda dapat memetakan Caps Lockke Control tanpa menggunakan program eksternal :
setxkbmap -option caps:ctrl_modifier
Ini membawa Controlke baris rumah, membuatnya lebih mudah untuk menekan semua stroke yang dimodifikasi Kontrol, termasuk Ctrl-[dan Ctrl-Cyang keduanya keluar dari mode Sisipkan di Vim.
Atau, di bagian bawah jawabannya, Giovanni menyarankan untuk memetakan Caps Lockuntuk melakukan keduanya Control dan Escape tergantung pada lama pers, tetapi ini membutuhkan menginstal perangkat lunak tambahan.
sumber
Saya sarankan menggunakan plugin saya vim-easyescape .
Masalah dengan urutan peta sederhana
inoremap jj <ESC>
adalah bahwa Vim akan berhenti setiap kali Anda mengetik jatau kdalam mode sisipkan (menunggu tombol berikutnya untuk menentukan apakah akan menerapkan pemetaan). Jeda tersebut menyebabkan gangguan visual yang mungkin atau tidak Anda sadari. vim-easyescape tidak memiliki masalah seperti itu dan mendukung batas waktu khusus.sumber
Pada terminal vi dan Vim, alt+
single-normal-mode-key
akan bekerja untuk pengeditan cepat di sebagian besar terminal.Ini berfungsi karena sebagian besar terminal mengirim alt pengubah sebagai karakter pelarian. Misalnya, ketika Anda mengetik alt+kemulator terminal mengirimkan dua karakter ke program yang sedang berjalan:
esc
,k
. Vi dan Vim menafsirkan ini seperti yang Anda harapkan; ia meninggalkan mode penyisipan (karena pelarian) dan menjalankan perintah mode normal (dalam contoh, memindahkan kursor ke atas satu baris).Ini bisa menjadi cara yang nyaman untuk keluar dari mode penyisipan jika keyboard Anda memiliki tombol alt di sebelah bilah spasi (sehingga dapat ditekan dengan ibu jari, meninggalkan jari-jari Anda di baris rumah), selama Anda menggunakan emulator terminal dengan perilaku ini dan tidak keberatan menjalankan perintah mode normal.
sumber
single-normal-mode-key
? Maksudmu Escape?FWIW saya gunakan:
Rasanya mirip dengan memukul Return. Saya menggunakan
;
sebagai pemimpin untuk pemetaan mode Insert lainnya juga.Satu-satunya waktu saya perlu mengetikkan ';' + huruf adalah saat kode golf; Saya tidak punya konflik apa pun sebaliknya.
sumber
Saya telah menggunakan Ctrl+ 3sejak beberapa waktu, saya merasa lebih mudah untuk mengetik daripada kebanyakan alternatif dan tampaknya berfungsi dengan baik (setidaknya di Linux). Saya Caps Lockdipetakan ke Ctrl, jadi sangat nyaman untuk mengetiknya.
Saya mencoba menggunakan Ctrl+ cuntuk beberapa waktu, tetapi saya memiliki beberapa masalah dengan itu yang saya tidak ingat sekarang, tapi saya tidak mendapatkan perilaku yang sama persis seperti Esc, seperti yang saya dapatkan sekarang dengan Ctrl+ 3.
sumber
Esc
di vanilla Vim. Saya menemukannya secara empiris dengan menguji kombinasi, tidak tahu detail tentang cara kerja internal.Jika Anda memiliki keyboard US English, menekan Ctrl- [sama dengan menekan Esc. Ini memberikan cara mudah untuk keluar dari mode penyisipan. Atau gunakan Ctrl- c.
Jika Anda telah vim dalam mode mudah (
-y
), maka Anda harus menekan Ctrl- l(Control-L) untuk keluar dari mode insert.Ada juga Ctrl+ oyang hanya akan keluar sementara dari mode penyisipan hanya untuk menjalankan satu perintah dan kembali ke mode penyisipan (lihat
:help i_CTRL-O
:)Atau Ctrl+ r, tapi itu hanya untuk memasukkan konten register atau ekspresi, misalnya Ctrl+ r, =5*5(lihat:
:help i_CTRL-R
,:help c_CTRL-R
dan posting stackoverflow ).Baca lebih lanjut di: Hindari kunci pelarian di vim wikia
sumber
Ctrl+r
untuk memasukkan register (termasuk=
reg ekspresi ). Jika Anda ingin menjalankan sementara gunakan perintah offCtrl+o
.Saya telah bersiap untuk
<A-e>
melarikan diri:Sunting: Baru ditemukan
<C-\><C\n>
yang mengirim Anda ke mode normal dari mode lainnya. Ini juga memiliki perilaku keseluruhan yang lebih baik. Pemetaan menjadi:sumber
Saya remap tab untuk keluar. Saya pikir secara historis di situlah kunci esc dulu, jadi saya menggunakannya dan tidak pernah melihat ke belakang. Saya hampir tidak pernah perlu memasukkan tab dalam dokumen, dan ketika saya melakukannya saya cukup tekan shift + tab. Saya belum pernah melewatkan tab asli yang mengikat.
sumber