如何将 ctrl-z 映射到鱼中的 fg

ora*_*025 4 fish

我正在尝试实现以下文章中的功能:

如何提高你的 vim 生产力

贝。在文章的作者使用下面的代码映射Ctrl+Zzsh中的“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,所以快速切换是可能的。

我将如何在鱼中复制它?

rid*_*ish 5

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)