如何在tmux中强制使用emacs样式的状态键?

时间:2013-08-14 19:33:49

标签: tmux

我在tmux 1.8中遇到此问题:我想将status-keys选项设置为' emacs'因为我真的不喜欢在vi模式下输入命令。但是,在.tmux.conf中添加以下行无效:

set -g status-keys emacs

重新启动tmux时,tmux show-options -g | grep keysemacs但实际行为是vi风格。

问题的根源是$EDITOR环境变量,在我的情况下它设置为vim。文件说明:

status-keys [vi | emacs]
    Use vi or emacs-style key bindings in the status line,
    for example at the command prompt.  The default is emacs,
    unless the VISUAL or EDITOR environment variables are set
    and contain the string `vi'.

显然当环境变量是" vim"它强迫vi状态键。

有没有办法覆盖这种行为,并且尽管有环境变量,但提示符仍然表现为emacs风格?我显然可以解决这个问题(比如使用其他env变量启动tmux并稍后恢复原始版本)但我希望有一个干净的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果EDITOR包含status-key,则mode-keysvi默认为vi,但这只是 默认值(在启动期间,处理配置文件)。在配置中设置这些选项中的任何一个都应该覆盖基于EDITOR的默认值。

您是否还设置mode-keys(控制copy-mode中使用的关键地图和choose-…命令)?

set -gw mode-keys emacs

答案 1 :(得分:0)

我遇到了这个问题,我想我只是想出来了。您是否偶然也使用ZSH(Z Shell)?

I found this post表示如果您的VISUAL和/或EDITOR设置为vi / vim,ZSH也会切换到“vi模式”。所以我在tmux中遇到的问题实际上是从ZSH冒出来的!

简而言之,请确保您可以在tmux之外的shell中使用emacs样式的密钥。如果您使用的是ZSH,则可以将bindkey -e添加到.zshrc以设置emacs绑定。然后在.tmux.conf

set -g mode-keys emacs
set -g status-keys emacs