Używam vim
zasadniczo wszystkich moich potrzeb edycyjnych, więc postanowiłem jeszcze raz spróbować trybu vi dla mojej powłoki (obecnie ZSH w / oh-my-zsh w OS X), ale próbuję (i nie udaje mi się) używać Ctrl-R
ciągle. Jakie jest równoważne przypisanie klucza? A na przyszłość, jak bym to wymyślił? Jestem pewien, że mógłbym użyć bind -P
w bashu.
zsh
command-history
vi-mode
Hank Gay
źródło
źródło
Odpowiedzi:
Możesz uruchomić
bindkey
bez argumentów, aby uzyskać listę istniejących powiązań, np .:W trybie emacs pożądanym wiązaniem jest
history-incremental-search-backward
, ale domyślnie nie jest ono powiązane w trybie vi. Aby samodzielnie powiązać Ctrl-R, możesz uruchomić to polecenie lub dodać je do~/.zshrc
:zshzle
Podręcznika (man zshzle
) ma więcej informacji na temat linii edytora zsh, w bindkey i emacs / VI trybach.źródło
zshzle
. To jest dość pouczające i przydatne.To starożytne pytanie, ale jedyna (i zaakceptowana) odpowiedź w zasadzie mówi, jak przeszczepić „emacs-like”
history-incremental-search-backward
do trybu vi. Chociaż jest to całkowicie wykonalne i może być właściwym rozwiązaniem dla ciebie, to trochę dziwne, że nikt nie wspomniał o „vi” sposobie przeszukiwania historii.Tryb vi w zsh obsługuje historię wyszukiwania przy użyciu standardowych klawiszy vi / vim:
/
i?
oba są dostępne w trybie komend. (Naciśnij,<Esc>
aby przełączyć z trybu wstawiania do trybu poleceń, tak jak w vi lub vim.)Ich sens jest jednak odwrotny: ponieważ zwykle chcesz przeszukiwać historię powłoki w odwrotnej kolejności,
/
wykonuje wyszukiwanie do tyłu, podczas?
gdy do przodu.Po wyświetleniu pierwszego trafienia możesz (podobnie jak w vi / vim) użyć,
n
aby kontynuować znajdowanie kolejnych trafień w tym samym kierunku lubN
odwrócić kierunek wyszukiwania.Odpowiednie domyślne skróty klawiszowe w
vicmd
mapie klawiszy to:źródło
"^P" history-beginning-search-backward
i"^N" history-beginning-search-forward
do autouzupełniania podobnego do vima (zaczynasz pisać, a następnie naciskaszctrl+p
lubctrl+n
).?
porusza tematbck-i-search
, którego dokładnie szukałem. Dziękuję Ci./
lub `? ' doesnt: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex^R
wiązanie klawiszy. Jedynym „regex-like” znak obsługiwane przez obiehistory-search-backward
ihistory-incremental-search-backward
to^
, aby zakotwiczyć wyszukiwany ciąg do początku linii. Prawdziwą siłąhistory-incremental-search-backward
jest to, że dokonuje wyszukiwania przyrostowego, jak sugeruje jego nazwa. Mogę sobie wyobrazić, żevicmd
z tego powodu można powiązać to w mapie klawiszy.history-incremental-pattern-search-backward
, niehistory-incremental-search-backward
.history-incremental-pattern-search-backwards
może widget .. ale myślę, że jest domyślnie instalowany w Zsh. Obsługujeglob
wzorceregex
niepoprawnie wskazane: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . Rzeczywiście jest błąd w poście ..