我怎样才能使ctrl +向左/向右键在tmux中按整个单词移动?


100

在zsh和bash中,ctrl + arrows允许我按整个单词移动要输入的位置,但这在tmux中不起作用,这是一个问题,因为当前我每次打开外壳程序时都会自动启动它。

我怎样才能解决这个问题?

Answers:


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重新加载〜/ .tmux.conf文件或在tmux的:-prompt中设置操作时,这才对我有用,而最初在我打开tmux时不起作用。有什么想法可能是那里的问题吗?
AME

@AME关闭所有tmux会话,然后重试。
弥敦道

如果重新加载配置不能解决问题(我就是这种情况),请尝试一个新的会话。也许您需要终止当前会话并创建一个新会话。使它在窗格(而不是会话)中生效的另一种方法是Cb:respawn-pane -k
fstang

这大部分对我有用。我不知道为什么默认情况下不启用它?
inetknght

set-window-option -g xterm-keys on在我看来,终止会话或执行任何操作均无济于事。
noraj

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

在控制台上给了我一些提示并给了我Ctrl- Left/Right但是在vim上它仍然有不同的响应。

解除绑定键似乎没有帮助。

事实证明,在某个时候,我已将默认终端设置为屏幕(set-option -g default-terminal "screen"in .tmux.conf

将其更改为以下内容给了我Ctrl- Left/Right其他方面:

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

希望能帮助到别人。


1
除此之外,这会破坏vim,
tig

1
另请参见unix.stackexchange.com/a/1098/250,以获取有关在tmux中设置TERM的建议
phunehehe

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中的系统偏好设置已由任务控制使用。取消选中这些,然后允许正确的绑定在iTerm2和Tmux中工作

系统偏好设定

取消选中所有引用控制键的项目,可以使绑定正常工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.