Vim 使gf与python导入匹配

Vim 使gf与python导入匹配,vim,Vim,我希望gf命令能够处理Python导入,但是我在使用foo.bar import baz的导入样式时遇到了问题 基本问题是,我不知道如何使include或includexpr在“from”和“import”之间匹配文本,然后在“import”之后添加文本。Vim似乎拒绝匹配任何空白,更不用说允许对匹配文本的两部分进行反向引用了 这可能吗?是的,这不仅可能,而且内置的Python ftplugin已经为您处理了所有这些: 查找包括(与gf无关): 将包含内容转换为路径(与gf相关): 添加正

我希望gf命令能够处理Python导入,但是我在使用foo.bar import baz的
导入样式时遇到了问题

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


这可能吗?

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

  • 查找包括(与
    gf
    无关):

  • 将包含内容转换为路径(与
    gf
    相关):

  • 添加正确的扩展名(与
    gf
    相关):

只需确保在
vimrc
中有以下任一行:

filetype plugin on
filetype plugin indent on
filetype indent plugin on

要启用ftplugin机制。

Hm,我的includeexpr只需
替换(v:fname,“\”,“/”,“g”)
。是您在vim的更高版本中提到的那个吗?我用的是8.0。我想我在vim src的头部看到了你的。最后,我编写了我的owner includeexpr函数,该函数的作用大致相同,还处理
\uuuu init\uuuu
文件/dirs
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')
setlocal suffixesadd=.py
filetype plugin on
filetype plugin indent on
filetype indent plugin on