可以通过外部配置改进vimrc吗?

时间:2015-03-30 12:46:30

标签: vim phpunit

这个脚本:

function! RunPhpUnit()
    let l:filename = expand('%')
    if l:filename !~# 'Test\.php$'
        let l:filename=substitute(l:filename, '\.php$', 'Test.php', '')
    endif
    let l:filename=substitute(l:filename, 'code\/classes', 'spec\/unit', '')
    return ':!vendor/bin/phpunit ' . l:filename . "\<CR>"
endfunction
:noremap <expr> <leader>t RunPhpUnit()

假设phpunit位于vendor/bin/phpunit,生产代码位于code/classes文件夹中,测试位于spec/unit。但是,...如何改进我的VimL功能来配置phpunit位置,测试和生产文件?

1 个答案:

答案 0 :(得分:1)

主要问题是:你为什么要配置它们?如果这是为了适应不同的环境(当你在多个系统上使用Vim时),最好通过全局变量来完成,就像大多数插件一样(这将使你能够在vim.org上将你的脚本作为插件发布,与他人分享)。例如,更改

return ':!vendor/bin/phpunit ' . l:filename . "\<CR>"

return ':!' . g:RunPhpUnit_Filespec . ' ' . l:filename . "\<CR>"

并定义该变量的默认值:

if ! exists('g:RunPhpUnit_Filespec')
    let g:RunPhpUnit_Filespec = 'vendor/bin/phpunit'
endif

如果相同的系统上有不同的项目,并且可能同时使用映射的变体,则可以使用 buffer-local 配置变量(以{{1开头) }},或者将变量传递到b:函数中,然后定义几个映射变体。