XDG Base Directory 规范 && 修改Neovim的默认配置文件路径 && 设备同时共享多个Nvim配置
0 前言
最近在配置LazyVim,发现Windows下是默认给我配置到C盘的,就花了一晚上研究怎么修改配置文件的路径,于是了解到XDG Base Directory规范。
如果是想查看怎么修改Nvim/NeoVim的默认配置文件路径,直接看第二节
就是不想让Nvim的配置放在c盘
1 正文
XDG Base Directory规范,定义了几种重要的环境变量路径。这些环境变量将可能被多个程序所共享,不同的应用程序会在该目录下创建各自的子目录来存储配置文件。
常见的规范路径有$XDG_CONFIG_HOME, $XDG_DATA_HOME, $XDG_RUNTIME_DIR, $XDG_STATE_HOME, $XDG_CACHE_HOME, $XDG_CONFIG_DIRS and $XDG_DATA_DIRS
,当用户指定了这些路径,程序会从这些路径中查看配置,否则会取默认值,比如:
CONFIG DIRECTORY (DEFAULT)
$XDG_CONFIG_HOME Nvim: stdpath("config")
Unix: ~/.config ~/.config/nvim
Windows: ~/AppData/Local ~/AppData/Local/nvim
DATA DIRECTORY (DEFAULT)
$XDG_DATA_HOME Nvim: stdpath("data")
Unix: ~/.local/share ~/.local/share/nvim
Windows: ~/AppData/Local ~/AppData/Local/nvim-data
RUN DIRECTORY (DEFAULT)
$XDG_RUNTIME_DIR Nvim: stdpath("run")
Unix: /tmp/nvim.user/xxx /tmp/nvim.user/xxx
Windows: $TMP/nvim.user/xxx $TMP/nvim.user/xxx
STATE DIRECTORY (DEFAULT)
$XDG_STATE_HOME Nvim: stdpath("state")
Unix: ~/.local/state ~/.local/state/nvim
Windows: ~/AppData/Local ~/AppData/Local/nvim-data
CACHE DIRECTORY (DEFAULT)
$XDG_CACHE_HOME Nvim: stdpath("cache")
Unix: ~/.cache ~/.cache/nvim
Windows: ~/AppData/Local/Temp ~/AppData/Local/Temp/nvim-data
LOG FILE (DEFAULT)
$NVIM_LOG_FILE Nvim: stdpath("log")/log
Unix: ~/.local/state/nvim ~/.local/state/nvim/log
Windows: ~/AppData/Local/nvim-data ~/AppData/Local/nvim-data/log
Note that stdpath("log") is currently an alias for stdpath("state").
ADDITIONAL CONFIGS DIRECTORY (DEFAULT)
$XDG_CONFIG_DIRS Nvim: stdpath("config_dirs")
Unix: /etc/xdg/ /etc/xdg/nvim
Windows: Not applicable Not applicable
ADDITIONAL DATA DIRECTORY (DEFAULT)
$XDG_DATA_DIRS Nvim: stdpath("data_dirs")
Unix: /usr/local/share /usr/local/share/nvim
/usr/share /usr/share/nvim
Windows: Not applicable Not applicable
2 修改Nvim的默认配置路径
根据上面的介绍,如果未指定$XDG_CONFIG_HOME
这个环境变量,那么windows上默认的路径就是~/AppData/Local/nvim
。我们只需要给系统的环境变量中添加一个XDG_CONFIG_HOME
变量即可。
需要注意的是,因为这个环境变量是多个程序共享的,所以以后其他的程序如果用到了这个环境变量,会自动下载配置到这里,所以可能会冲突???
3 同一设备共享多个Vim配置
参考这个博客Switching Configs in Neovim,大概就是通过新版本的Neovim提供的NVIM_APPNAME
参数来实现多个配置的切换。
该功能在官方的这个PR中实现feat: implement NVIM_APPNAME,用户指定NVIM_APPNAME
,让Neovim look for its configuration directory in $XDG_CONFIG_HOME/$NVIM_APPNAME
instead of $XDG_CONFIG_HOME/nvim
.
感觉有点像虚拟环境这样的存在,但是实话实说有点鸡肋。
4 总结
还是希望nvim有一天能够实现类似安装程序自定义保存路径这样的功能。而且不得不吐槽windows历史遗留问题,C盘的一些路径。