Картографування ctrl-backspace в термінаторі


8

Я нещодавно почав використовувати Vim. З попередніх редакторів я звик видаляти ціле слово, натискаючи Ctrl- Backspace. Переглянувши документацію, я виявив, що це було зроблено натисканням Ctrl- wу Vim. Проблема полягає в тому, що після звикання до натискання Ctrl- wя починав закривати вкладки та чати кожного разу, коли неправильно вводив слово (під час написання цього питання я закривав цю вкладку 5 разів). Тож я перевірив, як зіставити ключі у Vim, і спробував це:

:imap <C-BS> <C-w>

На жаль, це не спрацювало. Після невеликих досліджень я виявив, що термінал не розрізняє Ctrl- Backspaceі Backspace. Я побачив деякі хаки та патчі, щоб виправити цю проблему, але я не зміг змусити їх працювати над термінатором (це емулятор, який я хочу використовувати).

Чи є спосіб зіставити Ctrl- Backspaceу Vim при використанні термінатора?


2
Ласкаво просимо у пекло Vim.
romainl

2
Мені подобається те, що цей пекло досить продуктивний і його можна вдосконалити за допомогою патчів.
Інго Каркат

До речі, я збираю такі запитання, щоб сподіватися, що вдасться зробити випадок, що ця конкретна проблема вирішується у Vim 8.0. Дуже хочеться, щоб кандидати в кандидатури були все більш і більше.
Інго Каркат

Цю проблему неможливо вирішити в vim (AFAIK). Це залежить від терміналу vim, який працює. Для широкої кількості користувачів, які використовують vte (Gnone Terminal, Mate Terminal, Guake тощо), ця проблема привернула деяку увагу і може бути вирішена найближчим часом. Дивіться цю помилку gnome: bugzilla.gnome.org/show_bug.cgi?id=420039
trusktr

@IngoKarkat Дивіться вище коментар. ^
trusktr

Відповіді:


8

Через те, що вхід з клавіатури обробляється внутрішньо, сьогодні, на жаль, це неможливо. Деякі комбінації клавіш, наприклад Ctrl+ не алфавітне, неможливо відобразити, а Ctrl+ літеру проти Ctrl+ Shift+ літеру не можна відрізнити. (Якщо ваш термінал не надсилає для нього чіткий код термінальної капи , який більшість не робить.) У режимі вставки або командного рядка спробуйте ввести комбінацію клавіш. Якщо нічого не відбувається / вставлено, ви не можете використовувати цю комбінацію клавіш. Це стосується також <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>тощо. (Єдиним винятком є <BS>/ <C-H>.) Це відома больова точка і тема різних дискусій на vim_dev та #vim IRC-канал #vim.

Деякі люди (в першу чергу Пол Леонерд Еванс) хочуть це виправити (навіть для консолі Vim в терміналах, які це підтримують), і вони подали різні пропозиції, пор. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Але на сьогоднішній день жодних патчів чи добровольців ще не вийшло, хоча багато хто висловив бажання мати це у майбутньому великому випуску Vim 8.


Дякую за швидку відповідь. Напевно, мені просто доведеться звикати використовувати ctrl-w для vim та ctrl-backspace для браузерів.
користувач1026044

Хороша річ у Ctrl-W - це те, що він також працює в Bash і т.д.
Ingo Karkat

Так, я знаю. Але ви все ще повинні використовувати ctrl-backspace для всього іншого, а той факт, що ctrl-w здається стандартним для закриття вкладок і вікон скрізь, робить це дратує. Я, мабуть, звикаю через деякий час.
користувач1026044

Але чи можна це вирішити виключно в базі коду vim? Як будь-який код у базі коду vim розрізняє backspace та ctrl + backspace, якщо термінал, в якому він працює, надсилає vim такий же точний вхід для будь-якої комбінації клавіш? Здається, що це щось, що потрібно зафіксувати в терміналі, в якому працює vim, а не vim. Наприклад, Guake надсилає ^?як backspace, так і ctrl + backspace, що робить їх (AFAIK) невідрізними. xterm, з іншого боку, посилає ^Hдля backspace і ^?для ctrl + backspace, роблячи їх помітними.
trusktr

Але, на жаль, у xterm backspace ( ^H) не відрізняється від ctrl + h ( ^H). Можливо, ми можемо створити нову послідовність втечі, щоб можна було розрізнити всі три? Я не знаю, наскільки це легко, але здається, що це було б безпечно зробити, тому що при поточному стані речей (деякі термінали використовують ^?для ^Hзворотної області , інші і навпаки) я не можу уявити дуже багато термінальних додатків (якщо такий взагалі є) розглянемо сценарій ctrl + backspace (це було б зовсім недетерміновано через різноманітність терміналів) ...
trusktr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.