1

我使用此功能为特定扩展加载配置

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')

但从if不真实。没有if,该功能可以正常工作。

为什么filereadable找不到文件?

编辑

我尝试

fnamemodify(file,':p')

但是是一样的。

4

1 回答 1

1

在自动命令中,您将字符串 '%:e'传递给您的函数。然后,在你的函数的第一行,这个字符串被连接成 form "~/.vim/templates/%:e.snippets.vim"

此时%:e没有对 Vim 有任何特殊意义。它们不会被扩展,expand()并且生成的路径永远不会指向可读文件。

直接传递'%:e'expand()将起作用,这将解决它:

autocmd BufRead,BufNewFile * silent! call LoadSnippets(expand('%:e'))
于 2012-06-26T19:50:35.177 回答