本文记录了如何在neovim中配置自定义的swapfile路径。

Lua配置: vim.go.directory = vim.fn.expand('~/.nvim/swapfiles//') .. ',!,'

配置

直接配置vim.go.directory = "~/.nvim/swapfiles"是不正确的,这会在当前目录下创建~/.nvim/swapfiles文件夹,不会展开~

正确的Lua配置应该是: vim.go.directory = vim.fn.expand('~/.nvim/swapfiles//') .. ',!,'

vim.fn.expand的用法

vim.fn.expand() 的语法与 Vim 中的 expand() 函数相同。你需要传递一个字符串给 expand(),该字符串描述了你想要扩展的内容。这个字符串可以是以下几种类型之一:

  1. 文件名修饰符:如 '%''#''$''<sfile>', 等。
  2. 环境变量:以 $ 开头的字符串,如 '$HOME'
  3. Vim 选项:以 & 开头的字符串,如 '&backupdir'
  4. 其他特定的字符串:有些字符串被 expand() 函数识别为特殊的扩展方式。

示例:当前文件名

local current_file = vim.fn.expand('%')
print(current_file)

示例2:当前文件目录

local current_dir = vim.fn.expand('%:p:h')
print(current_dir) -- 打印当前编辑文件的目录

示例3:环境变量

local home_dir = vim.fn.expand('$HOME')
print(home_dir) -- 打印用户的家目录

示例4:vim变量

local backupdir = vim.fn.expand('&backupdir')
print(backupdir) -- 打印备份文件的目录

示例5:用户特定子目录

local swapfile_dir = vim.fn.expand('~/.vim_swapfiles//')
vim.o.directory = swapfile_dir .. ',!,'

//处理包含空格的目录,,用于区分不同的目录,!表示目录是排他的,只能在其中一个创建文件,并且不使用默认配置。