ฉันจะรับชื่อและนามสกุลของไฟล์ปัจจุบันได้อย่างไร


24

มีวิธีรับชื่อและนามสกุลของไฟล์โดยใช้ vimscript หรือไม่?

ถ้าฉันต้องการชื่อและนามสกุลแยกต่างหาก


"ไฟล์"? ไฟล์ไหน? หนึ่งในบัฟเฟอร์ปัจจุบันหรือไม่ ไฟล์อยู่ในเส้นทางการค้นหาหรือไม่?
muru

ไฟล์ที่ผู้ใช้เปิดผ่าน `vim <ชื่อไฟล์>
iProgram


ฉันไม่ต้องการเส้นทางที่สมบูรณ์ ฉันต้องการชื่อและนามสกุลของไฟล์เท่านั้น ไม่ใช่เส้นทางที่ฉันต้องการใช้ใน vimscript
iProgram

ใช่คำตอบทั้งคู่เป็นจริงในคำถามที่เชื่อมโยง (โดยเฉพาะคำตอบของ
CharlesL

คำตอบ:


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ได้รับอนุญาตหากไม่มีความหมาย
muru

โอ้ฉันเห็นว่ามันอ่านได้อย่างไร ที่เหมาะสมแล้ว
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.