使gf匹配python导入

时间:2018-06-21 05:40:42

标签: vim

我希望gf命令可用于Python导入,但是在from foo.bar import baz风格的导入方面遇到了麻烦。

基本问题是我不知道如何使includeincludexpr匹配“ from”和“ import”之间的文本,然后在“ import”之后添加文本。 Vim似乎拒绝匹配任何空格,更不用说允许反向引用连接匹配文本的两个部分了。

这可能吗?

1 个答案:

答案 0 :(得分:2)

是的,不仅有可能,而且内置的Python ftplugin已经为您处理了所有事情:

  • 查找包含(与gf不相关):

    setlocal include=^\\s*\\(from\\\|import\\)
    
  • 将包含内容转换为路径(与gf相关):

    setlocal includeexpr=substitute(substitute(substitute(
          \v:fname,
          \b:grandparent_match,b:grandparent_sub,''),
          \b:parent_match,b:parent_sub,''),
          \b:child_match,b:child_sub,'g')
    
  • 添加正确的扩展名(与gf相关):

    setlocal suffixesadd=.py
    

只需确保您的vimrc中有以下任一行任一

filetype plugin on
filetype plugin indent on
filetype indent plugin on

启用ftplugin机制。