In berücksichtigen tcsh
die Befehle \eP
und 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 \eP
in tcsh
, ich bekomme
% git pull upstream feature-dancing-pigs
wenn ich \eP
in drücke zsh
, bekomme ich ein Verlaufselement, das genau dem Befehl entspricht
% git clone
Ich möchte die Konfiguration so konfigurieren zsh
, dass das tcsh
Verhalten emuliert wird. Ist das möglich?
Ich habe es zsh
mit 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 zshcontrib
dem 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 FUNCTIONS
Abschnitt 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