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盘的一些路径。

posted @ 2024-07-16 00:04  wenli7363  阅读(3)  评论(0编辑  收藏  举报