Pemetaan Gnome-terminal + Vim dan Ctrl-Shift

11

Apakah mungkin untuk memetakan urutan dengan Ctrl- Shiftdi Terminal Gnome?

Saya mencoba menambahkan pemetaan

  • map <C-S-[> gT
  • map <C-S-]> gt

dan itu tidak berfungsi. Bagaimana cara melakukannya?

Entah bagaimana saya memetakan <C-S-]>, tapi ternyata tidak <C-S-]>, tapi <C-]>, jadi sepertinya tidak mengenali Shift dalam urutan ini. Ini salah konfigurasi atau salah gnome-terminal?

Selain. Pemetaan <C-[>, setelah ditekan, sepertinya vim sedang menunggu. Saya kira ini memetakan batas waktu, tetapi bagaimana cara menyingkirkan batas waktu ini ketika saya menekan tepat <C-[>dan saya tidak ingin menekan yang lain?

Saya baru saja mulai belajar vim, sangat menyesal jika ada sesuatu yang jelas salah dalam pemetaan itu.

Simon
sumber

Jawaban:

8

Saya pikir masalahnya di sini adalah Anda mencoba untuk mendapatkan vim, yang diharapkan berjalan di terminal, untuk mengenali urutan CTRL-SHIFT. Meskipun X mungkin mengenali kombinasi tersebut, aplikasi yang berjalan di terminal (atau, hari ini, emulator terminal) tidak bisa. Ini karena, secara historis, terminal hanya dapat mengirim dan menerima urutan tujuh atau delapan bit data ASCII melintasi koneksi serial (meskipun ini dapat mencakup "urutan sekuensi" yang menempatkan kursor, menggulir atau menghapus garis, mengubah warna dan bantuan lainnya) efek).

Ada 32 "Kode Kontrol" dalam rangkaian karakter ASCII, termasuk CTRL-A yang sudah dikenal hingga CTRL-Z. Tetapi tidak ada kode ASCII yang sesuai untuk "CTRL-SHIFT" A hingga Z. Sekarang, gnome-terminal itu sendiri dapat mengenali kode-kode ini (CTRL-SHIFT-V, misalnya, akan menempelkan teks dari clipboard), tetapi vim tidak akan dapat memiliki akses langsung ke sana.

Tentu saja, dimungkinkan (saya tidak tahu) untuk emulator terminal diatur untuk mengonversi penekanan tombol CTRL-SHIFT ke urutan pelarian yang kemudian dapat dikenali oleh pemetaan vim.

=======

MEMPERBARUI

Anda mungkin tertarik pada gvim, yang merupakan versi grafis dari vim yang berjalan sebagai program X daripada program terminal. Mungkin gvim akan dapat memahami kode CTRL-SHIFT?

Bartleby the Scrivener
sumber
4

Tampaknya ada masalah dengan Terminal GNOME yang tidak mengizinkan kombinasi tertentu dengan Ctrlkunci. Pencarian online menunjukkan banyak hal tentang ini.

Kalau-kalau Anda tidak tahu, Ctrl+ page up/ page downsiklus melalui tab.

stschn
sumber
3

Seperti yang ditunjukkan oleh Bartleby, ini adalah batasan terminal, karena vi melihat kode-kode kunci itu sama.

Untuk terminal seperti xtermAnda dapat mengubahnya. Untuk gnome-terminal yang mengabaikan pengaturan sumber X, saya tidak tahu bagaimana melakukan hal berikut:

Pertanyaan SO ini mencakup topik yang sama, dan contoh ini menunjukkan ini digunakan untuk memetakan beberapa kunci dalam .Xresourcesfile. Misalnya:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Sekarang kami memiliki urutan kunci yang berbeda datang ke vi untuk Ctrlavs CtrlShifta, Ctrlbvs CtrlShiftb, Ctrlfvs CtrlShiftf.

Kami sekarang dapat memetakannya secara berbeda di ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>
cfi
sumber
Pertanyaan aslinya adalah tentang gnome-terminal, sedangkan tanggapan Anda merujuk xterm.
egmont
@egmont: Poin bagus, dan pengawasan di pihak saya. Menurut jawaban ini yang .Xresourcesdiabaikan oleh gnome-terminal. Sangat disayangkan. Jawaban yang diperbarui.
cfi
Tulis ulang sedikit / crosspost jawaban ini sebagai pasangan T&J ke SuperUser , karena saya mungkin harus menghapusnya di sini karena tidak berlaku untuk terminal si penanya.
cfi
1

Sepertinya Anda hanya perlu menonaktifkan semua pintasan keyboard di gnome-terminal.

tidak terlihat
sumber
2
Mengapa menonaktifkan pintasan keyboard membantu?
Eliah Kagan
Sepertinya tidak membantu sama sekali, dari pengalaman saya.
Elliot Foster
1

Dalam gnome-terminalurutan melarikan diri yang dihasilkan oleh kunci tidak dapat dikonfigurasi. Untuk banyak kunci Ctrl+ keydan Shift+ Ctrl+ keymenghasilkan urutan yang berbeda; Sayangnya untuk [dan ]mereka tidak, jadi Anda tidak dapat membedakan mereka.

egmont
sumber