mic*_*lpm 12 keyboard-shortcuts zsh
我正在输入一个命令,我记得我必须检查一些东西,如果我按下Ctrl+U命令消失,我可以输入其他东西,但是我输入的命令不在历史记录中。
有没有办法恢复该命令,或者我可以按下不同的快捷方式将命令保存在某处?
小智 12
看一下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.
Run Code Online (Sandbox Code Playgroud)
默认情况下,此命令在 emacs 模式下绑定到Alt/ Escq。您可以使用该命令将此命令绑定到不同的键bindkey
。例如,为了将其绑定到Alt/ Escv,请添加bindkey '^[V' push-line
到您的zshrc
.
您正在寻找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
Run Code Online (Sandbox Code Playgroud)
一种适用于任何 shell 的低技术方法是在#
当前行的开头添加 a并按Enter。
归档时间: |
|
查看次数: |
6744 次 |
最近记录: |