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: