Действительно ли возможно отобразить последовательность с Ctrl-Shift в Терминале Gnome?
Я пытаюсь добавить отображения
map <C-S-[> gT
map <C-S-]> gt
и это не работает. Как сделать это?
Так или иначе я отобразился <C-S-]>
, но оказалось, что это не <C-S-]>
, но <C-]>
, таким образом, похоже, что это не распознает, Переключают эту последовательность на нижний регистр. Это неправильно конфигурируется, или это - отказ терминала гнома?
Кроме того. Отображение <C-[>
, после того, как нажато, похож на энергию, ожидает. Я предполагаю, что это отображает тайм-аут, но как избавиться от этого тайм-аута, когда я нажимаю точно <C-[>
и я не хочу нажимать что-либо еще?
Я только что начал изучать энергию, очень жаль если существует что-то, очевидно, неправильно в этом отображения.
Поскольку 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>
В gnome-terminal
escape-последовательности, сгенерированные ключами, не конфигурируются. Для многих клавиш Ctrl kbd> + key kbd> и Shift kbd> + Ctrl kbd> + key kbd> генерируют разные последовательности ; к сожалению, для [ kbd> и ] kbd> они этого не делают, поэтому вы не можете их различить.
Я думаю, что проблема здесь в том, что вы пытаетесь заставить 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?
Похоже, вам просто нужно отключить все сочетания клавиш в gnome-терминал.
Кажется, проблема в терминале GNOME, не позволяющем использовать определенные комбинации с помощью клавиши Ctrl kbd>. Поиск в Интернете показывает много случаев этого.
На всякий случай, если вы не знаете, Ctrl kbd> + страница вверх kbd> / страница вниз kbd> пролистывает вкладки.