Gnome-terminal + відображення Vim та Ctrl-Shift


11

Чи можна відобразити послідовність з Ctrl- Shiftв терміналі Gnome?

Я намагаюся додати відображення

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

і це не працює. Як це зробити?

Я якось склав карту <C-S-]>, але виявилося, що це не так <C-S-]>, але <C-]>, схоже, він не розпізнає Shift у цій послідовності. Це неправильно налаштовано, або це вина гнімо-терміналу?

Крім того. <C-[>Після натискання картографічне відображення виглядає так, що чекає вім. Я вважаю, що це час очікування відображення, але як позбутися цього тайм-ауту, коли я натискаю точно <C-[>і не хочу натискати нічого іншого?

Я щойно почав вивчати vim, так що шкода, якщо в цих картах щось явно не так.

Відповіді:


8

Я думаю, що проблема тут полягає в тому, що ви намагаєтеся отримати vim, який розраховує запустити в терміналі, розпізнати послідовність CTRL-SHIFT. Хоча X може розпізнавати такі комбінації, програми, які працюють у терміналі (або, в наші дні, емулятор терміналу), не можуть. Це тому, що історично термінали могли надсилати та отримувати лише семи- або восьми бітові послідовності даних ASCII через послідовне з'єднання (хоча це може включати "послідовності втечі", які позиціонують курсор, прокручувати або видаляти лінії, змінювати колір та інші корисні ефекти).

У наборі символів ASCII є 32 "Коди управління", включаючи знайомі CTRL-A через CTRL-Z. Але немає відповідних кодів ASCII для "CTRL-SHIFT" від A до Z. Тепер gnome-термінал може розпізнати ці коди (CTRL-SHIFT-V, наприклад, вставить текст з буфера обміну), але vim не буде можливість мати прямий доступ до нього.

Звичайно, можливо (не знаю) для встановлення термінального емулятора для перетворення натискань клавіш CTRL-SHIFT в послідовність виходу, яка потім може бути розпізнана шляхом картування vim.

=======

ОНОВЛЕННЯ

Вас може зацікавити gvim, який є графічною версією vim, яка працює як програма X, а не термінальна програма. Можливо, gvim зможе зрозуміти коди CTRL-SHIFT?


4

Здається, проблема з терміналом GNOME не дозволяє певні комбінації з Ctrlключем. Пошук в Інтернеті показує безліч випадків цього.

Про всяк випадок, якщо ви цього не знаєте, Ctrl+ page up/ переглядає page downвкладки.


3

Як зазначив Бартлбі , це термінальне обмеження, оскільки vi бачить, що клавішні коди є однаковими.

Для таких терміналів, як xtermви можете це змінити. Що стосується gnome-terminal ігнорування налаштувань ресурсів X, я не знаю, як зробити наступне:

Це запитання ТА стосується тієї ж теми, і цей приклад показує це для використання для відображення декількох клавіш у .Xresourcesфайлі. Наприклад:

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")  

Тепер у нас є різні ключові послідовності вступу в VI в CtrlaVS. CtrlShifta, Ctrlbпроти CtrlShiftb, Ctrlfпроти CtrlShiftf.

Тепер ми можемо їх по-різному відображати в ~/.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>

Первісне питання gnome-terminalстосувалося, тоді як ваша відповідь стосується xterm.
Егмонт

@egmont: Добрий момент і недогляд з мого боку. У відповідності з цією відповіддю.Xresources ігноруються gnome-terminal. Це прикро. Оновлена ​​відповідь.
cfi

Трохи переформулював / перекреслив цю відповідь як питання Q&A для SuperUser , тому що, мабуть, я повинен її видалити, оскільки вона не стосується термінала запитувача.
cfi


1

У gnome-terminalпослідовностях евакуації, згенерованих ключами, не можна налаштувати. Для багатьох клавіш Ctrl+ keyі Shift+ Ctrl+ keyгенерують різні послідовності; на жаль, [і ]вони цього не роблять, тому ви не можете їх розрізнити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.