Ejecuta un comando en modo zsh vim

10

En zshadentro vim mode, escribo algo

foo foo bar bar

Luego presiono Escpara ir en modo normal y escribo :

foo foo bar bar
execute: _

Entonces, supongo que puedo hacer eso, quiero buscar y reemplazar barconbaz

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

Luego trato de presionar Enter, pero eso no funciona. Solo puedo volver del executeuso de Ctrl+ c.

¿Cómo puedo ejecutar el comando?

Intenté esto con mi normalidad .zshrcy sin ninguna .zshrc.

pfnuesel
fuente

Respuestas:

10

El vicmdmodo , a pesar del nombre, es para los comandos de modo normal de Vi. La solicitud iniciada :no es para los comandos en modo ex de Vi, sino para ejecutar los comandos ZLE (editor de línea de 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

Presionar Enterfuncionará cuando se haya ingresado un prefijo único (es decir, digamos que escribe ed, que coincide edit-command-line, y luego Enterfuncionará). Puede presionar Tabpara ver los comandos coincidentes.

muru
fuente
Gracias. Una razón para usar bashentonces en lugar de zsh.
pfnuesel 05 de
@pfnuesel es? ¿Bash admite el uso de los comandos ex de Vi?
muru
1
Al escribir v, puede ingresar vimy hacer lo que sea que pueda hacer vim.
pfnuesel
3
@pfnuesel Oh, eso. Zsh tiene eso. No está habilitado por defecto. Ver unix.stackexchange.com/a/6622/70524
muru
@muru Tu respuesta es un poco engañosa. Lo que se refiere como el "modo vicmd" es, de hecho, el mapa de teclas command, que es el "ex-like" que le da el execute:aviso para ingresar comandos ZLE. El vicmdmapa de teclas es para trabajar en modo de comando estilo vi (m). Cuando use zsh en modo vi, es probable que cambie de un lado a otro vicmdy viinsde la misma manera que retrocede un comando entre y el modo de inserción en vi (m).
wjv