ชื่อที่แสดงของไฟล์ปัจจุบันเป็นกลุ่ม?


157

คุณจะแสดงชื่อไฟล์ของไฟล์ที่คุณใช้งานเป็นกลุ่มได้อย่างไร?


1
หากเทอร์มินัลของคุณตั้งค่าถูกต้องคุณควรได้รับชื่อไฟล์ในชื่อหน้าต่าง
Cascabel



2
ctrl + g สามารถแสดงข้อมูลไฟล์ได้
Dhiren Hamal

คำตอบ:


200

:f( :file) <C-G>จะทำเช่นเดียวกับ :f!จะให้รุ่นที่ไม่ถูกคัดออกถ้ามี


2
ดี แต่เป็นไปได้ไหมที่จะแสดงไว้ที่แถบด้านบนสุดของเครื่อง? (หรือเทอร์มิเนเตอร์) หรือบางแห่งโดยไม่ต้องพิมพ์คำสั่ง
eMarine

21
:f!ใช้งานไม่ได้เสมอกด 1 จากนั้นกด Ctrl-G เพื่อหาเส้นทางแบบเต็ม
58

1
เส้นทางเต็มแล้วล่ะ? เมื่อฉันเริ่มต้นที่เป็นกลุ่มจาก~/dev/file.pyและ execure :fภายในกลุ่มที่ฉันได้รับเป็นผลผลิตแทนfile.py ~/dev/file.py
gxyd

1
@ives 1 และ Ctrl + g หมายถึงอะไรแยกจากกัน?
jobima

2
@jobima: แก้ไขctrl-gเพื่อส่งคืนพา ธ + ไฟล์ จะกลับมาชื่อไฟล์โดยไม่ต้องเส้นทางเช่นอาจ:f ก่อนที่จะแสดงเส้นทางและชื่อ (ไม่จำเป็นต้องขยายแม้ว่า) คือมันจะแสดงแทน ตามมาด้วยจะรวมถึงการที่บัฟเฟอร์: ctrl-g1ctrl-g~/dev/file.pyfile.py2ctrl-gbuf 1: "~/dev/file.py"
อีฟส์

71

ctrl+ gจะทำมัน

นอกจากนี้ฉันต้องการ:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

ซึ่งผลิต:

foo.c [C] [0x23] <code / foo.c 1, 1 2% จาก 50

เช่นเดียวกับคนที่กล่าวถึง (แต่ตอนนี้ถูกลบแล้ว) %จะถูกแทนที่ด้วยชื่อไฟล์ปัจจุบัน ตัวอย่างเช่น:

:! echo "ไฟล์ปัจจุบัน:%"
ไฟล์ปัจจุบัน: foo.c
กด ENTER หรือพิมพ์คำสั่งเพื่อดำเนินการต่อ

2
ทำอะไร[C]และ [0x23]ชิ้นส่วนหมายความว่าอย่างไร
LangeHaare

@LangeHaare Filetype และค่าฐานสิบหกของอักขระใต้เคอร์เซอร์ตามลำดับ

'statusline'เป็นสตริง แต่คุณไม่ได้ใส่เครื่องหมายคำพูดในชุด: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesต้องใช้ช่องว่างที่ต้องหลบหนีด้วย
D. Ben Knoble

18

ตั้งค่าบรรทัดสถานะ ข้อมูลเพิ่มเติมกับ:help statusline

คำสั่งเหล่านี้สามารถไปในไฟล์. vimrc ของคุณหรือคุณสามารถป้อนคำสั่งเป็นคำสั่งในขณะที่เป็นกลุ่มโดยพิมพ์ ':' ในโหมดคำสั่ง

ก่อนอื่นตั้งสถานะล่าสุดเป็น 2 โดยใช้สิ่งต่อไปนี้:

set laststatus=2

จากนั้นตั้งค่าบรรทัดสถานะเป็น% f สำหรับชื่อไฟล์แบบสั้น

set statusline=%f

สำหรับเส้นทางแบบเต็มไปยังไฟล์ใช้% F


E518: ตัวเลือกที่ไม่รู้จัก:% f
Isius

ฉันได้อัปเดตคำตอบแล้ว Isius หวังว่าจะทำให้ชัดเจนยิ่งขึ้น
Brian Clements



4

ในการแสดงพา ธ แบบเต็มสำหรับไฟล์ใด ๆ รวมถึง symlink ที่ได้รับการแก้ไขให้ใช้ดังต่อไปนี้

:echo resolve(expand('%:p'))

สามารถเพิ่มลงในแถบสถานะของคุณโดยเพิ่มบรรทัดด้านล่างลงในของคุณ ~./vimrc

set statusline +=%{resolve(expand('%:p'))}\ %*

2

หนึ่งในคำแนะนำข้างต้นต้องเปลี่ยนเป็น

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

เพื่อให้มันทำงาน ด้วย

set laststatus=2

ถูกนำมาใช้


ยินดีต้อนรับสู่Stack Overflow ! นี่น่าจะเป็นการแก้ไขหรือแสดงความคิดเห็นที่แนะนำในคำตอบที่เกี่ยวข้อง - คุณยังไม่มีชื่อเสียงพอที่จะแสดงความคิดเห็นหรือแก้ไข แต่คุณจะเร็วถ้าคุณถามคำถามที่ดีและเขียนคำตอบที่ดี! ในระหว่างนี้ฉันจะแนะนำการแก้ไขที่เกี่ยวข้องให้กับผู้เขียนคำตอบ จับดี!
D. Ben Knoble

1

ฉันใช้สิ่งมหัศจรรย์vimrcจาก amix: https://github.com/amix/vimrc

มันใช้lightline.vimปลั๊กอินและแสดงชื่อไฟล์บนแถบสถานะ

สิ่งที่ยอดเยี่ยมเกี่ยวกับการใช้amix/vimrcคือปลั๊กอินนี้ดูแลการปรับแต่งส่วนใหญ่มีความเสถียรและได้รับการทดสอบโดยผู้คนนับพันในขณะที่คุณสามารถตรวจสอบได้โดยดูที่จำนวนดาวกระจาย Github .. และปัญหาที่เกิดขึ้นไม่บ่อยนัก

มันยังปรับปรุงค่อนข้างบ่อย

PS: ไม่ใช่ผู้สร้างปลั๊กอินอย่างใดอย่างหนึ่ง .. แค่เป็นแฟน :)


1

ฉันยังต้องใส่สิ่งนี้ลงในไฟล์. vimrc ของฉันด้วย:

set noruler
set laststatus=2

จากนั้นฉันสามารถใส่สิ่งที่ต้องการset statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"ในไฟล์. vimrc ของฉันและหลังจากรีสตาร์ทเทอร์มินัลของฉันสถานะจะแสดงขึ้นอย่างถูกต้อง


'statusline'เป็นสตริง แต่คุณไม่ได้ใส่เครื่องหมายคำพูดในชุด: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesต้องใช้ช่องว่างที่ต้องหลบหนีด้วย
D. Ben Knoble
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.