1

ctagsCakePHP 项目中最好的配置和参数是什么?

我希望能够自动完成ctp文件Components、、、Behaviours和?ModelsHelpers

4

2 回答 2

1

检查这些 github 存储库,我发现它们非常适合使用 php 和 cakephp

于 2013-10-24T15:47:09.890 回答
1

此解决方案需要文件中的 1 行.ctags和文件中的 2 行.vimrc,因此它相当小。

tl;博士

.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方法。所以这是一项正在进行的工作。

于 2017-06-15T20:44:36.007 回答