vim:如果文件可读
我使用这个函数来配置特定扩展的负载vim:如果文件可读,vim,Vim,我使用这个函数来配置特定扩展的负载 function! LoadSnippets(extension) let file = expand("~/.vim/templates/".a:extension.".snippets.vim") if filereadable(file)
function! LoadSnippets(extension)
let file = expand("~/.vim/templates/".a:extension.".snippets.vim")
if filereadable(file)
silent! execute 'source '.file
endif
endfunction
autocmd BufRead,BufNewFile * silent! call LoadSnippets('%:e')
但是,如果
就永远不会是真的。如果没有,则功能正常工作
为什么filereadable
找不到该文件
编辑
我试着用
fnamemodify(file,':p')
但是是相同的。在自动命令中,您将字符串'%:e'
传递给您的函数。然后,在函数的第一行,这个字符串被连接成“~/.vim/templates/%:e.snippets.vim”
此时,%
和:e
对Vim没有任何特殊意义。它们不会通过expand()
展开,并且生成的路径永远不会指向可读文件
将'%:e'
直接传递到expand()
将起作用,这将解决此问题:
autocmd BufRead,BufNewFile * silent! call LoadSnippets(expand('%:e'))
在自动命令中,您将字符串'%:e'
传递给您的函数。然后,在函数的第一行,这个字符串被连接成“~/.vim/templates/%:e.snippets.vim”
此时,%
和:e
对Vim没有任何特殊意义。它们不会通过expand()
展开,并且生成的路径永远不会指向可读文件
将'%:e'
直接传递到expand()
将起作用,这将解决此问题:
autocmd BufRead,BufNewFile * silent! call LoadSnippets(expand('%:e'))
您是否尝试回显“file”以查看调用expand
返回的内容?我猜它没有返回您期望的结果。@RandyMorris如果超出if
,我将执行'sp'filename
vim open filename您是否尝试回显'file'以查看调用expand
返回的内容?我猜它没有返回您期望的结果。@RandyMorris如果超出if
,我将execute'sp'filename
vim open filename放在函数中,我改为expand(~/.vim/templates/”)。展开(扩展名)。“.snippets.vim”
<代码>扩展(a:扩展)
修复函数中的问题,我改为扩展(“~/.vim/templates/”)。展开(扩展名)。“.snippets.vim”
<代码>扩展(a:扩展)修复问题