Как я могу сделать Ctrl + левую / правую клавиши для перемещения по всему слову в Tmux?


100

Как в zsh, так и в bash, стрелки ctrl + позволяют мне перемещать позицию, на которой я набираю текст, на целое слово, но это не работает в tmux, что является проблемой, так как в настоящее время я запускаю его автоматически каждый раз, когда открываю оболочку ,

Как я могу это исправить?

Ответы:


130
  1. Отредактируйте ~/.tmux.confи добавьте строки:

    set-window-option -g xterm-keys on
    
  2. Если вы еще не хотите сделать его постоянным, выполните:

    C-b :set-window-option xterm-keys on
    
  3. Перезагрузите ваш конфиг в tmux, выполнив:

    C-b :source-file ~/.tmux.conf
    

Больше информации здесь :


2
Странно: это работает для меня, только если я перезагружаю файл ~ / .tmux.conf из tmux или устанавливаю действие в: -prompt tmux, а не при открытии tmux. Есть идеи, в чем может быть проблема?
AME

@AME закройте все сеансы tmux и повторите попытку.
Натан

Если перезагрузка конфигурации не решает проблему (это так для меня), попробуйте новый сеанс. Может быть, вам нужно убить текущий сеанс и создать новый. Другой вариант, чтобы он вступил в силу в панели (не в сеансе), это Cb: respawn-pane -k
fstang

Это сработало для меня, в основном. Интересно, почему он не включен по умолчанию?
inetknght

Убить сеанс или что-то set-window-option -g xterm-keys onеще ничего не делает в моем случае.
Норай

8
set-window-option -g xterm-keys on

Получил мне некоторый путь туда и дал мне Ctrl- Left/Rightна консоли, но он по-прежнему реагировал по-другому в vim.

Отмена связывания ключей, похоже, не помогла.

Оказалось, что в какой-то момент я установил свой терминал по умолчанию на экран ( set-option -g default-terminal "screen"в .tmux.conf)

Изменение этого к следующему дало мне Ctrl- Left/Rightво всем остальном:

set-option -g default-terminal "xterm-256color"

Надеюсь, это кому-нибудь поможет.


1
За исключением того, что это нарушает цвета в vim, tig и, вероятно, целой куче других вещей ...
koniiiik

1
см. также unix.stackexchange.com/a/1098/250 за советом против установки TERM в
Tmux,

3

Для msys2 / Cygwin / mintty:

Добавьте ниже к ~/.inputrc.

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Перезагрузка заставит tmux работать правильно.


2

Я не уверен, но это может быть потому, что tmuxпо умолчанию связывает, C-<up/down/left/right>чтобы сместить фокус на панель выше / ниже / слева от / справа от текущей фокусированной панели. Если вы не часто пользуетесь панелями, возможно, вы не заметили эту функцию. Если проблема именно в этом, вы можете отсоединить эти ключи, сказав:

unbind C-Left
unbind C-Right

Этого может быть достаточно само по себе , или вам может понадобиться вручную снова связать их с тем, что вы хотите, чтобы они делали, с помощью:

bind -n C-Left <the action you want>
bind -n C-Right <other action you want>

1
Этого должно быть достаточно, если он не захвачен tmux, он должен перейти на оболочку.
Роб

0

Для меня ключи не были связаны правильно, потому что системные настройки в High Sierra были настроены на использование Mission Control. Если снять эти флажки, правильные привязки будут работать в iTerm2 и Tmux.

Системные настройки

Снятие отметки со всех элементов, ссылающихся на управляющую клавишу, позволило привязкам работать правильно

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.