Связывание клавиш со стрелками на экране GNU
Я новичок в GNU Screen и до сих пор мне это нравится. Однако есть кое-что, что я не могу заставить работать так, как я мог бы в tmux.
Я хочу сделать так, чтобы Ctrl-a "клавиша со стрелкой" изменяла фокус между моими окнами. У меня обычно много разделений в окне терминала.
Я искал вокруг, но не смог найти конфигурацию, которая работает. Обратите внимание, я не хочу переключаться между окнами, просто фокус.
Бонусные баллы, если кто-то может объяснить разницу между "bind" и "bindkey" моему растрепанному мозгу.
ура
1 ответ
Поскольку :bind
не будет принимать странные виртуальные символы, такие как клавиши со стрелками - только нажатия клавиш, которые имеют ASCII-коды или что-то вроде ctrl thingThatHasAsciiCode - я думаю, используя :bindkey
это самый простой способ получить то, что вы ищете. Для меня следующее работает под экраном GNU 4.06.01 в xterm и может быть добавлено либо в "~/.screenrc" (влияет только на вас), либо в "/etc/screenrc" (предназначено для применения в масштабе всей системы):
# ctrlA then right-arrow-key jumps active cursor one pane to the right:
bindkey "^A^[OC" focus right
# ctrlA then left-arrow-key jumps active cursor one pane to the left:
bindkey "^A^[OD" focus left
# ctrlA then up-arrow-key jumps active cursor one pane above current:
bindkey "^A^[OA" focus up
# ctrlA then up-arrow-key jumps active cursor one pane below current:
bindkey "^A^[OB" focus down
В зависимости от вашего терминала и настроек, коды, которые вам нужно поместить после "^A", могут отличаться для вас. Чтобы определить, что это за коды, я предпочитаю использовать vim
; откройте его, а затем нажмите i, чтобы войти в режим редактирования, затем нажмите ctrl v, чтобы получить необработанный ввод, а затем нажмите соответствующую клавишу или комбинацию клавиш * **.
Когда вы используете мой подход, вам нужно довольно быстро набрать команду ctrl arrowKey; screen
прекращает прослушивание пользовательских привязок, если вы слишком долго останавливаетесь между нажатиями клавиш. Если он истекает слишком быстро, используйте :bindkey -t
вместо :bindkey
отключить таймер
* Обратите внимание, что в отличие от vim
, screen не понравится, если вы вставите фактические экранированные метасимволы в ".screenrc" или в другие файлы, которые вы можете найти; просто используйте буквальные, отдельные "^" и "[", а не странную комбинированную версию, которая vim
может выводить (по крайней мере, это, казалось, испортило мне все).
** Некоторые люди определяют специальные коды клавиш, запустив cat
(само по себе) в терминале, а затем нажмите соответствующую клавишу (и) (перед использованием ctrl c для выхода). Я не использую этот подход, поэтому YMMV.