ctags
CakePHP 项目中最好的配置和参数是什么?
我希望能够自动完成ctp
文件Components
、、、Behaviours
和?Models
Helpers
ctags
CakePHP 项目中最好的配置和参数是什么?
我希望能够自动完成ctp
文件Components
、、、Behaviours
和?Models
Helpers
检查这些 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
方法。所以这是一项正在进行的工作。