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

How to map ctrl-z to fg in fish

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

How to boost your vim productivity

shell。文章作者使用如下代码将zsh中的Ctrl+Z映射到"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

目的是在前台的 vim 实例和 shell 实例之间快速切换。

所以Ctrl+Z背景vim,然后切换到shell,然后Ctrl+Z 再次应前景 vim,因此可以快速切换。

我如何在鱼身上复制它?

fish 目前不让你抓到 SIGTSTP,这是 Ctrl+Z 发送的。但是,您可以绑定另一个键。例如,您可以这样写:

bind \ck 'fg %'

这会使 control-K 切换回最后一个后台进程。

看起来 zsh fancy-ctrl-z 函数有一个单独的模式,如果在命令行上有输入,它会清除屏幕。我不确定那是什么,但如果你愿意,可以在鱼中复制,比如:

bind \ck 'if test -z (commandline) ; fg %; else ; clear; commandline ""; end'