ctagsCakePHP 项目中最好的配置和参数是什么?
我希望能够自动完成ctp文件Components、、、Behaviours和?ModelsHelpers
ctagsCakePHP 项目中最好的配置和参数是什么?
我希望能够自动完成ctp文件Components、、、Behaviours和?ModelsHelpers
检查这些 github 存储库,我发现它们非常适合使用 php 和 cakephp
此解决方案需要文件中的 1 行.ctags和文件中的 2 行.vimrc,因此它相当小。
.ctags:
--langmap=php:+.ctp
.vimrc:
# Controller -> Component
map <leader>t yiw<cr>:tag /^<C-R>"<CR>
# View -> Helper
map <leader>h yiw<cr>:tag /^<C-R>"Helper<CR>
此解决方案主要用于在文件之间跳转。稍后我会尝试添加自动完成功能。
将此添加到您的~/.ctags选项文件中,以将 CakePHP 视图包含为 PHP 文件:
--langmap=php:+.ctp
然后我假设您已经ctags -R .在项目的根部完成了(至少我已经这样做了)。这个开箱即用的应该会选择 PHP 语法和类定义。
我发现自动完成(omni-completion from Ctrl+XCtrl+O)不能很好地与 PHP 配合使用,例如,如果我键入$this->然后尝试自动完成,它不会找到任何标签。
对此的解决方法是使用 install phpcomplete.vim。这将在您的类中找到方法。
但是,这不会自动完成连接的模型。
默认情况下,ctags 应该适用于所有 Controller -> Model jumping,因为模型名称与类名称相同。
这些再次应该没问题,因为您没有指定行为的名称,您只有方法名称,这取决于应该找到名称的独立程度 - 或者至少它将在标签列表中。
没有直接映射这些的方法,我看不到通过 ctags--regex选项映射它们的方法。ctags 识别它们是类但不知道xxx->xxxComponent映射。
但是有一个小技巧。您可以在类名(source)的开头进行标签搜索
:tag /^Email
会发现
class EmailComponent
然后,您可以将其映射到您的.vimrc
map <leader>t yiw<cr>:tag /^<C-R>"<CR>
这会复制光标所在的单词,然后将其粘贴到标记命令中并执行它。我的领导设置为,,所以我可以输入,t,它会将我带到光标下的相应组件。
好的,.vimrc 文件中的另一个小改动:
map <leader>h yiw<cr>:tag /^<C-R>"Helper<CR>
使用,h,这会将您从跳转$html->...到
class HtmlHelper extends AppHelper {
但它不适用于内部的函数,例如,如果您的光标在script中$html->script,它不会带您进入该HtmlHelper script方法。所以这是一项正在进行的工作。