1

次のような文字列値を持つ vim 変数があります。

foo%:p:r:sbar

%:p:r:s は vim のワイルドカードです。

文字列変数ですべてのワイルドカードを展開するにはどうすればよいですか?

残念ながら、 expand(my_variable) は役に立ちません。追加の引数を指定したり、他の vim 関数を使用したりする必要がありますか?

ありがとう。

4

2 に答える 2

3

試す:help expand()

ドキュメントのこのセクションは、特にあなたに関連しているようです:

            Modifiers:
                    :p              expand to full path
                    :h              head (last path component removed)
                    :t              tail (last path component only)
                    :r              root (one extension removed)
                    :e              extension only

            Example: >
                    :let &tags = expand("%:p:h") . "/tags"
            Note that when expanding a string that starts with '%', '#' or
            '<', any following text is ignored.  This does NOT work: >
                    :let doesntwork = expand("%:h.bak")
            Use this: >
                    :let doeswork = expand("%:h") . ".bak"

末尾の (そしておそらく先頭の) 文字列はexpand().

ただし、これは機能します。

:echo "foo" . expand("%:p:r:s") . "bar"

ワイルドカードが他の文字列と組み合わされる前に展開されるように、スクリプトを修正できる可能性があります。または、連結された文字列を分割し、ワイルドカードを展開してから、再度連結することもできます。

于 2009-11-22T19:09:18.990 に答える