Vim 函数通过正则表达式从 Git URL 中删除所有者/存储库



我正在尝试编写一个仅返回完整 Git(hub( URL 的所有者/存储库组件的 vim 函数。

例如:

function! PackInstall(source)
let short = substitute(a:source, '(?<=:)(.*?)(?=.git)', '1', "")
echo short      
endfunction

在上面的例子中,我希望像git@github.com:vim-airline/vim-airline.git这样的"源"返回vim-airline/vim-airline的"短"值。不幸的是,这个正则表达式似乎没有编译,"short"只是作为原始git@github.com:vim-airline/vim-airline.git返回。

在这种情况下使用什么正确的正则表达式,或者有更简单的方法?

谢谢!

看起来您正在尝试使用类似Perl的正则表达式语法。但 Vim 有自己的味道。

一个可能的解决方案:

function! PackInstall(source)
return matchstr(a:source, ':zs.*ze.git')
endfunction

另请参阅:h perl-patterns以获取 Vim 与 Perl 正则表达式差异的概述。

最新更新