【问题标题】:Vim keyword completion for ctags with backslashes?带有反斜杠的 ctags 的 Vim 关键字完成?
【发布时间】:2013-02-06 01:07:06
【问题描述】:

我在 vim 中的 PHP 项目中使用 ctags 完成关键字。由于 ctags 不处理开箱即用的 PHP 命名空间,因此我在 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 在进行标签查找时将反斜杠视为单词的一部分?

【问题讨论】:

    标签: php vim ctags


    【解决方案1】:

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

    :setlocal iskeyword+=\\
    

    请注意,此更改也会影响其他内容,例如w 运动、aw 文本对象,甚至可能是语法高亮。

    【讨论】:

    • 谢谢!有趣的是,虽然这适用于关键字补全,但跳转到带有反斜杠的标签却不起作用——它试图找到 Foo\\Bar\\Baz(双反斜杠),但失败了。
    • 这条路径可能没有经过很好的测试。请将此错误报告给vim_dev mailing list
    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多