Vielen Dank im Voraus für die Hilfe.
In Emacs verwende ich gerne iseach-forward (C-s), aber ich würde es immer mehr mögen, wenn die hervorgehobenen Wortworte in der Mitte des Bildschirms zentriert wären anstatt ganz unten.
Ich finde mich ständig dabei:
C-s foo C-s C-s C-s ... Oh! Das ist das "Foo", nach dem ich gesucht habe! C-l
Gibt es eine Möglichkeit, die Suchergebnisse in der Mitte des Bildschirms zu zentrieren?
Prost
Am besten wäre es, den folgenden Hook hinzuzufügen:
%Vor% Dies führt den Befehl recenter-top-bottom
nach Abschluss jeder erfolgreichen inkrementellen Suche aus.
Edit: Ich habe ein wenig untersucht, und die Funktionen, die bei wiederholten Suchen nach der gleichen Zeichenfolge (dh mit sukzessiver Eingabe von C-s
oder C-r
während einer aktiven Suche) ausgeführt werden, scheinen isearch-repeat-forward
zu sein. und / oder isearch-repeat-backward
. Wenn Sie also bei jeder Wiederholung neu zentrieren möchten, müssen Sie diese Funktionen zusätzlich zur Definition des obigen Hooks angeben:
Persönlich finde ich das resultierende Verhalten extrem nervig und desorientierend, aber de gustibus non est disputandum . Vielleicht wäre die Reservierung von recenter-top-bottom
für die Verwendung in der ursprünglichen isearch-mode-end-hook
und die Verwendung von recenter
allein im Ratschlag für die Funktionen repeat
weniger anstößig.
Das Beraten von isearch-forward
an sich ist gleichbedeutend mit dem Hinzufügen des Hooks, den ich ursprünglich vorgeschlagen habe, und hat scheinbar keinen Effekt auf wiederholte Suchen. Hinzufügen des Hooks ist einfacher und ich denke mehr idiomatisch, also sollte es wahrscheinlich vor der Empfehlung der Funktion bevorzugt werden.
Danke Nicolas und Greg.
Ihre Vorschläge wiesen mich auf die richtige Richtung hin. Dies ist der Code, um das zu erreichen, wonach ich gefragt habe:
%Vor%Erläuterung:
Ich wollte die Dinge nicht komplizierter machen, indem ich hinzufüge, dass ich das Böse benutze (vim mode in Emacs), also habe ich das in meiner Frage weggelassen.
Ich benutze defadvice, um vorwärts zu suchen, um zum nächsten gesuchten Gegenstand zu gehen und zum vorherigen gesuchten Gegenstand zu gehen.
Etwas Erwähnenswertes ist, dass ich die Funktion (recenter-top-bottom) nicht verwendet habe. Das Verhalten war verrückt, als es den ersten gesuchten Gegenstand in der Mitte des Bildschirms zentrierte, den zweiten nach oben und den dritten nach unten zentrierte. Ich habe gerade die Funktion 'recenter' benutzt, um sie immer in der Mitte des Bildschirms zu zentrieren.
Für nicht böse Benutzer würde der Code so aussehen: (Nicht getestet!)
%Vor%Prost!
Sie könnten defadvice
verwenden, um recenter-top-bottom
nach isearch-forward
auszuführen.