我在tmux 1.8中遇到了这个问题:我想将status-keys
选项设置为'emacs',因为我真的不喜欢在vi模式中输入命令。但是,在.tmux.conf中添加以下行没有任何效果:
set -g status-keys emacs
当tmux重新启动时,tmux show-options -g | grep keys
表示emacs
,但实际行为是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,然后恢复原始变量),但我希望有一个干净的解决方案。
谢谢!
我遇到了这个问题,我想我刚刚解决了。您是否也在使用ZSH(Z Shell)?
我发现这篇文章说,如果你的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
如果EDITOR包含vi
,则status-key
和mode-keys
都默认为vi
,但这只是默认值(在启动期间,在处理配置文件之前)。在配置中设置这两个选项中的任何一个都应覆盖基于EDITOR的默认值。
您是否也设置了mode-keys
(用于控制copy-mode
和choose-…
命令中使用的密钥映射)?
set -gw mode-keys emacs