Przełączaj między dopasowaniami w ZSH history-incremental-pattern-search-backward

10

Ostatnio przełączyłem wyszukiwanie historii, history-incremental-pattern-search-backwardponieważ pozwala na wzorce w wyszukiwaniu. Oto jak to jest ustawione w moim.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Działa to świetnie, ale nie mogę dowiedzieć się, jak przejść do następnego meczu z menu wyszukiwania.

% cat foobarbaz.txt
bck-i-search: f*baz

Czy jest do tego potrzebny klucz?

Claytron
źródło

Odpowiedzi:

12

W końcu znalazłem właściwą inkantację. Musisz zamapować wyszukiwanie wzorca w trybie wstawiania. To był kawałek, którego mi brakowało:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

Użyłbym ^Bdo wyszukiwania wstecz w trybie wstawiania, ale muszę to odwzorowane na coś innego. Więc teraz ^Ri ^Fprzeglądaj mecze.

Claytron
źródło
co robi -Mpolecenie? W moim przypadku nawet bez -Msłowa kluczowego działa to świetnie.
alpha_989,
-M keymapMówi bindkey który KEYMAP zastosować wiązanie. Skonfigurowałem go zarówno dla trybu wstawiania, jak i trybu poleceń.
claytron
Dziękuję za wyjaśnienie. W moim przypadku po prostu mam bindkey '^R' history-incremental-pattern-search-backwardi to działa. Używam również domyślnego /polecenia w vi normalnym modelu w zsh. Dzięki temu mogę przeszukiwać historię poleceń, a gdy tylko znajdzie polecenie, poda je w wierszu polecenia. W razie potrzeby mogę zmodyfikować ostatnie polecenie.
alpha_989
Z '^R' history-incremental-pattern-search-backwarddrugiej strony, jeśli użyję, po prostu trafi do ostatniego polecenia pasującego do szukanego ciągu. Jednak nie znalazłem sposobu, aby faktycznie móc edytować polecenie. Czy po znalezieniu odpowiedniego polecenia pasującego do szukanego ciągu za pomocą nieregularnego wyszukiwania wzorami istnieją jakieś konkretne kombinacje klawiszy, które można nacisnąć, aby móc edytować polecenie?
alpha_989
9

Według strony zshzlepodręcznika dla zsh 4.3.10 domyślnie żaden klucz nie jest powiązany. Musisz dodać powiązania do isearchmapy, a dostępnych jest tylko kilka widżetów. Na przykład możesz wykonać:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles „SO- przestań być zły”
źródło
bindkey -lnie pokazuje isearchmapowania
claytron 10.10.10
@claytron: musi występować problem z wersją: isearchjest nowy w 4.3.10, a history-incremental-pattern-search-backwardpojawił się w 4.3.7 (jeśli poprawnie czytam dziennik zmian).
Gilles „SO- przestań być zły”
Używam 4.3.10, nie jestem pewien, dlaczego go nie ma. Używanie powiązań w trybie wstawiania działało jednak dla mnie.
claytron 10.10.10