Jalankan perintah dalam mode zsh vim

10

Di zshdalam vim mode, saya menulis sesuatu

foo foo bar bar

Lalu saya tekan Escuntuk masuk dalam mode dan tipe normal :

foo foo bar bar
execute: _

Lalu, saya berasumsi saya bisa melakukan itu, saya ingin mencari dan mengganti bardenganbaz

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

Lalu saya mencoba menekan Enter, tetapi itu tidak berhasil. Saya hanya bisa kembali dari executemenggunakan Ctrl+ c.

Bagaimana saya bisa menjalankan perintah?

Saya mencoba ini dengan normal .zshrcdan tanpa .zshrcsama sekali.

pnuesel
sumber

Jawaban:

10

The vicmdmodus , meskipun nama, adalah untuk perintah yang normal-mode Vi. Prompt yang dimulai :bukan untuk perintah ex-mode Vi, tetapi untuk menjalankan perintah ZLE (editor baris 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

Menekan Enterakan bekerja ketika awalan unik telah dimasukkan (mis. Katakan Anda mengetik ed, yang cocok edit-command-line, lalu Enterakan bekerja). Anda dapat menekan Tabuntuk melihat perintah yang cocok.

muru
sumber
Terima kasih. Alasan untuk menggunakan bashitu alih-alih zsh.
pfnuesel
@ pfnuesel itu? Apakah Bash mendukung menggunakan perintah ex Vi?
muru
1
Mengetik v, Anda bisa masuk vimdan melakukan apa pun yang bisa Anda lakukan vim.
pfnuesel
3
@ pfnuesel Oh, itu. Zsh memilikinya. Ini tidak diaktifkan secara default. Lihat unix.stackexchange.com/a/6622/70524
muru
@muru Jawaban Anda agak menyesatkan. Apa yang Anda sebut sebagai "mode vicmd" sebenarnya adalah commandkeymap - itulah "ex-like" yang memberi Anda execute:prompt untuk memasukkan perintah ZLE. The vicmdkeymap adalah untuk bekerja vi (m) modus perintah-gaya. Saat menggunakan zsh in vi mode, Anda mungkin akan bertukar bolak-balik antara vicmddan viinsdengan cara yang sama seperti Anda bolak-balik antara perintah dan mode insert di vi (m).
wjv