zakończenie historii oh-my-zsh

45

Niedawno przeszedłem na zsh, używając robbyrussell'soh-my-zsh . Wcześniej używałem bash z wieloma niestandardowymi rzeczami i brakuje mi tylko jednej rzeczy, ponieważ zsh próbuje być „zbyt inteligentny”:

Jeśli napiszę, git commita następnie zsh przejdzie przez wszystkie ostatnie gitpolecenia. Jednak tak naprawdę chcę przejrzeć wszystkie polecenia zaczynające się od git commit(nie tylko git).

Jak mogę osiągnąć to zachowanie w (oh-my-) zsh?

Patrick Oscity
źródło
Dziwne, używam OMZSH i tak się zachowuje. Czy masz „plugins = (git)” w swoim zshrc?
Chris2048
tak, robię to, ale nie dotyczy to tylko git, wszystkie polecenia są wykonywane w ten sposób.
Patrick Oscity,
Na Ubuntu patrz superuser.com/a/1490192/131522
Mixel

Odpowiedzi:

66

Rozwiązanie mojego problemu znalazłem w dokumentacji ZSH . Oh-my-zsh wydaje się mapować klucze i klucze do czegoś podobnego

bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward

Co daje dokładne zachowanie, które opisałem powyżej. Dokumentacja ZSH opisuje zachowanie history-search-backwardas

Wyszukaj w historii wiersz wstecz rozpoczynający się od pierwszego słowa w buforze .



Zamiast tego chciałem uzyskać następujące mapowanie, które wstawiłem do mojego ~/.zshrc:

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward

Zachowanie history-beginning-search-backwardjest następujące:

Wyszukaj w historii linię rozpoczynającą się od bieżącej linii aż do kursora . Pozostawia to kursor w pierwotnej pozycji.

Ponadto, jeśli \e[Anie działa dla strzałek w górę lub w dół, naciśnij <ctrl-v><KEY (e.g., up arrow)>inny terminal, który daje ^[OA. Następnie możesz użyć tego zamiast \e[A. Proces jest opisany tutaj: http://zshwiki.org/home/zle/bindkeys

Patrick Oscity
źródło
1
Dziekuję Dziekuję Dziękuję!!
Zwariowałem
Dla użytkowników spoza OMZ, takich jak ja: bindkeynie robi nic prawdziwego z powodu błędu, więc zespół OMZ załatał to za pomocą tej wtyczki . Po prostu pobierz go i zrób to wcześniej bindkey.
Franklin Yu,
@FranklinYu, zdajesz sobie sprawę, że to całkowity bs, prawda? ta wtyczka nie robi nic z bindkey oprócz USE, aby przechwycić niektóre zdarzenia.
nonchip
Wow, to jest idealne!
Wiewiórka
12

Chciałem tego samego zachowania dla Zsh z oh-my-zshzainstalowaną i znalezioną wtyczką history-substring-search.

Osiągnąłem to samo zachowanie opisane powyżej, dodając wtyczkę do mojego ~/.zshrc:

plugins=(git brew npm history-substring-search)

Wydaje mi się, że ta wtyczka nie istniała, kiedy pojawiło się to pytanie. Po prostu alternatywny sposób na osiągnięcie tego samego.

dcusan
źródło