2016-10-26 1 views
1

私は:echo expand("<cword>")と入力してください。vimはその単語をカーソルに表示します。 しかし、私は:tag expand("<cword>")を入力すると、それが求められます。なぜvim expandが機能しないのですか

E426:タグが見つかりません:拡張(

expand(tagに送信され、拡張機能は、タグ機能で呼び出されていない、ということらしいですパラメータとして。任意の洞察力を事前に

感謝。 任意の参照が好まれる。

+0

':echo'、':let'と私は忘れるかもしれない他のコマンドを受け入れるように設計されていますvim式、vars、funcs ...しかし、他のコマンドのほとんどはそうしない。想像してください:あなたはいつも ':e" myfile.txt "'と引用符をつけていつも入力したいですか?それは本当に非生産的だろう – yolenoyer

答えて

4

Vimscriptが正確に評価されますコマンドラインで:に入力されたExコマンドのように。 exには変数がなかったので、それらを指定する方法はありません。対話的にコマンドを入力すると、あなたはおそらく、変数の内容を挿入するために<C-R>=を使用したい:

:tag <C-R>=expand('<cword>')<CR><CR> 

...(まあ、実際には現在の単語のための<C-R><C-W>短いがあります)。

スクリプトでは、:executeを使用する必要があります。 Exコマンドのすべてのリテラルの部分は、(単一または二重引用符)引用され、その後、変数を連結する必要があります。

:execute 'tag' expand('<cword>') 
+0

こんにちは、インゴ、の違いは何ですか?そして彼は何を後にしますは何ですか? –

+0

」はControl + Rです。コマンドラインモードでは、これはレジスタの内容を挿入します。ここでは、特別な '= '式レジスタが使用されます。 ''はEnterキーです。我々はそれを二度必要とする:一旦式の入力を終えると、もう一度コマンドラインを終了する。 –

関連する問題