Skopiuj i wklej to do .zshrc
:
Kursory używają historii lokalnej:
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
Jeśli potrzebujesz również powiązań klawiszy ( CTRL+ kursorów), aby przejść przez historię globalną, dodaj również to do .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Aby to zadziałało, należy włączyć opcję SHARE_HISTORY (patrz 16.2.4 Historia ). Uruchom setopt
i sprawdź, czy na liście znajduje się „sharehistory”. Jeśli nie, dodaj setopt sharehistory
do .zshrc
. Następnie można użyć ustawionej historii lokalnej, jak to zrobiliśmy powyżej. Dokumentacja mówi:
Domyślnie polecenia ruchu historii odwiedzają zarówno linie importowane, jak i linie lokalne, ale można to włączać i wyłączać za pomocą wiązania zle set-local-history. Możliwe jest również utworzenie widgetu zle, który spowoduje, że niektóre polecenia będą ignorować zaimportowane polecenia, a niektóre dołączą je.
Zauważ, że domyślnie używana jest historia globalna (a wszystkie funkcje kończą się na „zle set-local-history 0”, tzn. Historia lokalna jest wyłączona). Więc naciśnięcie CTRL+ Rprzeszuka domyślnie historię globalną (co ma sens w większości przypadków).
Jest to dość podobne do rozwiązania @mpy, ale gotowe do kopiowania i wklejania. Nadpisuje klawisze kursora w górę i w dół. Użyłem tego wpisu na liście mailowej .
Zobacz też:
${key[Up]}
. Następnie (w trybie edycji) wpisz Ctrl + V, a następnie strzałkę w górę. To powinno wstawić poprawny kod klucza. Zrób to samo dla strzałki w dół.Ctrl+R
.Możesz skonfigurować specjalny widget zle, aby wyświetlał tylko elementy historii lokalnej:
Zakładając, że ↑jest to związane
up-line-or-history
(myślę, że jest to ustawienie domyślne), możesz powiązać ten widget z innym naciśnięciem klawisza, na przykład CTRL+ ↑:Jeśli to zadziała, prawdopodobnie zależy od twojego terminala. Linia powyżej działa w
URxvt/Screen
. Zxterm
tym będziesz potrzebowaćdla CTRL+ ↑.
Innym wariantem może być
więc jeśli masz włączoną historię lokalną, możesz zajrzeć do globalnej lub odwrotnie.
źródło
Odpowiedź @ lumbic działała dla mnie tylko z kilkoma zmianami:
Ten kod sprawia, że historia globalna jest domyślna i używa strzałki CTRL do historii lokalnej.
Uwaga: używam zsh 5.0.2 razem z oh-my-zsh.
źródło
Ctrl+arrows
dla lokalnej historii.Próbowałem opcji wymienionych w innych odpowiedziach tutaj, ale nie byłem z nich zadowolony. Widżety 1
up-history
lubup-line-or-history
nie zawierają wyszukiwania początkowego, a widżet 1up-line-or-beginning-search
wydaje się nie działać dobrze podczas zmiany preferencji historii lokalnej podczas korzystania z niego. 2)Więc doszedłem do następujących ustawień. Umożliwia Ctrlstrzałkom + przeglądanie historii globalnej, Altstrzałkom + przeglądanie tylko historii lokalnej (podobnej do Bash), a strzałkom niezależnym korzystanie z inteligentnego wyszukiwania początkowego (domyślnie w Oh My Zsh ).
1 Ich
down
odpowiedniki również są rozumiane w sposób dorozumiany.2 Początek wyszukiwania jest redefiniowany po zmianie preferencji historii lokalnej, więc całe pierwsze znalezione polecenie jest używane jako początek do wyszukiwania w drugim wyszukiwaniu.
źródło
Na podstawie różnych odpowiedzi tutaj mogłem stworzyć wersję warunkową:
Ta wersja zastąpi istniejące
up-line-or-history
idown-line-or-history
widżety nowymi widgetami zdefiniowanymi przez użytkownika. Ten widget włącza historię lokalną, a następnie wywołuje oryginalne widżety, które są dostępne pod.
prefiksowanymi nazwami. Zobacz dokumentację widgetu zle .Oznacza to, że możesz zachować wszystkie istniejące skróty klawiszowe. Możesz zatem uniknąć konieczności wymyślania sekwencji ucieczki podczas wpisywania strzałki w górę w bieżącym terminalu.
źródło
Powyższa odpowiedź działała dla mnie.
Odniesienie: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
źródło