我正在尝试实现以下文章中的功能:
在鱼贝。在文章的作者使用下面的代码映射Ctrl+Z在zsh中的“FG”命令。
fancy-ctrl-z () {
if [[ $#BUFFER -eq 0 ]]; then
BUFFER="fg"
zle accept-line
else
zle push-input
zle clear-screen
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
Run Code Online (Sandbox Code Playgroud)
目的是在前台和 shell 中的 vim 实例之间快速切换。
所以Ctrl+Z背景vim,然后切换到shell,然后Ctrl+Z再次应该再次前景vim,所以快速切换是可能的。
我将如何在鱼中复制它?
fish 目前不允许您 catch SIGTSTP
,这就是Ctrl+Z发送的内容。但是,您可以绑定另一个键。例如,你可以写:
bind \ck 'fg %'
Run Code Online (Sandbox Code Playgroud)
这使得 control-K 切换回上一个后台进程。
看起来 zshfancy-ctrl-z
函数有一个单独的模式,如果命令行上有输入,它会清除屏幕。我不确定那是什么,但如果你愿意,可以在鱼中复制,比如:
bind \ck 'if test -z (commandline) ; fg %; else ; clear; commandline ""; end'
Run Code Online (Sandbox Code Playgroud)