Wie führe ich einen vorherigen eindeutigen Befehl in einer Emacs-Shell aus (ohne Wiederholungen)?

9

Gibt es in der Emacs-Shell einen ähnlichen Befehl, der M-pjedoch wiederholte Befehle überspringen würde? Das heißt, es würde zum nächsten anderen Befehl gehen. Ähnlich wie beim normalen Linux-Terminal.

Also, wenn ich rennen würde:

ls
./script
./script
./script
make

und M-pdreimal drücken , ich möchte, dass es zu ls Befehl geht.

Oder wie kann ich alternativ einen solchen Befehl definieren?

Anton
quelle

Antworten:

7

Die Shell Sie erhalten M-x shellbasiert auf comint, so können Sie einstellen, comint-input-ignoredupsauf t, um das gewünschte Verhalten zu erhalten. Die Hilfe erwähnt sogar Bash:

comint-input-ignoreups ist eine Variable, die in "comint.el" definiert ist.

Dokumentation:

Wenn nicht Null, fügen Sie keinen Eingang hinzu, der mit dem letzten am Eingangsring übereinstimmt.

Dies spiegelt das optionale Verhalten von Bash wider.

Diese Variable ist pufferlokal.

Sie können diese Variable anpassen.

Omar
quelle
Super, genau das, wonach ich gesucht habe, danke!
Anton
1

Sie können auch verwenden M-x comint-dynamic-list-input-ringund aufrufen von C-c C-l. Sie können auch festlegen C-h v comint-input-ignoredups, tdass eindeutige Befehle nur in der obigen Liste angezeigt werden.

aartist
quelle