Терминал Gnome + Vim и отображения Ctrl-Shift

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

Я пытаюсь добавить отображения

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

и это не работает. Как сделать это?

Так или иначе я отобразился <C-S-]>, но оказалось, что это не <C-S-]>, но <C-]>, таким образом, похоже, что это не распознает, Переключают эту последовательность на нижний регистр. Это неправильно конфигурируется, или это - отказ терминала гнома?

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

Я только что начал изучать энергию, очень жаль если существует что-то, очевидно, неправильно в этом отображения.

9
задан 1 July 2018 в 11:14

5 ответов

Поскольку Bartleby указал, что это - терминальное ограничение, потому что 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 для Ctrla по сравнению с 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>
3
ответ дан 1 July 2018 в 11:14

В gnome-terminal escape-последовательности, сгенерированные ключами, не конфигурируются. Для многих клавиш Ctrl + key и Shift + Ctrl + key генерируют разные последовательности ; к сожалению, для [ и ] они этого не делают, поэтому вы не можете их различить.

0
ответ дан 1 July 2018 в 11:14

Я думаю, что проблема здесь в том, что вы пытаетесь заставить vim, который ожидает запуска в терминале, распознать последовательность CTRL-SHIFT. Хотя X может распознавать такие комбинации, приложения, работающие в терминале (или, в наши дни, в эмуляторе терминала), не могут. Это связано с тем, что исторически терминалы могли только отправлять и получать семи- или восьмибитные последовательности данных ASCII через последовательное соединение (хотя это может включать в себя «escape-последовательности», которые позиционируют курсор, прокручивают или удаляют строки, меняют цвет и другие полезные эффекты).

В наборе символов ASCII есть 32 «Кода управления», включая знакомые от CTRL-A до CTRL-Z. Но нет соответствующих кодов ASCII для «CTRL-SHIFT» от A до Z. Теперь сам gnome-терминал может распознавать эти коды (например, CTRL-SHIFT-V будет вставлять текст из буфера обмена), но vim не будет иметь прямой доступ к нему.

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

=======

ОБНОВЛЕНИЕ

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

0
ответ дан 1 July 2018 в 11:14

Похоже, вам просто нужно отключить все сочетания клавиш в gnome-терминал.

0
ответ дан 1 July 2018 в 11:14

Кажется, проблема в терминале GNOME, не позволяющем использовать определенные комбинации с помощью клавиши Ctrl . Поиск в Интернете показывает много случаев этого.

На всякий случай, если вы не знаете, Ctrl + страница вверх / страница вниз пролистывает вкладки.

0
ответ дан 1 July 2018 в 11:14

Другие вопросы по тегам:

Похожие вопросы: