2013-02-05 50 views
2

我正在使用ctags进行关于vim中的PHP项目的关键字完成。由于CTAGS不处理PHP命名空间开箱,我添加了一个正则表达式选项,以我的ctags命令:Vim关键字完成ctags反斜杠?

ctags (...) --regex-PHP='^namespace\s+([^;]*)/\1/c/' (...) 

这工作得相当好:如果我型我Foo<Ctrl+N>得到建议FooFoo\BarFoo\Bar\Baz等等。

但是,当vim确定要在标记文件中查找关键字时,反斜杠似乎被视为字词分隔符。

换句话说,打字Foo\Ba<Ctrl+N>确实不是给我建议Foo\Bar\Baz等,这是我所希望的。它只会建议实际以Ba开头的标签(即不包含我的名称空间)。

跳转到标签时,这也是一个问题。如果我在光标下有Foo\Bar\Baz并执行Ctrl+],它将带我到包含Baz的文件,该文件可能包含或不包含Foo\Bar\Baz。如果反斜杠不作为分隔符处理,我想这会更好。

那么,有没有办法让vim在做标签查找时将反斜杠当作单词的一部分?

回答

1

~/.vim/after/ftplugin/php.vim(这使得改变本地的PHP文件),添加以下内容:

:setlocal iskeyword+=\\ 

注意,这种变化也影响其他的东西,如w动作,aw文本对象,甚至可能还有语法高亮显示。

+0

谢谢!有趣的是,虽然这适用于关键字完成,但跳到具有反斜杠的标记不会 - 它会尝试查找Foo \\ Bar \\ Baz(双反斜杠),从而失败。 – Frode

+0

该路径可能不是很好测试。请将此错误报告给[vim_dev邮件列表](http://www.vim.org/community.php)。 –