Copia y pega esto en tu .zshrc
:
Los cursores están usando la historia local:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Si necesita también combinaciones de teclas ( CTRL+ cursores) para recorrer el historial global, agregue también esto a su .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Para que esto funcione, la opción SHARE_HISTORY (ver 16.2.4 Historial ) debe estar habilitada. Ejecute setopt
y verifique si "sharehistory" aparece en la lista. Si no agrega setopt sharehistory
a su .zshrc
. Entonces uno puede usar set-local-history como lo hicimos anteriormente. La documentación dice:
De forma predeterminada, los comandos de movimiento del historial visitan las líneas importadas, así como las líneas locales, pero puede activarlo y desactivarlo con el enlace zle set-local-history. También es posible crear un widget zle que hará que algunos comandos ignoren los comandos importados, y algunos los incluyan.
Tenga en cuenta que, de manera predeterminada, se utiliza el historial global (y todas las funciones terminan con "zle set-local-history 0", es decir, el historial local está desactivado). Por lo tanto, presionar CTRL+ Rbuscará el historial global de forma predeterminada (lo que tiene sentido en la mayoría de los casos).
Esto es bastante similar a la solución de @mpy, pero está listo para copiar y pegar. Sobrescribe las teclas del cursor hacia arriba y hacia abajo. Usé esta entrada de la lista de correo .
Ver también:
${key[Up]}
. Luego (en modo de edición), escriba Ctrl + V seguido de la flecha hacia arriba. Esto debería insertar el código clave correcto. Haga lo mismo para la flecha hacia abajo.Ctrl+R
.Puede configurar un widget zle especial para mostrar solo elementos del historial local:
Suponiendo que ↑está vinculado a
up-line-or-history
(creo que es el predeterminado), puede vincular este widget a otro golpe de tecla, como CTRL+ ↑:Si esto funciona probablemente depende de su terminal. Por encima de la línea funciona en
URxvt/Screen
. Conxterm
lo que necesitaráspara CTRL+ ↑.
Otra variante podría ser
por lo tanto, si tiene habilitado el historial local, puede echar un vistazo al global o viceversa.
fuente
La respuesta de @ lumbic funcionó para mí solo con algunos cambios:
Este código hace que el historial global sea el predeterminado y utiliza la flecha CTRL para el historial local.
Nota: Yo uso zsh 5.0.2 junto con oh-my-zsh.
fuente
Ctrl+arrows
para la historia local.He estado probando las opciones enumeradas en otras respuestas aquí, pero no estaba contento con ellas. Los widgets 1
up-history
oup-line-or-history
no incluyen la búsqueda de inicio y el widget 1up-line-or-beginning-search
parece no funcionar bien cuando se modifica la preferencia del historial local mientras se usa. 2Entonces llegué a la siguiente configuración. Habilita las Ctrlflechas + para explorar el historial global, las Altflechas + para explorar solo el historial local (similar a Bash) y las flechas independientes para usar la búsqueda inteligente de inicio (predeterminada en Oh My Zsh ).
1 Sus
down
contrapartes también están implícitas.2 El principio utilizado para buscar se redefine después de alterar las preferencias del historial local, por lo que todo el primer comando encontrado se usa como el principio que se buscará en la segunda búsqueda.
fuente
Basado en las diversas respuestas aquí, pude hacer una versión condensada:
Esta versión será sobrescribir los existentes
up-line-or-history
ydown-line-or-history
widgets con nuevos widgets definidos por el usuario. Este widget habilita el historial local y luego llamará a los widgets originales , que están disponibles bajo los.
nombres prefijados. Consulte la documentación del widget zle para más detalles.Esto significa que puede mantener cualquier combinación de teclas existente. Por lo tanto, puede evitar tener que averiguar cuál es la secuencia de escape para escribir una flecha hacia arriba en su terminal actual.
fuente
La respuesta anterior funcionó para mí.
Referencia: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
fuente