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を使用しないと戻ることができません。Ctrlc

コマンドを実行するにはどうすればよいですか?

私はこれを私の通常の状態で.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-lineEnter機能します)。を押しTabて、一致するコマンドを表示できます。


ありがとう。のbash代わりにthen を使用する理由zsh
pfnuesel

@pfnueselですか?BashはViのexコマンドの使用をサポートしていますか?
muru

1
入力するとv、入力vimした内容を何でも実行できますvim
pfnuesel

3
@pfnueselああ、それ。Zshはそれを持っています。デフォルトでは有効になっていません。unix.stackexchange.com/a/6622/70524を
muru

@muruあなたの答えは少し誤解を招くものです。「vicmdモード」と呼んでいるのは、実際にはcommandキーマップです。これは、execute:ZLEコマンドを入力するためのプロンプトを表示する「元のような」ものです。vicmdキーマップである VI(M)スタイルのコマンドモードを操作するため。viのモードでのzshを使用している場合、あなたはおそらくの間で前後にスワップすることがありますvicmdし、viins多くの中であなたが戻ってコマンドおよびVI(M)での挿入モードの間で前後に移動するのと同じように。
wjv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.