我正在尝试在 Vim 中编写一个函数,该函数在当前缓冲区中搜索特定模式并返回它。但是,我失败得很厉害。基本上,我想要的是一个函数,它返回我正在使用的文件的(PHP)命名空间。命名空间在文件本身中定义:
namespace Foo\Bar;
我想要的是一个将Foo\Bar
部分作为字符串返回的函数。即搜索喜欢/namespace\s\([^;]\+\)
并返回第一个子匹配的东西。
编辑:由于我得到的帮助,这是我构建的功能:
func! PhpNamespace()
let l:lnr = 0
while l:lnr < line('$')
let l:str = matchstr(getline(l:lnr), '^\s*namespace\s\+[^;]\+')
if len(l:str)
return substitute(l:str, '^\s*namespace\s\+', '', '')
endif
let l:lnr = l:lnr + 1
endwhile
return ''
endfunc