Vim/Neovim中字符串拼接设置backupdir选项报错的解决咨询
解决Vim/Neovim中
backupdir配置报错的问题 你的问题出在最后一行的set命令用法上——Vim的set语法无法直接解析变量拼接表达式,它会把g:base_data_folder . '/backup'当成字面字符串来处理,而不是解析变量后生成实际路径,这就导致路径无效,启动时报错。
下面是两种可行的修复方案:
方案一:使用let命令设置选项变量
Vim的配置选项可以通过&选项名的形式作为变量来赋值,这样就能正确解析变量表达式:
if has('nvim') let g:base_data_folder = $HOME . '/.nvim' else let g:base_data_folder = $HOME . '/.vim' endif let &backupdir = g:base_data_folder . '/backup'
方案二:使用execute动态执行命令
通过execute命令先拼接出完整的set命令字符串,再执行它,也能实现正确的路径赋值:
if has('nvim') let g:base_data_folder = $HOME . '/.nvim' else let g:base_data_folder = $HOME . '/.vim' endif execute 'set backupdir=' . g:base_data_folder . '/backup'
额外建议:自动创建目录
为了避免因为目标目录不存在导致的备份失败问题,可以添加一段代码自动创建所需目录:
if has('nvim') let g:base_data_folder = $HOME . '/.nvim' else let g:base_data_folder = $HOME . '/.vim' endif let &backupdir = g:base_data_folder . '/backup' " 自动创建基础目录和备份目录 if !isdirectory(g:base_data_folder) call mkdir(g:base_data_folder, 'p') endif if !isdirectory(&backupdir) call mkdir(&backupdir, 'p') endif
这里的'p'参数表示递归创建父目录,即使上级目录不存在也能成功创建。
内容的提问来源于stack exchange,提问作者weilbith
相关产品推荐
相关产品推荐

