zsh tcsh-ähnliche Verlaufsnavigation

zsh tcsh-ähnliche Verlaufsnavigation

In berücksichtigen tcshdie Befehle \ePund das mit Leerzeichen normalisierte Präfix der aktuellen Zeile, nicht nur des ersten Wortes.\eN

Wenn mein Verlauf beispielsweise Folgendes enthält:

git pull upstream feature-dancing-pigs
git clone

und ich tippe

% git pull

und dann drücke ich \ePin tcsh, ich bekomme

% git pull upstream feature-dancing-pigs

wenn ich \ePin drücke zsh, bekomme ich ein Verlaufselement, das genau dem Befehl entspricht

% git clone

Ich möchte die Konfiguration so konfigurieren zsh, dass das tcshVerhalten emuliert wird. Ist das möglich?

Ich habe es zshmit der Standard-Emacs-Tastenkonfiguration und mit einem expliziten

bindkey "\eP" history-search-backward

Wie sich herausstellt

bindkey "\eP" history-beginning-search-backward

hat das erwartete Verhalten, das ich ^[ursprünglich anstelle von verwendet habe \e.

Antwort1

In ist eine Funktion mit zshcontribdem Namen dokumentiert up-line-or-beginning-search. Sie können diese durch Ausführen anzeigen.

man zshcontrib | less '+/^\s*up-line-or-beginning-search'

Diese Widgets ähneln den eingebauten Funktionen up-line-or-search und down-line-or-search: Wenn sie sich in einem mehrzeiligen Puffer befinden, bewegen sie sich innerhalb des Puffers nach oben oder unten, andernfalls suchen sie nach einer Verlaufszeile, die mit dem Anfang der aktuellen Zeile übereinstimmt. In diesem Fall suchen sie jedoch nach einer Zeile, diepasst die aktuelle Zeile bis zur aktuellen Cursorposition an, in der Art von Geschichtsbeginn-Rückwärts- und -Vorwärtssuche,anstatt des ersten Wortes in der Zeile.

wenn Sie sich die Anweisungen oben im ZLE FUNCTIONSAbschnitt ansehenman zshcontrib

ZLE-FUNKTIONEN
Widgets
Diese Funktionen implementieren alle benutzerdefinierte ZLE-Widgets (siehe zshzle(1)), die in interaktiven Shells an Tastenanschläge gebunden werden können. Um sie zu verwenden, sollte Ihre .zshrc Zeilen der Form enthalten
autoload function
zle -N function

Ich persönlich habe die obigen Anweisungen befolgt, aber ich vermute, dass Sie dies heutzutage nicht mehr tun müssen ... in Ihrem~/.zshrc

# register the function with the autoloader
autoload -U up-line-or-beginning-search
# define new zle widget
zle -N up-line-or-beginning-search
# bind UP key
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-beginning-search

verwandte Informationen