コマンドを入力しているときに、何かをチェックする必要があることを覚えています。 Ctrl+U コマンドが消えて他の何かを入力できますが、入力していたコマンドは履歴にありません。
そのコマンドを回復する方法、またはコマンドのどこかに保存するために押すことができる別のショートカットはありますか?
Ctrl+Y 最後にカットしたアイテムを貼り付けます( Ctrl+U、 Ctrl+K、 Ctrl+Wなど)。
Push-line
ZLEコマンドを見てください。このコマンドは、行の現在の内容をバッファスタックにプッシュし、行をクリアします。次に別のコマンドを入力すると、ZLEが再び起動すると、行がバッファースタックから行バッファーにポップされます。
Prompt@world$ cp abc /mnt/usr/bin # The user presses Esc-q
Prompt@world$ # The line is cleared
Prompt@world$ mount -v /dev/sdb1 /mnt # And the user can enter another command
mount: /dev/sdb1 mounted on /mnt
Prompt@world$ cp abc /mnt/usr/bin
# The first command is popped off of the stack
# as soon as ZLE comes back.
デフォルトでは、このコマンドは Alt/Escq emacsモード。 bindkey
コマンドを使用して、このコマンドを別のキーにバインドできます。たとえば、それをバインドするために Alt/Escv、bindkey '^[V' Push-line
をzshrc
に追加します。
Push-line
コマンドを探しています。これはにバインドされています Ctrl+Q そして EscQ デフォルトでは。このコマンドは入力をクリアし、別のコマンドを入力できるようにします。このコマンドを実行またはキャンセルすると、前のコマンドが編集用に戻されます。
複数行コマンドを使用すると、Push-line
は現在の行のみをクリアし、他の行を入力バッファーに保持します。別のコマンド Push-input
があります。これは、デフォルトではどのキーにもバインドされていない、入力バッファー全体をクリアします。
このコマンドのラッパーを使用します。私はタイプする Ctrl+Z 入力しているコマンドを「中断」して、別のコマンドを入力します。そのコマンドを実行した後(またはで中止した後) Ctrl+C)、中断されたコマンドが編集のために戻ってきます(カーソル位置を覚えていても)。追加の利便性として、入力時にコマンドラインが空の場合 Ctrl+Z、キーは代わりにbg
ビルトインを呼び出します(したがって、double Ctrl+Z 実行中のコマンドをバックグラウンドに直接送信します)。
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle Push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
どのシェルでも機能するローテクな方法は、現在の行の先頭に#
を追加して、 Enter。