Fügen Sie einen Befehl in den Verlauf ein, ohne ihn auszuführen

8

Wenn ich in einen Befehl in der Zeile habe und Alt- drücke - #(mit dem Cursor an einer beliebigen Stelle in der Zeile), fügt er #am Anfang der Zeile ein hinzu, kommentiert es aus und führt es aus (was seitdem nichts mehr bewirkt) jetzt auskommentiert) und setzt es in die Geschichte ein. Dies ist sehr nützlich, wenn ich einen oder alle Befehle tippe und feststelle, dass ich zuerst einen anderen Befehl ausführen und später darauf zurückkommen muss.

Wie kann ich den gleichen Vorgang in ausführen ? Das Auskommentieren ist nicht wichtig: Alles, was mich interessiert, ist, dass der Befehl momentan nicht ausgeführt wird, sondern später aus dem Verlauf abgerufen werden kann.

Dan Hulme
quelle

Antworten:

6

Drei Optionen:

  • zsh hat standardmäßig die Tastenkombination Alt+ Q, mit der die aktuelle Zeile verschoben wird .

    Verwenden Sie es so:

    1. Geben Sie Befehl .

    2. Drücken Sie Alt+ Q.

    3. Führen Sie othercommand .

    4. Befehl wird wieder angezeigt.

    Technisch gesehen steht dies nicht in der Geschichte. Wenn Sie vor dem Befehl einen anderen Befehl ausführen müssen , müssen Sie erneut Alt+ drücken Q.

  • Standardmäßig schneiden die Tastenkombinationen Ctrl+ Uund Ctrl+ Ydie aktuelle Zeile aus und ziehen sie ein.

    Verwenden Sie sie wie folgt:

    1. Geben Sie Befehl .

    2. Drücken Sie Ctrl+ U.

    3. Führen Sie othercommand .

    4. Drücken Sie Ctrl+ Y.

    5. Befehl wird wieder angezeigt.

    Dies würde auch in Bash funktionieren und es wird eine eigene Zwischenablage verwendet, dh der Inhalt der Zwischenablage, der von Ctrl+ ( Shift+) C/ verwaltet wird, Vund Auswahl / Mittelklick bleiben unverändert.

  • Last but not least können Sie Kommentare in der Befehlszeile durch Ausführen dauerhaft aktivieren

    echo setopt interactivecomments >> ~/.zshrc

    Alt+ #Funktioniert nicht hier, aber Ctrl+ A/ Home, #, Entererreicht das gleiche Ergebnis.

Führen Sie aus, um alle verfügbaren Tastaturkürzel anzuzeigen

bindkey
Dennis
quelle
7

Option vier (als Antwort auf den Titel der Frage, nicht deren Erklärung ;-):

  • print -S "this line goes to the history"

Auszug aus zshbuiltins(1): " print -SPlatzieren Sie die Ergebnisse in der Verlaufsliste anstatt in der Standardausgabe. In diesem Fall ist nur ein einziges Argument zulässig. Es wird in Wörter aufgeteilt, als wäre es eine vollständige Shell-Befehlszeile. Der Effekt ähnelt dem Lesen die Zeile aus einer Verlaufsdatei mit aktivierter Option HIST_LEX_WORDS. "

mpy
quelle
3

Fügen Sie eine Widgetifizierung der Antwort von @ mpy zu Ihrer .zshrc hinzu

to-history() { print -S $BUFFER ; BUFFER= }
zle -N to-history
bindkey 'œ' to-history

Hinweis: œ ist das, was ich auf einem Mac für alt / option-q bekomme, passen Sie es an Ihr Terminal an

Mike
quelle