Bagaimana cara mengirim sinyal ESC ke vim ketika kunci esc saya tidak berfungsi?
20
Saya mengalami masalah dengan Esckunci ketika saya ingin kembali ke mode interaktif dari mode insert. Apakah ada kunci lain yang digunakan untuk melepaskan mode memasukkan.
Meskipun solusi yang ada, solusi konvensional di Vim adalah memetakan kembali kunci dalam .vimrckonfigurasi Anda . Faktanya, banyak pengguna Vim memiliki kunci yang lebih mudah dijangkau untuk dipetakan ulang Esc. Pilihan populer adalah Ctrl+ Enter, atau jj, dll.
Untuk mengaktifkan ini, cukup masukkan sesuatu seperti berikut ke dalam Anda .vimrcdan muat ulang / mulai ulang Vim:
Eyup, itulah cara Vim. Cara umum lain yang dipromosikan oleh Learn Vim the Hard Way (buku) adalahinoremap jk <Esc>
grochmal
Ini adalah solusi yang bagus, tapi apa masalahnya hanya menggunakan Ctrl + Enter + j?
Sandra Ross
@SandraRoss Anda benar-benar dapat menggunakan kombinasi tombol apa pun yang Anda suka (meskipun berhati-hatilah bahwa beberapa, misalnya Ctrl-Enter, tidak berfungsi pada macOS). Yang mengatakan, Ctrl + Enter + j menurut saya lebih sulit untuk mengetik, dan saya jujur tidak tahu apakah Anda bahkan dapat mengkonfigurasi kombinasi tiga tombol dengan dua kunci non-modifier (Enter, j) di Vim.
Konrad Rudolph
Oke, saya setuju. Sebenarnya, Ctrl + Enter + jj tidak bekerja untuk saya, karena, memang, saya menggunakan macos X. Setidaknya, bisakah Anda memberi tahu saya apa yang harus saya masukkan hanya Ctrl + j.
Sandra Ross
@SandraRoss Untuk itu, inoremap <C-j> <Esc>harus berfungsi. :-)
Konrad Rudolph
32
Ctrl- [Mengirim karakter yang sama ke terminal sebagai Esckunci fisik . Yang terakhir hanyalah jalan pintas untuk yang pertama, secara umum.
Saya pernah memiliki terminal vt220 nyata, dan keyboard-nya tidak memiliki Escapekunci. Menekan Ctrl+[adalah satu - satunya cara untuk menghasilkan Escape.
Kusalananda
11
Jika Anda ingin dapat menggunakan kunci tunggal, sebagai solusi murni * nix (tanpa pemetaan Vim), Anda dapat mendefinisikan kunci lain sebagai Esc. Sama seperti pengguna Emacs memetakan ulang CapsLockke Ctrlbeberapa pengguna Vim (termasuk saya) memetakan kembali CapsLockke Esc. Ini berfungsi untuk semua * nix menggunakan X11.
Gunakan xev -event keyboard(dan kemudian tekan CapsLock) untuk mendapatkan kode kunci untuk CapsLockkunci (bagi saya itu adalah kode kunci 66). Kemudian Anda dapat menggunakannya xmodmapuntuk memetakan kembali kunci:
Untuk mendapatkan ini saat masuk Anda dapat menambahkan xmodmapekspresi ~/.Xmodmapsebagai berikut:
remove Lock = Caps_Lock
keycode 66 = Escape
Meskipun untuk bagian kedua YMMV, karena tidak semua manajer tampilan berjalan ~/.Xmodmap. Anda mungkin perlu menambahkan xmodmap .Xmodmapuntuk .xinitrcpada beberapa dari mereka.
Saya tahu persis apa yang Anda maksud. Saya sudah melihatnya awal minggu ini
Sandra Ross
Saya akan melakukan itu, tetapi saya menggunakan CapsLock sebagai kunci
penulisan
6
Anda dapat mencoba Ctrl-C, yang berfungsi untuk saya dan menurut saya lebih mudah daripada ESC. Namun saya tidak yakin apakah itu diaktifkan secara default.
CTRL-C adalah ASCII 0x03, mengirimkan SIGINT ke shell - tidak sama dengan ESC.
kucing
@cat Pada dasarnya ia bekerja sama di vim. Saya selalu menggunakan Ctrl-C sebagai ganti Esc
Erik W
1
@cat: Anda mendapatkannya secara gratis, karena vim memiliki handler di tempatnya. Anda tidak perlu melakukan apa pun sendiri. Jawaban ini berhasil di luar kotak; Saya baru saja mencobanya. Apakah ini berfungsi secara umum untuk aplikasi apa pun? Tidak, tapi bukan itu yang diminta.
Lightness Races with Monica
2
@ kucing: Benarkah? Judulnya adalah "Bagaimana cara mengirim sinyal ESC ke vim ketika kunci esc saya tidak berfungsi?" , satu-satunya tag adalah vim , dan masalah yang dijelaskan dalam pertanyaan adalah tentang keluar dari mode penyisipan Vim. Inilah bagian ringkasan dari pertanyaan: "Apakah ada kunci lain yang digunakan untuk melepaskan mode penyisipan." Jika itu tidak spesifik untuk Vim dan mode sisipkannya, maka saya tidak tahu apa itu!
Lightness Races with Monica
1
@LightnessRacesinOrbit Yah, ketika saya melihat judul awalnya, itu adalah "kunci lain yang digunakan untuk Esc" dan pertanyaannya tidak terlihat spesifik vimsama sekali. Maaf! ¯_ (ツ) _ / ¯
cat
-3
Ctrl + F2
Diaktifkan secara default. Tidak perlu mengkonfigurasi pengaturan apa pun.
Anda akan pindah ke mode normal, di mana Anda bisa melakukannya :q! or :wq.
[
Jawaban:
Meskipun solusi yang ada, solusi konvensional di Vim adalah memetakan kembali kunci dalam
.vimrc
konfigurasi Anda . Faktanya, banyak pengguna Vim memiliki kunci yang lebih mudah dijangkau untuk dipetakan ulang Esc. Pilihan populer adalah Ctrl+ Enter, atau jj, dll.Untuk mengaktifkan ini, cukup masukkan sesuatu seperti berikut ke dalam Anda
.vimrc
dan muat ulang / mulai ulang Vim:Lebih banyak informasi dan alternatif
sumber
inoremap jk <Esc>
inoremap <C-j> <Esc>
harus berfungsi. :-)Ctrl- [Mengirim karakter yang sama ke terminal sebagai Esckunci fisik . Yang terakhir hanyalah jalan pintas untuk yang pertama, secara umum.
sumber
Escape
kunci. MenekanCtrl+[
adalah satu - satunya cara untuk menghasilkanEscape
.Jika Anda ingin dapat menggunakan kunci tunggal, sebagai solusi murni * nix (tanpa pemetaan Vim), Anda dapat mendefinisikan kunci lain sebagai Esc. Sama seperti pengguna Emacs memetakan ulang CapsLockke Ctrlbeberapa pengguna Vim (termasuk saya) memetakan kembali CapsLockke Esc. Ini berfungsi untuk semua * nix menggunakan X11.
Gunakan
xev -event keyboard
(dan kemudian tekan CapsLock) untuk mendapatkan kode kunci untuk CapsLockkunci (bagi saya itu adalah kode kunci 66). Kemudian Anda dapat menggunakannyaxmodmap
untuk memetakan kembali kunci:Untuk mendapatkan ini saat masuk Anda dapat menambahkan
xmodmap
ekspresi~/.Xmodmap
sebagai berikut:Meskipun untuk bagian kedua YMMV, karena tidak semua manajer tampilan berjalan
~/.Xmodmap
. Anda mungkin perlu menambahkanxmodmap .Xmodmap
untuk.xinitrc
pada beberapa dari mereka.sumber
Anda dapat mencoba Ctrl-C, yang berfungsi untuk saya dan menurut saya lebih mudah daripada ESC. Namun saya tidak yakin apakah itu diaktifkan secara default.
sumber
0x03
, mengirimkan SIGINT ke shell - tidak sama dengan ESC.vim
sama sekali. Maaf! ¯_ (ツ) _ / ¯Ctrl + F2
Diaktifkan secara default. Tidak perlu mengkonfigurasi pengaturan apa pun.
Anda akan pindah ke mode normal, di mana Anda bisa melakukannya
:q! or :wq
.sumber
Ctrl+F2
dapat mengirim pelarian, tetapi juga akan mengirim hal-hal lain.