Saya baru-baru ini mulai menggunakan Vim. Dari editor sebelumnya, saya terbiasa menghapus seluruh kata dengan menekan Ctrl- Backspace. Setelah melihat dokumentasi saya menemukan bahwa ini dilakukan dengan menekan Ctrl- wdi Vim. Masalahnya adalah setelah terbiasa menekan Ctrl- w, saya mulai menutup tab dan obrolan setiap kali saya salah mengeja kata (saat menulis pertanyaan ini, saya menutup tab ini 5 kali). Jadi saya memeriksa cara memetakan kunci di Vim dan mencoba ini:
:imap <C-BS> <C-w>
Sayangnya, itu tidak berhasil. Setelah sedikit riset saya menemukan bahwa terminal tidak membedakan antara Ctrl- Backspacedan Backspace. Saya melihat beberapa peretasan dan tambalan untuk memperbaiki masalah ini, tetapi saya tidak bisa membuatnya bekerja pada terminator (yang merupakan emulator yang ingin saya gunakan).
Apakah ada cara untuk memetakan Ctrl- Backspacedi Vim saat menggunakan terminator?
sumber
Jawaban:
Karena cara input keyboard ditangani secara internal, sayangnya ini tidak umum hari ini. Beberapa kombinasi kunci, seperti Ctrl+ non-alfabet tidak dapat dipetakan, dan Ctrl+ huruf vs. Ctrl+ Shift+ huruf tidak dapat dibedakan. (Kecuali jika terminal Anda mengirimkan kode termcap yang berbeda untuknya, yang kebanyakan tidak.) Dalam mode sisipan atau baris perintah, coba ketikkan kombinasi tombol. Jika tidak ada yang terjadi / dimasukkan, Anda tidak dapat menggunakan kombinasi tombol itu. Ini juga berlaku untuk
<Tab>
/<C-I>
,<CR>
/<C-M>
/<Esc>
/<C-[>
dll. (Satu-satunya pengecualian adalah<BS>
/<C-H>
.) Ini adalah titik nyeri yang diketahui, dan menjadi subyek dari berbagai diskusi tentang vim_dev dan saluran #vim IRC.Beberapa orang (terutama Paul LeoNerd Evans) ingin memperbaikinya (bahkan untuk konsol Vim di terminal yang mendukung ini), dan telah mengajukan berbagai proposal, cp. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
Tetapi sampai hari ini, belum ada tambalan atau sukarelawan yang maju, meskipun banyak yang menyatakan keinginan untuk memiliki ini dalam rilis utama Vim 8 di masa depan.
sumber
^?
backspace dan ctrl + backspace, yang membuat mereka (AFAIK) tidak bisa dibedakan. xterm, di sisi lain, mengirimkan^H
untuk backspace dan^?
untuk ctrl + backspace, membuat mereka dapat dibedakan.^H
) tidak dapat dibedakan dari ctrl + h (^H
). Mungkin kita bisa membuat urutan pelarian baru untuk bisa membedakan ketiganya? Saya tidak tahu betapa mudahnya itu, tetapi sepertinya itu akan aman untuk dilakukan karena dengan keadaan saat ini (beberapa terminal digunakan^?
untuk backspace, yang lain^H
, dan sebaliknya) Saya tidak dapat membayangkan sangat banyak aplikasi terminal (jika ada sama sekali) pertimbangkan skenario ctrl + backspace (itu akan sepenuhnya tidak dapat ditentukan karena berbagai terminal) ...