Как перейти к следующему или предыдущему слову с помощью клавиш CTRL + стрелка в консоли?

11

В приложениях эмуляции терминала нажатие кнопок CTRL+ Left/ позволяет Rightперейти от одного слова к предыдущему или следующему. Возможно ли иметь такую ​​же функциональность в консоли Linux, будь то в текстовом или в режиме кадрового буфера?

В моей конфигурации CTRLклавиши со стрелками + преобразуются в экранированные последовательности символов и не интерпретируются.

Педро Пальто
источник

Ответы:

8

Это возможно , если и только если терминал посылает различные управляющие последовательности для Ctrl+ Leftпротив Left. Это не так по умолчанию на консоли Linux (по крайней мере, на моей машине). Вы можете сделать это, изменив раскладку клавиатуры. Точный файл для изменения может зависеть от вашего дистрибутива; в Debian lenny файл для изменения есть /etc/console/boottime.kmap.gz. Вам нужны строки, такие как

control keycode 105 = F100
string F100 = "\033O5D"
control keycode 106 = F101
string F101 = "\033O5C"

Вы также можете выбрать те же escape-последовательности, что и у вашего эмулятора X-терминала. Чтобы узнать, что такое управляющая последовательность, введите Ctrl+ V Ctrl+ Leftв оболочке; это вставляет (на моей машине), ^[O5Dгде ^[находится escape-символ. В файле раскладки \033представляет экранирующий символ.

Конфигурирование приложения в терминале для декодирования escape-последовательности является отдельной проблемой.

Жиль "ТАК - перестань быть злым"
источник
Вы только объясняете, как вы получили "\033O5D"код, но полностью опускаете, откуда вы взяли keycode 105и F100коды. Кроме того, я получаю ^[[1;5Bи ^[[1;5Aдля Ctrl + Down и Ctrl + Up. Как мне справиться с этой 1;частью?
Мартин Вегтер
1
@MartinVegter Проверьте существующий файл на наличие кодов клавиш или используйте showkeyпрограмму. 1;Часть не отличается от остальных: "\033[1;5B"и так далее.
Жиль "ТАК - перестань быть злым"
ОК, keycode 105можно найти с помощью showkey. Но где ты взял F100?
Мартин Вегтер
@MartinVegter Выберите тот, который еще не используется. По-разному для каждого брелка (я просто исправил опечатку в своем ответе).
Жиль "ТАК - перестань быть злым"
24

Ярлыки в стиле Emacs Alt+ f, Alt+ bработают по умолчанию со всеми программами командной строки с поддержкой readline , такими как оболочки.

Алекс
источник
2

Вы можете установить vim в качестве редактора командной строки, а затем нажать ESC и перейти к стилю vim (вперед, назад, конец, $, 0 и т. Д.)


источник
-1

У меня была эта проблема в Debian с пустым ~/.inputrcфайлом. Исправлена ​​проблема с удалением этого файла.

Talkerbox
источник