我是鱼壳的新手,只是尝试设置我的$ 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
并删除所有鱼类配置从头开始。 无论我做什么,每当我打开新终端,开始新会话或重启时,EDITOR变量总是最终为/usr/bin/nano
。更奇怪的是,在~/.config/fish/fishd.my-hostname
中,我看到SET_EXPORT EDITOR vim
,而没有关于纳米的事情。这是某种鱼的默认吗?如果是这样,我该如何正确设置?
编辑:我在Antergos Linux上运行Fish 2.6.0。
答案 0 :(得分:6)
首先,fish配置文件是〜/ .config / fish / config.fish。编辑您命名的文件将不起任何作用。其次,fish没有任何默认值,也没有设置EDITOR或VISUAL变量。因此无论将其设置为/ usr / bin / nano,都是您系统独有的自定义。
如果你set -Ux EDITOR vim
并且没有在config.fish中设置它,它应该被设置为vim,即使它已经在鱼开始时设置了。运行该set命令,然后执行set -U | grep EDITOR
和env | grep EDITOR
以查看它是否已设置为通用变量并导出。现在键入fish
以启动子shell。运行前两个命令,您应该看到它仍然设置为相同的值。现在在子shell中键入set -U EDITOR nano
,然后输入exit
。在早期的shell中,您现在应该看到EDITOR设置为nano。
就我个人来说,我个人不喜欢使用uvars。我只是在〜/ .config / fish / config.fish中set -gX EDITOR (type -p vim)
。这样可以确保如果我在安装了〜/ .config / fish目录的新机器上开始钓鱼,我会得到预期的默认值。
不以这种方式使用uvar的另一个原因是解析顺序是局部范围,全局范围,通用范围。由于鱼开始运行时导入的环境变量被放置在全局范围内,它们将遮蔽您定义的uvar。不要导出通用变量。它不太可能产生预期的结果。只需set -gx
config.fish脚本中的var。
P.S。,当提出这种性质的问题时,你应该总是包括相关的事实,例如你正在使用的操作系统和鱼版本。