1

私がやろうとしていることを述べる前に、私はあらゆる/すべての解決策に対してオープンであることを前置きしたいと思います.

基本的に私はPHPファイルを編集しています。私が編集しているクラスには、次のようなキーを受け取るローカリゼーション関数があります。

$this->localize('SOME_KEY_HERE');

私が(VIMで)やろうとしているのは、カーソルがそのキーの上にあるときに、その関数呼び出しのローカリゼーション値が何であるかを決定するキーバインディングを作成することです。キーをvimscript関数に簡単に入れることができます。私の計画は、正規表現を介してクラス名を見つけ(これは完璧である必要はありません)、 :exec php -r を介してそのクラスをインスタンス化し、関数を呼び出すことでした。したがって、多かれ少なかれ、実際に呼び出しを行う最小限のスクリプトを作成します。

私が言ったように、キーを好きなように分離することができます。しかし、現在のクラスを見つけるための適切なvimscriptの方法を見つけようとしています。基本的に、現在のファイルの /^class / に一致する最初の行の 2 番目の単語が vimscript 変数に必要です。いくつかのドキュメントを参照しましたが、機能しないようです。

この操作を実行する方法に関する任意/すべての提案を受け入れます。

編集:明確にするために、次のようなことを行うことで、強調表示しているキーを分離できます。

noremap <leader>z :call DoSomething(expand("<cword>"))<CR>

function! DoSomething(l)
    let key = a:l
    echom key
endfunction
4

1 に答える 1

2

現在のクラスの名前を取得するには、次のようにします。

function! DoSomething(l)
    let key = a:l
    search('^class\s\zs\w\+\ze', 'b')
    let class = expand('<cword>')
    echo 'key: ' . key . ' class: ' . class
endfunction

カーソルの位置を処理する必要があります。

于 2013-10-17T20:10:47.153 に答える