在我的vim配置中,我映射了,pt
来运行phpunit测试。
map <leader>pt :!clear && vendor/bin/phpunit % --testdox<cr>
但是有时候我想通过使用phpunit --filter
来运行特定的测试map <leader>pt :!clear && vendor/bin/phpunit --filter {FUNCTION_NAME_HERE} % --testdox<cr>
反正我们可以在vim中自动填写函数名称吗?
答案 0 :(得分:1)
作为文本编辑器,Vim对底层源代码的结构只有有限的了解。
当前方法名称的潜在来源可能是:
或者,您可以尝试通过模式提取来解析函数名称(如@Matt在注释中建议的;通过类似matchstr(getline(search('function', 'bcnW')), 'function\s\+\zs\w\+')
的东西)-但这仅限于当前语言且难以正确获取100%的时间。
总而言之,这并不简单,需要高级Vimscript才能正确完成。
我会选择80%的自定义:command
来传递函数名,而不是完全自动化的映射:
command -nargs=1 Phpunit !clear && vendor/bin/phpunit --filter <args> % --testdox
与映射一样,它仍将节省大量键入。您可以粘贴函数名称以将其粘贴到其中,或者如果光标当前位于其上方,只需通过<C-R><C-W>
将其插入:Phpunit
命令行中。 / p>
下一步,可以使:Phpunit
处理零个参数,然后删除--filter
参数,这样您的映射将变为:nnoremap <Leader>pt :Phpunit<CR>