ฉันจะแสดงเส้นทางของไฟล์ปัจจุบันอย่างถาวรใน Vim ได้อย่างไร


91

ฉันรู้ว่าCTRLgแสดงไฟล์ปัจจุบันที่คุณกำลังทำงานอยู่ มีวิธีแก้ไข.vimrcสิ่งที่ชื่อไฟล์ / พา ธ แสดงอยู่เสมอหรือไม่?

คำตอบ:


129

ในสเตตัสไลน์ของคุณเพิ่ม a %Fเพื่อแสดงเส้นทางแบบเต็ม:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

หมายเหตุ%Fจะเป็นเส้นทางแบบเต็ม หากต้องการรับเส้นทางที่สัมพันธ์กับไดเร็กทอรีการทำงานให้ใช้%f.

หากสถานะของคุณไม่ปรากฏให้เห็นก่อนอื่นคุณอาจต้องกำหนดค่าให้มองเห็นได้ตลอดเวลาผ่านทาง laststatus=2

set laststatus=2

ดู:help laststatusความหมายของตัวเลือก โดยปกติแล้วสเตตัสไลน์อาจถูกซ่อนไว้หรือถูกซ่อนไว้เว้นแต่จะเปิดบัฟเฟอร์หลายตัว แต่ฉันพบว่ามีประโยชน์อย่างยิ่งที่จะมีการปรับแต่งแบบนี้ตลอดเวลาซึ่งควรค่าแก่การสำรองบรรทัดหน้าจอหนึ่งบรรทัด


1
ฉันชอบคำตอบของคุณมากกว่า แต่การเพิ่มset statusline+=%Fให้ฉัน~/.vimrcดูเหมือนจะไม่ทำตามที่คุณพูด แม้ว่าเอกสารจะเห็นด้วยกับคุณอย่างแน่นอน ...
Tim Pote

1
สิ่งนี้ไม่มีผล ขอโทษถ้าฉันพลาดอะไรง่ายๆคุณมีความคิดเกี่ยวกับเรื่องนั้นบ้างไหม?
zallarak

1
@TimPote vim รุ่นอะไร? เหมาะสำหรับฉัน บางทีสเตตัสไลน์ของคุณอาจจะดันหลุดหรือจำกัดความกว้าง ลอง:set statusline=%Fโดยไม่ต้อง+
Michael Berkowski

@zallarak ดูความคิดเห็นของฉันกับทิม ไม่เปลี่ยนแปลง statusline ของคุณถ้าคุณก็ทำ:set statusline=%F? มองไปทางขวาหรือซ้ายเพื่อดูว่าชื่อไฟล์ซ่อนอยู่ที่นั่นในสถานะหรือไม่
Michael Berkowski

2
@TimPote อาจจะset laststatus=2เพื่อให้เห็นสถานะตลอดเวลา ฉันลืมไปแล้วว่าฉันมีอยู่
Michael Berkowski

20

ตั้งค่า ls = 2

เพิ่มสิ่งนี้ใน vimrc และคุณจะเห็นชื่อไฟล์ที่ด้านล่างเสมอ


set modeline ไม่ได้ทำอะไรให้ฉันคิดว่าจะทำอะไร? (set ls = 2 ทำบางอย่างแล้ว) ฉันจะจัดการ / ช่วยคิดเรื่องนี้ด้วยตัวเองในครั้งต่อไปได้อย่างไร ขอบคุณ! :)
Charlie Parker

1
set modelineค่อนข้างอันตรายและไม่มีส่วนเกี่ยวข้องกับคำถาม อนุญาตให้ดำเนินการคำสั่ง Vim ใน 5 บรรทัดเริ่มต้น / สิ้นสุดของไฟล์ ควรเปิดโดยผู้ที่รู้สาเหตุและต้องการสิ่งนี้จริงๆเท่านั้น (นั่นคือเหตุผลที่ฉัน -1 คำตอบนี้)
DrBeco

16

ฉันพบ 2 วิธีในการแสดงเส้นทางไฟล์ในแถบชื่อเรื่องของ gnome-terminal ขณะแก้ไขไฟล์ด้วย Vim

วิธีที่ง่ายกว่า (และดีกว่า): เพิ่มบรรทัดต่อไปนี้ใน~/.vimrc:

set title

ซึ่งจะแสดงให้คุณเห็นที่ด้านบน:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

วิธีที่ซับซ้อนกว่านี้จะแสดงเส้นทางไฟล์ที่แน่นอน มีการบันทึกรายละเอียดเพิ่มเติมเล็กน้อยในโพสต์บล็อกนี้ที่ฉันเพิ่งเขียน


"set title" จะแสดงชื่อไฟล์บนแท็บเทอร์มินัล คุณสมบัติที่น่าสนใจ
duleshi

น่าสนใจเหมือนเดิมไม่ตอบคำถามที่ถาม นอกจากนี้คุณยืนยันว่ามันดีกว่า - แต่อาจไม่เป็นเช่นนั้น ตัวอย่างเช่นหากคุณเปิดเป็นกลุ่มในเทอร์มินัลซึ่งอยู่ในโหมดเต็มหน้าจอจะมองไม่เห็นชื่อ ดังนั้นโหวตลง
apprenticeDev

8

:echo expand('%:p')วิธีเดียวที่ฉันจะได้รับพบเส้นทางที่เต็มรูปแบบของไฟล์ผมทำงานในคือ: คุณสามารถแมป ctrl + g ใหม่ได้หากต้องการ แต่โดยส่วนตัวแล้วฉันไม่ชอบที่จะเปลี่ยนไปจากมาตรฐานมากเกินไป ฉันได้แมป F7 ดังนี้:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
:help CTRL-Gและมองลงสองย่อหน้าCTRL-Gด้วยการนับ
Stefan Majewsky

1
ขอบคุณ @StefanMajewsky 1 CTRL-Gแสดงชื่อไฟล์แบบเต็ม ฉันกำลังค้นหาตัวเลือกนี้
Anton Kiselev

ฉันรักคุณทิมนี่เป็นวิธีเดียวที่จะแสดงเส้นทางที่สมบูรณ์อย่างแน่นอนแม้ว่าจะไม่มี~ก็ตาม
ryancheung

7

หากคุณใช้vim-airlineให้ใส่.vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

นี้คือการเปลี่ยนแปลงของการเริ่มต้นสายการบินมีการเปลี่ยนแปลงโดย%f%F


6

ฉันใช้มาตลอด:fแต่คำตอบและลิงค์จาก @MichaelBerkowski นั้นยอดเยี่ยมมาก!

:f แสดงเส้นทางการนับบรรทัดสถานะที่แก้ไขตำแหน่งเคอร์เซอร์ปัจจุบันและอื่น ๆ ...

ไม่รู้เรื่องCTRLGแต่ดูเหมือนจะไล่เลี่ยกัน


5

ฉันคิดว่าสเตตัสไลน์นั้นทรงพลังและมีประโยชน์มาก ช่องว่างจะแสดงชื่อไฟล์ตำแหน่งเคอร์เซอร์และธงบางอย่าง แต่คุณต้องการทำเช่นเดียวกับฉันและแทนที่ชื่อไฟล์ -part ด้วยเส้นทางแบบเต็มไปยังไฟล์

ดังนั้นในขณะที่แก้ไขสถานะของ.vimrcฉันอาจมีลักษณะเช่นนี้เป็นค่าเริ่มต้น:

.vimrc                                                        26,16           7%

คุณสามารถดูการตั้งค่าสถานะของคุณด้วย:

:set statusline?

แต่ถ้าคุณไม่ได้ทำการเปลี่ยนแปลงใด ๆ และไม่มีโมดูลใดเปลี่ยนแปลงมันก็จะว่างเปล่า แต่จากตัวอย่างในส่วนวิธีใช้ ( :help statusline) คุณจะพบว่าค่าเริ่มต้นคือ:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

ดังนั้นรวมนี้ไว้ใน.vimrcการเปลี่ยนแปลงและการ%f %Fฉันยังได้เพิ่มแฟ%yล็กfiletype ( ) ลงในสเตตัสไลน์ด้วยเพราะฉันคิดว่ามันสะดวก ดังนั้นการกำหนดค่าผลลัพธ์ของฉันจึงมีลักษณะดังนี้:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

และผลลัพธ์จะมีลักษณะดังนี้:

~/.vimrc [vim]                                                26,16           7%

การอ่านที่ดี:

ปล. ฉันเรียกใช้กลุ่ม 7.3


4

หากคุณต้องการให้เส้นทางรวมลิงก์สัญลักษณ์ที่แก้ไขแล้วให้ใช้สิ่งต่อไปนี้:

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

หากต้องการใช้ตัวย่อ '~' สำหรับโฮมไดเร็กทอรีของคุณให้รวม fnamemodify

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

ทั้งสองอย่างนี้ใช้ได้กับฉันใน VIM 7.4 โดยใช้ iTerm2 ถึง SSH ใน Ubuntu 16.04 LTS
James Nicholson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.