2

Я настроил tmux чтобы пропустить слова по Ctrl+ вправо / влево:

set-window-option -g xterm-keys on

Он работает просто отлично, но, как и SSH, он не работает и печатает ;5D или ;5C ..

Та же проблема возникла, когда я использовал screen , есть ли какая-то конкретная конфигурация для tmux/screen в SSH?

1 ответ1

5

Это не tmux и не экран, который "пропускает слова"; ввод текста обеспечивается вашей оболочкой. Поэтому вы должны выяснить, какую последовательность клавиш генерируют Ctrl+ стрелки, и научить свою оболочку, что означает "пропустить слово". В противном случае он прекратит интерпретацию средней последовательности, потому что он не распознается.

Если вы используете bash, он берет некоторые определения ключей из ncurses/terminfo, а другие из файла "inputrc". Поэтому сначала убедитесь, что у вас установлены определения терминалов ncurses («ncurses-term» или аналогичный). И если у вас есть пользовательский ~/.inputrc , скажите ему импортировать общесистемный, используя:

$include /etc/inputrc

Если это не поможет, добавьте пользовательское сопоставление в файл ~/.inputrc (конечно, на сервере):

  1. В bash нажмите Ctrl V (клавиша "дословный ввод"), а затем Ctrl . Вы увидите escape-последовательность «Ctrl + вправо», вставленную в виде простого текста:

    ^[[1;5C
    

    ^[ Означает символ "ESC"; остальные - простой текст. Так что это ESC [ 1 ; 5 C .

  2. В man bash найдите команду inputrc ("readline") для пропуска слова. (Это forward-word .)

  3. В ~/.inputrc добавьте последовательность клавиш и команду. ("ESC" пишется как \e .)

    "\e[1;5C": forward-word
    
  4. Повторите то же самое для Ctrl .

  5. Закройте ssh, затем подключитесь снова и посмотрите, работает ли он.

Обратите внимание, что большинство дистрибутивов уже имеют эти конкретные отображения в /etc/inputrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .