J'utilise vim
essentiellement pour tous mes besoins de montage, alors j'ai décidé d'essayer à nouveau vi-mode pour mon shell (actuellement ZSH avec oh-my-zsh sur OS X), mais je me suis retrouvé à essayer (et à ne pas utiliser) de façon Ctrl-R
constante. Quelle est la clé équivalente? Et pour référence future, comment pourrais-je comprendre cela moi-même? Je suis sûr que je pourrais utiliser bind -P
bash.
zsh
command-history
vi-mode
Hank Gay
la source
la source
Réponses:
Vous pouvez exécuter
bindkey
sans arguments pour obtenir une liste des liaisons existantes, par exemple:En mode Emacs, la liaison souhaitée est
history-incremental-search-backward
, mais elle n’est pas liée par défaut en mode vi. Pour lier Ctrl-R vous-même, vous pouvez exécuter cette commande ou l'ajouter à votre~/.zshrc
:La
zshzle
page de manuel (man zshzle
) contient plus d’informations sur l’éditeur de ligne de zsh, les méthodes bindkey et emacs / vi.la source
zshzle
. C'est assez informatif et utile.C'est une question ancienne, mais la seule réponse (et acceptée) indique en gros comment transplanter le mode “emacs-like”
history-incremental-search-backward
en mode vi. Bien que cela soit parfaitement faisable et constitue peut-être la bonne solution pour vous, il est un peu étrange que personne n'ait mentionné la «méthode vi» de recherche de l'histoire.Le mode vi dans zsh prend en charge la recherche dans l'historique à l'aide des touches standard vi / vim:
/
et les?
deux disponibles en mode commande. (Appuyez sur<Esc>
pour passer du mode insertion au mode commande, comme dans vi ou vim.)Cependant, leur sens est inversé: puisque vous souhaitez généralement rechercher l'historique de votre shell à l'envers,
/
effectuez une recherche inverse tout en effectuant?
une recherche en aval.Une fois que le premier résultat est affiché, vous pouvez (comme dans vi / vim) utiliser
n
pour continuer à rechercher plus de résultats dans la même direction, ouN
pour inverser le sens de la recherche.Les raccourcis clavier par défaut pertinents dans le
vicmd
clavier sont les suivants:la source
"^P" history-beginning-search-backward
et"^N" history-beginning-search-forward
pour l'auto-complétion de type vim (vous commencez à taper, puis appuyez surctrl+p
ouctrl+n
).?
apportebck-i-search
, qui est exactement ce que je cherchais. Je vous remercie./
ou "?" ne marche^R
raccourci clavier. Le seul caractère «ressemblant à une expression régulière» pris en charge par les deuxhistory-search-backward
ethistory-incremental-search-backward
consiste^
à ancrer la chaîne de recherche au début de la ligne. Le vrai pouvoir de,history-incremental-search-backward
c'est qu'il effectue une recherche incrémentale, comme son nom l'indique. J'imagine que l'on pourrait vouloir le lier dans lavicmd
table de touches pour cette raison.history-incremental-pattern-search-backward
, pashistory-incremental-search-backward
.history-incremental-pattern-search-backwards
peut-être un widget .. mais je pense qu'il est installé par défaut dans zsh. Il prend en charge desglob
modèles qui ne correspondent pas à ceregex
que vous avez indiqué correctement: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . Il y a bien une erreur dans le post ..