我对fish shell很陌生,只是尝试设置我的$EDITOR变量,因此它在会话和重新引导过程中都是持久的。到目前为止,我尝试过的是:
set -gx EDITOR vim。set -Ux EDITOR vim。set -e EDITOR为前缀的这些命令,以取消任何先前的值。~/.config/fish/config.fish文件中(它抱怨set: Warning: universal scope selected, but a global variable “EDITOR” exists.)oh-my-fish并从零开始删除所有鱼类吐露。无论我做什么,每当我打开一个新终端、启动一个新会话或重新启动时,编辑器变量总是以/usr/bin/nano结束。更奇怪的是,在~/.config/fish/fishd.my-hostname中,我看到了SET_EXPORT EDITOR vim,而没有任何关于nano的东西。这是某种鱼的默认吗?如果是这样,我如何才能正确地设置它?
编辑:我在Antergos Linux上运行Fish 2.6.0。
发布于 2017-07-15 16:36:08
首先,fish配置文件是~/. config /fish/config.fish。编辑您命名的文件不会有任何效果。第二,fish对编辑器或视觉变量没有任何默认设置,也没有设置。因此,无论将其设置为/usr/bin/nano,对于您的系统来说,都是唯一的定制。
如果您set -Ux EDITOR vim并且没有在config.fish中设置它,那么它应该被设置为vim,即使它已经在fish启动时设置了。运行set命令,然后执行set -U | grep EDITOR和env | grep EDITOR,以确保将其设置为一个通用变量并导出。现在输入fish启动子shell。运行前两个命令,您应该看到它仍然被设置为相同的值。现在,在子shell中键入set -U EDITOR nano,然后是exit。在前面的shell中,您将看到编辑器设置为nano。
就我个人而言,我不喜欢在这方面使用uvar,因为目前它们是每台机器。我只是在我的~/..config/ set -gX EDITOR (type -p vim) /config.fish中做了。这可以确保,如果我在安装了~/..config/ fish目录的新机器上启动fish,则会得到预期的默认值。
不以这种方式使用uvar的另一个原因是,解析顺序是局部范围、全局范围、通用范围。由于在fish开始运行时导入的环境vars被放置在全局范围中,因此它们将隐藏您定义的uvar。不要导出通用变量。它不太可能产生预期的结果。只需在set -gx脚本中使用config.fish变量即可。
P.S.,在提出这种性质的问题时,您应该始终包括相关事实,例如您正在使用的操作系统和fish版本。
https://stackoverflow.com/questions/45119425
复制相似问题