我正在輸入一個命令,我記得我必須檢查一些內容,如果我按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.
預設情況下,該命令在 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+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
#
在任何 shell 中都有效的低技術方法是在當前行的開頭添加 a並按Enter。