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

  • 本文关键字:emacs 样式 状态 tmux tmux
  • 更新时间 :
  • 英文 :


我在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-keymode-keys都默认为vi,但这只是默认值(在启动期间,在处理配置文件之前)。在配置中设置这两个选项中的任何一个都应覆盖基于EDITOR的默认值。

您是否也设置了mode-keys(用于控制copy-modechoose-…命令中使用的密钥映射)?

set -gw mode-keys emacs

最新更新