コマンドを入力しているときに、何か確認する必要があることを思い出しました。Ctrl+を押すとUコマンドが消えて別のコマンドを入力できますが、入力していたコマンドは履歴に残りません。
そのコマンドを回復する方法、またはコマンドをどこかに保存するために押すことができる別のショートカットはありますか?
答え1
ZLE コマンドを見てみましょうpush-line
。このコマンドは、行の現在の内容をバッファ スタックにプッシュし、行をクリアします。その後、別のコマンドを入力すると、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.
デフォルトでは、このコマンドはemacs モードのAlt/にバインドされていますEscq。 コマンドを使用して、このコマンドを別のキーにバインドできます。たとえば、 /bindkey
にバインドするには、に を追加します。AltEscvbindkey '^[V' push-line
zshrc
答え2
Ctrl+ はY、最後に切り取った項目 ( Ctrl+ U、Ctrl+ K、Ctrl+Wなど) を貼り付けます。
答え3
あなたが探しているのはpush-line
コマンドは、デフォルトで + にバインドされています。Ctrlこのコマンドは入力をクリアし、別のコマンドを入力できるようにします。このコマンドを実行またはキャンセルすると、前のコマンドが編集用に戻されます。QEsc Q
複数行コマンドでは、push-line
現在の行のみをクリアし、他の行は入力バッファに保持します。別のコマンドもあります。push-input
デフォルトではどのキーにもバインドされていない入力バッファ全体をクリアします。
私はこのコマンドのラッパーを使用しています。Ctrl+とZ入力すると、入力中のコマンドが「一時停止」され、別のコマンドを入力します。そのコマンドを実行した後 (またはCtrl+で中止した後C)、一時停止されたコマンドが編集用に戻ってきます (カーソルの位置も記憶されています)。さらに便利なことに、Ctrl+と入力したときにコマンド ラインが空の場合Z、キーはbg
代わりに組み込みキーを呼び出します (つまり、Ctrl+を 2 回押すと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。