Bagaimana cara memetakan kunci ALT di .vimrc?

9

Agar dapat menambahkan baris kosong tanpa masuk ke mode penyisipan, saya mencoba memetakan ALT-odan ALT-Oke o<ESC>dano<ESC>

Saya sudah mencoba yang berikut di blog saya .vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

dan

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

dan (seperti yang disarankan di bawah)

map <A-o> o<ESC>
map <A-O> O<ESC>

tapi tidak ada yang berhasil. Itu hanya memberikan perilaku yang biasa, seolah-olah ALT-obelum didefinisikan.

Ini adalah pertama kalinya saya mengubah .vimrcfile, dan saya tidak dapat menemukan di mana dokumentasi memberitahu Anda bagaimana menentukan berbagai kunci. Tetapi saya dapat memverifikasi bahwa .vimrcfile saya sedang dibaca, dengan memasukkan:

map <Enter> ihello<ESC>

Yang berhasil memetakan <Enter>untuk memasukkan hellodan kembali ke mode perintah.

Saya menggunakan vim dengan cygwin.

Eric Wilson
sumber
Kedengarannya seperti terminal Anda tidak melewati urutan alt sama sekali. Apakah urutan dikenal lainnya bekerja? Bagaimana dengan mencoba Ctrl? Terminal apa yang Anda gunakan?
Caleb
Saya menggunakan vim di cygwin, tetapi saya telah membuat skrip lain berfungsi, sebagai detail edit saya.
Eric Wilson
Ctrl berfungsi, semacam. Sepertinya tidak membiarkan saya membedakan antara <C-o>dan <C-O>.
Eric Wilson
Jawaban Giles tepat di jalurnya. Anda harus secara definitif beralih ke terminal yang lebih mampu. Masalah-masalah ini akan hilang dan Anda akan mendapatkan kembali kunci Anda!
Caleb

Jawaban:

10

Untuk melihat apa yang dikirimkan terminal Anda ketika Anda menekan tombol, beralih ke mode insert, tekan Ctrl+V, lalu tombol. Sebagian besar kunci dengan sebagian besar terminal mengirimkan urutan pelarian di mana hanya karakter pertama yang merupakan karakter kontrol; Ctrl+Vmenyisipkan karakter berikutnya secara harfiah, sehingga Anda bisa memasukkan seluruh urutan pelarian dengan cara itu.

Terminal yang berbeda mengirimkan urutan pelarian yang berbeda untuk beberapa kombinasi tombol. Banyak terminal mengirim karakter yang sama ( ^O) untuk keduanya Ctrl+Odan Ctrl+Shift+O; jika itu masalahnya, Vim tidak akan dapat membedakan di antara mereka.

Anda menyebutkan bahwa Anda menggunakan Cygwin; di terminal mana Anda menjalankan Vim adalah informasi yang paling relevan. Jika Anda menggunakan konsol Windows asli, dapatkan terminal yang lebih baik. Saya merekomendasikan MinTTY untuk menjalankan aplikasi mode teks Cygwin di terminal di Windows di luar X, tetapi Windows-asli RXVT dan PuTTYcyg Cygwin juga baik. (Juga Console2 untuk menjalankan aplikasi konsol Windows, tapi itu di luar topik di sini).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3

Jika Control+Vdiikuti oleh ALT-xpertunjukan ^[x(ketik terminal) Anda dapat memperbaikinya dengan skrip kecil ini dari vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Tambahkan ke .vimrc untuk semua pemetaan tombol alt.

laktak
sumber
1

Ini berfungsi untuk saya di terminal xfce Ubuntu 16.04 (dan terminal karat alacritty)

Tetapkan pemicu snipet ultisnip ke Meta-/(seperti halnya snipet emacs)

let g:UltiSnipsExpandTrigger="^[/"

Sekarang saya ketikkan ^[/vim

Dalam mode sisipkan Ctrl-V Alt-/

( Metaadalah Altkunci pada keyboard PC saya)

pengguna178047
sumber
-1

Tombol M (eta) adalah tombol windows. Itu adil <A-o>.

Martin Ueding
sumber
Ini juga tidak berfungsi.
Eric Wilson
Ini tidak selalu terjadi, pada tata letak keyboard yang berbeda dan lokal bahasa mereka sering berbeda.
Caleb
@ Caleb apakah ada dokumentasi untuk ini?
Eric Wilson
Saya mencoba map <A-o> o<ESC>dan itu berhasil untuk saya. Jika Anda memasukkannya ke dalam .vimrc, apakah Anda memuatnya kembali?
Martin Ueding
Penanya sudah menyatakan dalam pertanyaan mereka bahwa mereka memverifikasi file sedang dimuat. Ini tidak relatif untuk pengguna karena mereka ada di windows, tetapi Anda dapat melihat berbagai konfigurasi kunci Meta / Win / Alt dalam file geometri / simbol / kode kunci xkb. Anda akan melihat bahkan di opsi tata letak keyboard gnome ada beberapa cara umum untuk memetakan ulang antara Alt / Win / Meta. Salah satu alasan ini ada adalah karena perbedaan dalam tata letak dasar.
Caleb