現在のファイルの名前と拡張子を取得するにはどうすればよいですか?


24

vimscriptを使用してファイルの名前と拡張子を取得する方法はありますか?

もしそうなら、私は名前と拡張子を別々にしたいと思います。


"ファイル"?どのファイル?現在のバッファにあるもの?検索パスのどこかにファイルがありますか?
ムル

ユーザーが `vim <ファイル名>で開くファイル
-iProgram


完全なパスは必要ありません。ファイルの名前と拡張子のみが必要です。vimscriptでこれも使用したいパスではありません。
iProgram

はい、両方の答えは、リンクされた質問(具体的には、CharlesLの答え)...に実際にある
マーティンTournoij

回答:


27

から:he filename-modifiers

    :t      Tail of the file name (last component of the name).  Must
            precede any :r or :e.
    :r      Root of the file name (the last extension removed).  When
            there is only an extension (file name that starts with '.',
            e.g., ".vimrc"), it is not removed.  Can be repeated to remove
            several extensions (last one first).

    :e      Extension of the file name.  Only makes sense when used alone.
            When there is no extension the result is empty.
            When there is only an extension (file name that starts with
            '.'), the result is empty.  Can be repeated to include more
            extensions.  If there are not enough extensions (but at least
            one) as much as possible are included.
Examples, when the file name is "src/version.c", current dir
"/home/mool/vim":
  :p                    /home/mool/vim/src/version.c
  :t                                       version.c
  :t:r                                     version
  :e                                               c

expand関数を使用してこれらを展開し、値を取得できます。

:let b:baz=expand('%:e')

例えば:

$ vim '+ exe ":normal i" . expand("%:t") . "^M" . expand("%:e")' +wqa foo.bar; cat foo.bar
foo.bar
bar

:t「:rまたは:eの前に配置する必要があります」、「:e単独で使用する場合にのみ意味があります」。この例では、後者に賛同しますが、興味深いことに、ドキュメントはそこで矛盾しています。
SnoringFrog

@SnoringFrog私はそれはあなたが行うことができないということです何を意味するのかと考えてい:e:tますが、:t:e意味のない場合は、許可されています。
ムル

ああ、私はそれがどのように読まれるかを見る。それは理にかなっています。
SnoringFrog

10

ヨは使用することができますexpand()参照してください。:h expand()

スクリプトでは、これを実行してファイル名を取得できます。

let file_name = expand('%:t:r')

拡張機能を取得するには、次のようにします。

let extension = expand('%:e')

このexpand()関数は、ワイルドカードと特殊記号を展開できます。ここ%では、現在のファイル名に展開するものを使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.