2016-11-23 57 views
5

我正在使用zsh,我希望文字导航/删除工作,以及它在Vim中的工作方式,以适应我的肌肉记忆。如何使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的默认模式,以这种方式运行。

+0

我认为你需要的只是'WORDCHARS = $ {WORDCHARS //[//.-]}' –

+0

我刚刚测试过这个,它并没有帮助解决我的问题。光标仍然不会像vim那样停在'-'上,而且它不再停留在''.''上。 –

+0

我不能看到'WORDCHARS = $ {WORDCHARS // [\ /]}'将如何移除'-'字符。也许你想'WORDCHARS = $ {WORDCHARS // [\/- ]}'? –

回答

0

你查过this?您可以重新导出不带破折号的WORDCHARS环境变量。

+0

嗨,是的,我使用该帖子中推荐的快捷方式版本,但这并不能解决我的问题,如上所述。 http://unix.stackexchange.com/questions/48577/modifying-the-zsh-shell-word-split#comment67851_48589 –

0

对于最新的MacOS塞拉利昂+ iTerm2 + OH-MY-zsh的,如果我打字cd /usr/local/share/gobject-introspection-1.0后连续按CTRLW¯¯,那么这个故事变得像:

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 
+0

这并不像Vim中那样提供文字导航/删除功能,正如我原来的文章所述。请用上面发布的示例测试您的方法,并且您会看到结果不符合要求。 –

+0

不幸的是,这发生在我身上!很多人说ZSH更新后不会发生这种情况。请用关键短语搜索Github,你可能会发现像你这样的受害者以某种方式修复它。 –