如何强制 fish在关闭终端窗口后持续保存新的键绑定?

如何强制 fish在关闭终端窗口后持续保存新的键绑定?

如何强制 fish在关闭终端窗口后持续保存新的键绑定?

目前我遇到的问题是:

  • 我打开一个终端窗口,默认shell是fish。
  • 我添加了一个键绑定:bind \eg functionname
  • 它在终端窗口中工作
  • 现在我关闭终端窗口
  • 打开一个新的终端窗口,再次以 fish 作为默认 shell
  • 绑定不再起作用,并且不会显示在输出中fish -a

答案1

您可以在初始化文件中添加绑定:

/usr/share/fish/config.fish
/etc/fish/config.fish
~/.config/fish/config.fish

例如,您可以添加以下函数:

function __fish_less
       commandline -i -- "|less"
end

bind \ey __fish_less

一个例子:

https://github.com/zmalltalker/fish-nuggets/blob/master/config.fish

编辑:

来自鱼壳文档

初始化文件 在启动时,fish 会按顺序评估文件 /usr/share/fish/config.fish(或者 /usr/local/fish... 如果您在 /usr/local 中安装了 fish)、/etc/fish/config.fish(或者 ~/etc/fish/... 如果您在主目录中安装了 fish)和 ~/.config/fish/config.fish(或者 $XDG_CONFIG_HOME 变量指定的任何其他目录)。第一个文件不应直接编辑,第二个文件用于系统范围配置,最后一个文件用于用户配置。如果您只想在启动交互式 shell 时运行命令,请使用命令“status --is-interactive”的退出状态来确定 shell 是否是交互式的。如果您只想在使用登录 shell 时运行命令,请改用“status --is-login”。

例子:

如果您想在使用登录 shell 时将目录 ~/linux/bin 添加到您的 PATH 变量中,请将以下内容添加到您的 ~/.config/fish/config.fish 文件中:

如果状态--is-login设置PATH $PATH〜/ linux / bin结束

如果您想在 fish 退出时运行一组命令,请使用由 shell 退出触发的事件处理程序:

函数 on_exit --on-process %self echo fish 正在退出结束

通用变量存储在文件 .config/fish/fishd.HOSTNAME 中,其中 HOSTNAME 是您的计算机名称。请勿直接编辑此文件,而是通过 fish 脚本或以交互方式使用 fish 进行编辑。

因此,您应该编辑 ~/.config/fish/config.fish,注销(或重新获取 config.fish),最后您应该得到您的“自定义绑定”。

我建议您阅读整个文档并使用一下 shell,我在这里写的内容都不是来自文档。

然后,如果它不起作用,请带着日志(只要可用)、配置文件回来这里,调试输出等等。

答案2

根据这个问题似乎您需要编辑/创建文件~/.config/fish/functions/fish_user_key_bindings.fish并在那里放置类似以下内容的内容:

function my_func
  echo hello
end

function fish_user_key_bindings
  bind \eg my_func
end

相关内容