Eu uso vim
basicamente todas as minhas necessidades de edição, então decidi tentar novamente o modo vi para o meu shell (atualmente ZSH w / oh-my-zsh no OS X), mas me pego tentando (e falhando) usá-lo Ctrl-R
constantemente. Qual é a ligação de chave equivalente? E para referência futura, como eu mesmo descobriria isso? Tenho certeza que eu poderia usar bind -P
no bash.
zsh
command-history
vi-mode
Hank Gay
fonte
fonte
Respostas:
Você pode executar
bindkey
sem argumentos para obter uma lista de ligações existentes, por exemplo:No modo emacs, a ligação que você deseja é
history-incremental-search-backward
, mas não está vinculada por padrão no modo vi. Para vincular Ctrl-R, você pode executar este comando ou adicioná-lo ao seu~/.zshrc
:A página de
zshzle
manual (man zshzle
) tem mais informações sobre os modos de editor de linha, bindkey e emacs / vi do zsh.fonte
zshzle
. Isso é bastante informativo e útil.Essa é uma pergunta antiga, mas a única resposta (e aceita) basicamente explica como transplantar o "emacs-like"
history-incremental-search-backward
para o modo vi. Embora isso seja perfeitamente factível e possa ser a solução certa para você, é um pouco estranho que ninguém tenha mencionado a "maneira vi" de pesquisar na história.O modo vi no zsh suporta o histórico de pesquisa usando as teclas vi / vim padrão:
/
e?
, ambas disponíveis no modo de comando. (Pressione<Esc>
para alternar do modo de inserção para o modo de comando, assim como no vi ou vim.)O sentido deles é invertido: porém, como você normalmente deseja pesquisar o histórico do seu shell ao contrário,
/
faz uma pesquisa reversa, enquanto?
faz uma pesquisa direta.Depois que o primeiro hit é exibido, você pode (como no vi / vim) usar
n
para continuar encontrando mais hits na mesma direção ouN
para reverter a direção da pesquisa.As ligações de teclas padrão relevantes no
vicmd
mapa de teclas são:fonte
"^P" history-beginning-search-backward
e"^N" history-beginning-search-forward
para o preenchimento automático do tipo vim (você começa a digitar e depois pressionactrl+p
ouctrl+n
).?
traz à tonabck-i-search
, que é exatamente o que eu estava procurando. Obrigado./
ou `? ' doesnt: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex^R
combinação de teclas. O único caractere "semelhante à regex" suportado por amboshistory-search-backward
ehistory-incremental-search-backward
é^
ancorar a sequência de pesquisa no início da linha. O poder realhistory-incremental-search-backward
é que ele faz uma pesquisa incremental, como o próprio nome sugere. Eu posso imaginar que alguém pode querer vinculá-lo novicmd
mapa de chaves por esse motivo.history-incremental-pattern-search-backward
, nãohistory-incremental-search-backward
.history-incremental-pattern-search-backwards
talvez um widget .. mas acho que ele vem instalado por padrão no zsh. Ele suportaglob
padrõesregex
que você não apontou corretamente: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . Há de fato um erro no post ..