Выполнить команду в режиме zsh vim


10

Во zshво vim mode, я пишу что-то

foo foo bar bar

Затем я нажимаю, Escчтобы перейти в нормальный режим и введите :

foo foo bar bar
execute: _

Затем, я предполагаю, что могу это сделать, я хочу найти и заменить barнаbaz

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

Затем я пытаюсь нажать Enter, но это не работает. Я могу только вернуться от executeиспользования Ctrl+ c.

Как я могу выполнить команду?

Я попробовал это с моим нормальным .zshrcи без каких-либо .zshrcвообще.

Ответы:


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чтобы увидеть соответствующие команды.


Спасибо. Причина использования bashтогда вместо zsh.
pfnuesel

@pfnuesel это? Поддерживает ли Bash использование ex-команд Vi?
Муру

1
Набрав v, вы можете войти vimи сделать все, что вы можете в vim.
pfnuesel

3
@pfnuesel Ох, это. У Zsh есть это. Это не включено по умолчанию. См. Unix.stackexchange.com/a/6622/70524
Muru,

@muru Ваш ответ немного вводит в заблуждение. То, что вы называете «режимом vicmd», на самом деле является картой ключей command- это «бывшая подобная » карта, которая дает вам execute:подсказку для ввода команд ZLE. Карта vicmdключей предназначена для работы в командном режиме vi (m) -style. При использовании zsh в режиме vi вы, скорее всего, будете переключаться между режимами vicmdи viinsпочти так же, как вы перемещаетесь вперед и назад между режимом команды и вставки в vi (m).
июня
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.