这个脚本:
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
位置,测试和生产文件?
答案 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:
函数中,然后定义几个映射变体。