在zsh vim模式下执行命令


10

zshvim mode,我写点东西

foo foo bar bar

然后我Esc按一下进入正常模式并输入 :

foo foo bar bar
execute: _

然后,我想我可以做到,我想搜索并替换barbaz

foo foo bar bar
execute: s/bar/baz/g_

然后,我尝试按Enter键,但这不起作用。我只能从execute使用Ctrl+返回c

如何执行命令?

我以正常方式尝试了这一点,.zshrc没有任何尝试.zshrc

Answers:


10

vicmd模式(尽管有名称)适用于Vi的正常模式命令。开始提示:不是针对Vi的ex-mode命令,而是针对运行ZLE(Zsh的行编辑器)命令的提示

$ echo foo
execute: e_
edit-command-line          emacs-forward-word         end-of-history             end-of-line-hist           exchange-point-and-mark    execute-named-cmd          expand-history             expand-or-complete-prefix
emacs-backward-word        end-of-buffer-or-history   end-of-line                end-of-list                execute-last-named-cmd     expand-cmd-path            expand-or-complete         expand-word

Enter将工作时,唯一的前缀已经输入(例如,假设你键入ed,它匹配edit-command-line,然后Enter将工作)。您可以按Tab查看匹配的命令。


谢谢。使用bashthen代替的原因zsh
pfnuesel

@pfnuesel是吗?Bash是否支持使用Vi的ex命令?
muru 16-4-5

1
键入v,您可以输入vim并执行您可以做的任何事情vim
pfnuesel

3
@pfnuesel哦,那。Zsh有。默认情况下未启用。参见unix.stackexchange.com/a/6622/70524
muru

@muru您的回答有点误导。实际上,您所说的“ vicmd模式”是command键盘映射,它是“类似ex的”,它会execute:提示您输入ZLE命令。的vicmd键映射对第六工作(M)式的命令模式。当在vi模式下使用的zsh,你很可能会被交换之间来回vicmd,并viins以同样的方式,你在六(M)命令模式和插入移动回一个来回。
wjv 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.