我正在尝试编写一个vim函数,它只返回完整Git(hub) URL的Owner/Repo组件。
例如:
function! PackInstall(source)
let short = substitute(a:source, '(?<=\:)(.*?)(?=\.git)', '\1', "")
echo short
endfunction在上面的例子中,我希望像git@github.com:vim-airline/vim-airline.git这样的‘源’返回一个'short‘值vim-airline/vim-airline。不幸的是,这个正则表达式似乎不能编译,'short‘只是返回为原始的git@github.com:vim-airline/vim-airline.git。
在此上下文中使用什么正则表达式是正确的,还是有更简单的方法?
谢谢!
发布于 2019-12-22 04:31:01
看起来您正在尝试使用类似于Perl的regex语法。但是Vim有它自己的风格。
一种可能的解决方案:
function! PackInstall(source)
return matchstr(a:source, ':\zs.*\ze\.git')
endfunction有关Vim与Perl正则表达式差异的概述,请参阅:h perl-patterns。
https://stackoverflow.com/questions/59439563
复制相似问题