我正在尝试编写一个仅返回完整 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 正则表达式差异的概述。