zshに現在のコマンドを保存する方法は? [コピー]

zshに現在のコマンドを保存する方法は? [コピー]

Ctrlコマンドを入力していますが、何かを確認する必要があることを覚えています。 +を押すとUコマンドが消えて他のものを入力できますが、入力したコマンドは履歴にありません。

コマンドを復元する方法はありますか?それとも別のショートカットを押してコマンドをどこかに保存できますか?

答え1

push-lineZLEコマンドを見てください。このコマンドは、ラインの現在の内容をバッファスタックにプッシュし、ラインをクリアします。その後、別のコマンドを入力して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モードにバインドされますAltEscqこのコマンドを使用して、このコマンドを別のキーにバインドできますbindkey。たとえば、Alt/にEscvバインドするには。bindkey '^[V' push-linezshrc

答え2

Ctrl+はY最後に切り取った項目を貼り付けます(Ctrl+ UCtrl+ KCtrl+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

関連情報