現在のバッファで特定のパターンを検索して返す関数を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