如何使zsh字导航/删除像Vim一样工作

时间:2016-11-23 10:34:31

标签: text zsh

我正在使用zsh,我希望单词导航/删除能够完全发挥其在Vim中的作用,以适应我的肌肉记忆。

在Vim中,给定文本foo ./bar baz-bob,从第一个角色开始的每个前向导航都会这样播放:

foo ./bar baz-bob
^   ^ ^   ^  ^^

在默认的zsh中,它会像这样播放:

foo ./bar baz-bob
^   ^     ^      ^

我使用WORDCHARS=${WORDCHARS//[\/-]}成功取得了一些成功。据我了解,这可以从/删除-WORDCHARS字符。 WORDCHARS是一串字符,也是单词的一部分。

foo ./bar baz-bob
^   ^ ^   ^   ^  ^

注意:我知道zsh的vi模式,但我更喜欢配置zsh的默认模式以便这样做。

2 个答案:

答案 0 :(得分:0)

您检查了this吗?您可以在没有短划线的情况下重新导出WORDCHARS环境变量。

答案 1 :(得分:0)

对于最新的MacOS Sierra + iTerm2 + oh-my-zsh,如果我在输入cd /usr/local/share/gobject-introspection-1.0后连续按 CTRL W ,则故事如下:

cd /usr/local/share/gobject-introspection-1.0
cd /usr/local/share/gobject-introspection-1.
cd /usr/local/share/gobject-introspection-
cd /usr/local/share/gobject-
cd /usr/local/share/
cd /usr/local/

我没有任何密钥绑定或其他配置文件。我不喜欢太多文件。这是我需要的.zshrc部分:

...
    bindkey -e
    bindkey '^[[1;9C' forward-word
    bindkey '^[[1;9D' backward-word
...

如果上述内容不起作用或您不喜欢,则可以在~/.zshrc上尝试:

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

或:

autoload -U select-word-style
select-word-style bash

或(I found the below a gist which referred here):

tcsh-backward-delete-word () {
  local WORDCHARS="${WORDCHARS:s#/#}"
  zle backward-delete-word
}
bindkey '^W' tcsh-backward-delete-word