Execute um comando no modo zsh vim

10

Em zshdentro vim mode, eu escrevo algo

foo foo bar bar

Então eu apertei Escpara ir no modo normal e digite :

foo foo bar bar
execute: _

Então, suponho que posso fazer isso, quero pesquisar e substituir barporbaz

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

Então eu tento pressionar Enter, mas isso não funciona. Só posso voltar do executeuso de Ctrl+ c.

Como posso executar o comando?

Eu tentei isso com o meu normal .zshrce sem qualquer .zshrc.

pfnuesel
fonte

Respostas:

10

O vicmdmodo , apesar do nome, é para os comandos do modo normal do Vi. O prompt iniciado :não é para os comandos ex-mode do Vi, mas para executar os comandos do ZLE (editor de linha do 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

Pressionar Enterfuncionará quando um prefixo único for inserido (por exemplo ed, digitar , que corresponde edit-command-linee depois Enterfuncionará). Você pode pressionar Tabpara ver os comandos correspondentes.

muru
fonte
Obrigado. Uma razão para usar bashentão em vez de zsh.
Pfnuesel
@pfnuesel é? O Bash suporta o uso de comandos ex do Vi?
Muru
1
Digitando v, você pode entrar vime fazer o que puder vim.
pfnuesel
3
@pfnuesel Oh, isso. Zsh tem isso. Não está ativado por padrão. Veja unix.stackexchange.com/a/6622/70524
muru
@muru Sua resposta é um pouco enganadora. O que você está chamando de "modo vicmd" é de fato o commandmapa de teclas - esse é o "ex-like" que fornece a execute:solicitação para inserir comandos do ZLE. O vicmdmapa de teclas é para trabalhar no modo de comando no estilo vi (m). Ao usar o zsh no modo vi, você provavelmente estará alternando entre vicmde viinsda mesma maneira que você alterna entre o modo de comando e inserção no vi (m).
Wjv 11/04