Geçerli dosyanın adını ve uzantısını nasıl alabilirim?


24

Vimscript kullanarak bir dosyanın adını ve uzantısını almanın bir yolu var mı?

Öyleyse adı ve uzantıyı ayrı ayrı istiyorum.


"bir dosya"? Hangi dosya Geçerli tampondaki mi? Arama yolunda bir yerde bir dosya mı var?
muru

Kullanıcının `vim <dosya adı> üzerinden
açtığı


Tam yolu istemiyorum. Ben sadece dosyanın adını ve uzantısını istiyorum. Yolu değil, bunu da vimscript'te kullanmak istiyorum.
iProgram

Evet, ikisi cevaplar ... bağlantılı soruya (özellikle CharlesL cevabı) hakikaten
Martin Tournoij

Yanıtlar:


27

Kimden :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

Bunları expandgenişletmek ve değerlerini elde etmek için işlevi kullanabilirsiniz :

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

Örneğin:

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

:t" Must henüz e: r veya herhangi önce" :e"tek başına kullanıldığında sadece mantıklı". Örnekte, ikincisiyle aynı taraftayım, ancak doktorların orada kendilerini çelişmesi ilginç.
SnoringFrog

@SnoringFrog Bunun ne anlama geldiğine inanıyorum, yapamazsınız :e:t, ama :t:eanlamsızsa izin verilir.
muru

Oh, nasıl okunabileceğini anlıyorum. O zaman mantıklı.
SnoringFrog

10

Yo kullanabilirsiniz expand()bkz:h expand()

Bir komut dosyasında dosya adını almak için bunu yapabilirsiniz:

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

Uzatma almak için yapabilecekleriniz:

let extension = expand('%:e')

expand()Fonksiyon joker ve özel genişletebilirsiniz sembolleri . Burada %geçerli dosya adına genişleyen kullandım .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.