Bagaimana cara memperbaiki panah Ctrl + di Vim?

26

Saya menggunakan Putty -> Suse box -> vim 7.2kombo untuk mengedit dan ingin memetakan kembali Ctrl + panah kombo ke tugas tertentu. Tetapi untuk beberapa alasan, Vim mengabaikan jalan pintas dan masuk ke mode penyisipan dan memasukkan karakter "D" (untuk kiri) dari "C" (untuk kanan).

Bagian mana dari konfigurasi keyboard / terminal saya yang harus disalahkan dan bagaimana cara memperbaikinya?

Alex B
sumber
Putty tidak mengirim urutan berbeda berguna untuk panah kontrol. Tidak ada jawaban yang disarankan yang benar (atau bermanfaat).
Thomas Dickey

Jawaban:

27

Cari tahu persis urutan escape yang dikirim terminal Anda untuk Ctrl+ panah dengan mengetik Ctrl+ V, Ctrl+ panah dalam mode sisipkan: ini akan memasukkan ESCkarakter utama (ditampilkan ^[dalam vim) secara harfiah, diikuti oleh sisa urutan escape. Kemudian katakan vim tentang urutan melarikan diri ini dengan sesuatu seperti

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Saya ingat bahwa Putty memiliki pengaturan default untuk mode Tombol Kursor Aplikasi yang tidak nyaman (saya lupa mengapa), Anda mungkin ingin beralih pengaturan ini terlebih dahulu.

Perhatikan bahwa meskipun urutan escape berbeda antar terminal, konflik (yaitu urutan escape yang berhubungan dengan kunci yang berbeda di terminal yang berbeda) jarang terjadi, jadi tidak ada kebutuhan khusus untuk mencoba menerapkan pemetaan hanya pada tipe terminal tertentu.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Bagaimana cara mengetahui urutan pelarian yang dikirim?
Alex B
@Alex: Saya sudah mencoba untuk menjelaskan penjelasan saya, mengeluh jika Anda masih tidak mengerti kalimat pertama saya.
Gilles 'SO- stop being evil'
Anda juga dapat menjalankan od -aatau od -cjika Anda menggali oktal lalu ketik kunci yang dimaksud. Lihat "ditambahkan" dalam jawaban saya untuk contoh.
msw
Maaf sudah terlambat kembali ke pertanyaan ini, tetapi saya sudah tahu bahwa Putty masih mengirim kunci kursor aplikasi ke terminal, bahkan setelah saya mematikannya sepenuhnya . Saya bingung apa lagi yang harus saya ubah untuk membuatnya pergi.
Alex B
@Alex: Anda tidak perlu membuatnya pergi, Anda dapat memberi tahu aplikasi Anda tentang mereka (yang saya temukan sebagai jalur dengan resistensi paling rendah). Atau Anda dapat mengganti Putty dengan salah satu alternatif seperti mintty plus Cygwin ssh (tapi itu di luar topik untuk situs ini).
Gilles 'SANGAT berhenti menjadi jahat'
7

Taruhan terbaik Anda mungkin untuk melihat konfigurasi mode Tombol Kursor Aplikasi Putty .

Urutan default mengirim ESCsebagai awalan dan [diikuti oleh Append atau Change atau hal-hal lain yang melemparkan Anda ke mode insert.

ditambahkan, mengikuti Gilles

Versi pelarian ^ V yang sedikit lebih eksplisit dapat dilihat dengan od (1). Inilah saya mengetik ^ Atas, ^ Bawah, ^ Kanan, ^ Kiri di terminal saya:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

Jadi terminal saya mengirim ^[[1;5Aketika saya menekan Ctrl+

msw
sumber
Mematikan mode Tombol Kursor Aplikasi sepertinya tidak membantu.
Alex B
0

untuk ini dan masalah keyboard vim lainnya saya cukup lakukan

vim ~/.vimrc
set nocompatible
zainengineer
sumber