Lo uso vim
esencialmente para todas mis necesidades de edición, así que decidí probar una vez más el modo vi para mi shell (actualmente ZSH w / oh-my-zsh en OS X), pero me encuentro intentando (y fallando) usarlo Ctrl-R
constantemente. ¿Cuál es la combinación de teclas equivalente? Y para referencia futura, ¿cómo lo resolvería yo mismo? Estoy bastante seguro de que podría usar bind -P
en bash.
zsh
command-history
vi-mode
Hank Gay
fuente
fuente
Respuestas:
Puede ejecutar
bindkey
sin argumentos para obtener una lista de enlaces existentes, por ejemplo:En el modo emacs, el enlace que desea es
history-incremental-search-backward
, pero no está vinculado por defecto en el modo vi. Para enlazar Ctrl-R usted mismo, puede ejecutar este comando o agregarlo a su~/.zshrc
:La página de
zshzle
manual (man zshzle
) tiene más información sobre los modos editor de línea, bindkey y emacs / vi de zsh.fuente
zshzle
. Eso es bastante informativo y útil.Esta es una pregunta antigua, pero la única respuesta (y aceptada) básicamente le dice a uno cómo trasplantar el modo "emacs-like"
history-incremental-search-backward
a vi. Si bien esto es perfectamente factible y puede ser la solución adecuada para usted, es un poco extraño que nadie haya mencionado la "forma vi" de buscar en el historial.El modo vi en zsh admite el historial de búsqueda utilizando las teclas estándar vi / vim:
/
y?
ambas disponibles en modo comando. (Presione<Esc>
para cambiar del modo insertar al modo comando, como en vi o vim)Sin embargo, su sentido se invierte: dado que generalmente desea buscar el historial de su shell en reversa,
/
realiza una búsqueda inversa mientras que?
realiza una búsqueda hacia adelante.Una vez que se muestra el primer hit, puede (al igual que en vi / vim) usar
n
para continuar encontrando más hits en la misma dirección, oN
para invertir la dirección de la búsqueda.Las asociaciones de teclas predeterminadas relevantes en el mapa de teclas
vicmd
son:fuente
"^P" history-beginning-search-backward
y"^N" history-beginning-search-forward
para autocompletar como vim (comienza a escribir, luego presionactrl+p
octrl+n
).?
aparecebck-i-search
, que es exactamente lo que estaba buscando. Gracias./
o `? ' doesnt: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex^R
combinación de teclas. El único carácter "tipo regex" compatible con amboshistory-search-backward
yhistory-incremental-search-backward
es^
, anclar la cadena de búsqueda al comienzo de la línea. El verdadero poder dehistory-incremental-search-backward
es que realiza una búsqueda incremental, como su nombre lo indica. Me imagino que uno podría querer vincularlo en elvicmd
mapa de teclas por esa razón.history-incremental-pattern-search-backward
, nohistory-incremental-search-backward
.history-incremental-pattern-search-backwards
tal vez un widget ... pero creo que viene instalado por defecto en zsh. Admiteglob
patrones noregex
como usted señaló correctamente: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . De hecho, hay un error en la publicación ..