Ctrlコマンドを入力していますが、何かを確認する必要があることを覚えています。 +を押すとUコマンドが消えて他のものを入力できますが、入力したコマンドは履歴にありません。
コマンドを復元する方法はありますか?それとも別のショートカットを押してコマンドをどこかに保存できますか?
答え1
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.
デフォルトでは、このコマンドは/in emacsモードにバインドされますAlt。Escqこのコマンドを使用して、このコマンドを別のキーにバインドできますbindkey
。たとえば、Alt/にEscvバインドするには。bindkey '^[V' push-line
zshrc
答え2
Ctrl+はY最後に切り取った項目を貼り付けます(Ctrl+ U、Ctrl+ K、Ctrl+Wなどを使用)。
答え3
あなたが探しているpush-line
コマンドはCtrl+QとデフォルトでにバインドされていますEsc 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。