Exécutez une commande en mode zsh vim

10

En zshdedans vim mode, j'écris quelque chose

foo foo bar bar

Ensuite, je frappe Escpour aller en mode normal et taper :

foo foo bar bar
execute: _

Ensuite, je suppose que je peux le faire, je veux rechercher et remplacer barparbaz

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

Ensuite, j'essaie d'appuyer sur Entrée, mais cela ne fonctionne pas. Je ne peux que revenir de l' executeutilisation de Ctrl+ c.

Comment puis-je exécuter la commande?

J'ai essayé cela avec mon normal .zshrcet sans aucun .zshrc.

pfnuesel
la source

Réponses:

10

Le vicmdmode , malgré son nom, est destiné aux commandes en mode normal de Vi. L'invite lancée par :n'est pas pour les commandes en mode ex de Vi, mais pour exécuter les commandes ZLE (l'éditeur de ligne 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

Appuyez sur Enterfonctionnera lorsqu'un préfixe unique a été entré (c'est-à-dire que vous tapez ed, qui correspond edit-command-line, puis Enterfonctionnera). Vous pouvez appuyer sur Tabpour voir les commandes correspondantes.

muru
la source
Merci. Une raison d'utiliser bashalors au lieu de zsh.
pfnuesel
@pfnuesel c'est? Bash prend-il en charge l'utilisation des commandes ex de Vi?
muru
1
En tapant v, vous pouvez entrer vimet faire tout ce que vous pouvez faire vim.
pfnuesel
3
@pfnuesel Oh, ça. Zsh a ça. Il n'est pas activé par défaut. Voir unix.stackexchange.com/a/6622/70524
muru
@muru Votre réponse est un peu trompeuse. Ce que vous appelez le «mode vicmd» est en fait la commandcarte des touches - c'est celle «ex-like» qui vous donne l' execute:invite pour entrer les commandes ZLE. Le vicmdclavier est pour le mode de commande de style vi (m). Lorsque vous utilisez zsh en mode vi, vous allez probablement permuter entre vicmdet viinsde la même manière que vous avancez entre le mode commande et insertion en vi (m).
wjv