Memetakan tombol Alt Kiri di Vim?

12

Saya dapat memetakan kombinasi tombol Right Alt+ Left Arrowdengan <a-left>atau oleh <m-left>. Tetapi saya tidak dapat memetakan Left Altkuncinya.

Apakah ada cara untuk melakukan itu?

Sunting:
Hanya untuk memperjelas <a-left>artinya Alt+ Left Arrow.
Pertanyaan penting di sini adalah apa perbedaan antara Left Altdan Right Altdari perspektif keymappings di Vim?

Yogesh Arora
sumber

Jawaban:

14

Jika Anda melakukannya :help key-notationdi vim, Anda akan melihat bahwa satu-satunya pengubah yang diakui Vim adalah shift, control, alt / meta (diperlakukan sebagai sinonim), dan kunci perintah Mac. Anda dapat dengan mudah menggunakan xmodmap untuk memetakan kunci alt kanan Anda ke pengubah baru yang diakui Vim, tetapi mungkin tidak satu pun dari pengubah tersebut yang saat ini tidak digunakan oleh Anda. (Saya tidak tahu apakah mungkin untuk mendapatkan sistem Linux untuk mewakili pengubah kunci perintah Mac seperti yang dilihat Vim.) Ada pengubah lain yang dikenali X: Mod4, Hyper, dan sebagainya, tetapi sepertinya Vim baru saja menang ' t melihat mereka atau setidaknya tidak dapat mengikat mereka.

Pilihan lain adalah mengatur RightAlt-Left Arrow untuk menghasilkan urutan kunci tertentu, misalnya, Esc- [MyUniqueGarbageHere. Ini tentu bisa dilakukan, dan kemudian Anda bisa memberi tahu Vim untuk mengikat itu pada tindakan apa pun yang Anda suka, yang berbeda dari tombol alt kiri Anda terikat. Kelemahan dari ini adalah Anda harus melakukannya untuk setiap kombinasi RightAlt + Key secara individual. Tetapi jika Anda hanya ingin melakukan ini untuk beberapa tombol, itu sangat layak.

Bagaimana tepatnya Anda menerapkannya akan tergantung pada apakah Anda berbicara tentang menggunakan Vim di X atau di konsol Linux, atau di lingkungan lain. Saya akan menganggap Anda sedang berbicara tentang menggunakannya di X.

  1. Gunakan xmodmap untuk mengikat RightAlt ke, katakanlah, Mod3. Atur agar ini dijalankan sekali ketika sesi X Anda dimulai. Beberapa distribusi sudah memiliki file / etc / X11 / xinit / xinitrc yang akan memuat file di lokasi tertentu yang berisi perintah xmodmap.

    xmodmap -e "remove Mod1 = Alt_R" -e "add Mod3 = Alt_R"
    
  2. Saya menggunakan urxvt terminal. Ini memungkinkan seseorang untuk menentukan ikatan kunci dalam file tipe Xresources. Anda bisa melakukannya di ~ / .config / Xresources; Saya melakukannya di ~ / .config / app-defaults / URxvt. Saya akan meletakkan baris seperti ini di file itu (sintaks pastinya sensitif terhadap file yang Anda masukkan):

    URxvt.keysym.Mod3-Left:    \033<RAlt-Left>
    

    Sekarang mulai terminal baru, ketik ctrl-V lalu ketik RightAlt + Kiri. Anda seharusnya melihat pada baris perintah karakter ^ [[<RAlt-Left>. Apakah itu bekerja? Baik.

  3. Di ~ / .vimrc Anda, masukkan ini:

    set t_Ff=^[<RAlt-Left>
    

'^ [' Di sini adalah karakter pelarian tunggal. Masing-masing karakter lainnya ('<', 'R', 'A', dll.) Adalah dirinya sendiri. Gunakan awalan kunci "literal" vim, diikuti dengan jalan keluar, untuk memasukkan '^ [' (saya lupa apa kunci "literal" secara default --- juga ctrl-V, mungkin?) T_Ff hanyalah entri terminal yang tidak digunakan . Lainnya adalah t_Fg. Anda dapat menggunakan :set termcapvim untuk melihat entri terminal mana yang ditetapkan, dan cukup gunakan t_XX untuk beberapa XX yang tidak digunakan. Ikuti baris .vimrc yang disajikan di atas dengan yang berikut ini:

    map <t_Ff> whatever-vim-keys-you-want-it-mapped-to
    map! <t_Ff> whatever-vim-keys-you-want-it-mapped-to

Ini juga mungkin dilakukan secara langsung:

    map ^[<RAlt-Left> whatever-vim-keys-you-want-it-mapped-to

Namun, saya telah menemukan teknik yang menggunakan entri terminal idle untuk bekerja jauh lebih andal.

Saya membuat banyak asumsi di sini: bahwa Anda menggunakan Linux, X, dan sebagainya. Jika Anda menggunakan program terminal yang berbeda dari urxvt, mungkin atau mungkin tidak menyediakan teknik pengikat kunci yang cukup kuat untuk melakukan apa yang telah saya jelaskan. Jika Anda memilih kunci yang kurang eksotis, Anda mungkin masih dapat melakukan sesuatu seperti yang saya jelaskan di sini. Misalnya, Anda dapat mengatur agar RAlt-Left terikat ke F21, dan kemudian pergi dari sana. Beri tahu kami apa kebutuhan Anda.

dubiousjim
sumber
Apakah ini juga berlaku untuk gvim?
Glyph
Saya telah menemukan ini sangat membantu. Saya menggunakan lxterminal dan ingin memetakan kunci alt saya di vim. Di terminal, ketika saya mengetik Ctrl-V dan kemudian kombo kunci yang saya inginkan (Alt-T, misalnya), itu meludahkan ^ [t. Saya menggunakan ini di .vimrc saya bukannya <At> untuk melakukan pemetaan (^ [tentu saja menjadi karakter pelarian tunggal) dan itu dilakukan dengan sempurna. (^ [^ T juga mengikat Ctrl + Alt + T) dengan benar
elynnaie