วิธีการค้นหาไฟล์ที่เปิดอยู่ในกลุ่ม?


61

สิ่งนี้อาจฟังดูเล็กน้อย แต่มีอยู่มากกว่าหนึ่งครั้งที่ฉันพบว่าตัวเองลืมไฟล์ที่vimเปิดอยู่ (เช่นเมื่อฉันดูไฟล์บันทึกต่าง ๆ และอื่น ๆ ) และวิธีเดียวที่ฉันรู้ว่าจะต้องค้นหาคือปิด ไฟล์และดูในประวัติคำสั่งสำหรับคำสั่งล่าสุด

มีคำสั่งภายในเสียงเรียกเข้าเพื่อบอกคุณว่าไฟล์ใดที่คุณเปิดอยู่ในขณะนี้โดยไม่ออกจากโปรแกรมหรือไฟล์ที่คุณเปิด (เช่น:<which_file_cmd>?)


5
หากคุณไม่ได้โทรvimกับ args :argsจำนวนมากดังนั้นการใช้งาน
41754

คำตอบ:


76

นอกจากคำตอบของ upregoคุณสามารถกดCtrl+ G(ในโหมดปกติ) เพื่อรับชื่อบัฟเฟอร์ปัจจุบันรวมถึงจำนวนบรรทัดทั้งหมดในนั้นและตำแหน่งปัจจุบันของคุณภายใน

ปรับปรุง

ตามความคิดเห็นของ rxdaznคุณสามารถกด1ก่อนCtrl+ Gเพื่อรับเส้นทางไฟล์แบบเต็ม หากคุณกด2คุณจะได้รับพา ธ ไฟล์เต็มและหมายเลขบัฟเฟอร์ที่คุณเปิดอยู่ (มีประโยชน์เมื่อคุณเปิดไฟล์หลายไฟล์ด้วยvim)


เช่นเดียวกับคำสั่ง vim จำนวนมากสิ่งนี้ยังใช้กับlessคำสั่งที่ฉันใช้เมื่อดูไฟล์ซึ่งต่างจากการแก้ไข
jmathew

18
นอกจากนี้การกด 1 ก่อน Ctrl + G จะให้เส้นทางแบบเต็มของไฟล์แก่คุณ
rxdazn

23

เมื่ออยู่ในvimฉันมักจะใช้:lsคำสั่ง

ตัวอย่าง

:ls
  1 %a   "blah.txt"                         line 1

blah.txtชื่อไฟล์อยู่ที่ไหน



7

เมื่อvimไม่ได้เรียกด้วยargs จำนวนมาก:argsจะมีประโยชน์


4
ปัญหาอื่น ๆ ของการทำเช่นนี้คือถ้าไฟล์ถูกเปิดหลังจากเรียกใช้ vim ไฟล์นั้นจะไม่ปรากฏ
Patrick

4

หากคุณสามารถมีไฟล์คอนฟิกูเรชัน vim ดีฟอลต์คุณสามารถเพิ่ม a statuslineเพื่อให้มีรายละเอียดไฟล์อยู่เสมอ ฉันเข้าใจว่าหากคุณกำลังส่งต่อไปยังเซิร์ฟเวอร์อื่น ๆ ตลอดเวลาจะไม่ช่วยอะไรมาก นี่คือความซับซ้อนเล็กน้อยของฉันที่ดึงมาจาก. vimrc ของฉัน

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

และดูเหมือนว่าใน MacVim (แต่ทำงานในเทอร์มินัลด้วย) ป้อนคำอธิบายรูปภาพที่นี่

เช่นเคยคุณสามารถทำได้:help statuslineเพื่อรับตัวเลือกและรายละเอียดเพิ่มเติม และชำระเงินการเรียนรู้ Vim the Hard Way ch 17สำหรับคำอธิบายสถานะที่ดี


ฉันมักจะใช้สถานะเช่นกัน +1
Rob

1

นอกจากนี้ยัง:echo @%มีชื่อของไฟล์ที่สัมพันธ์กับไดเรกทอรีปัจจุบัน


1

มีวิธีนับไม่ถ้วนในการรับข้อมูลประเภทนี้ แต่ถ้าคุณต้องการบางสิ่งเพื่อที่คุณจะต้องกดปุ่มเท่านั้นและชื่อไฟล์จะปรากฏขึ้นจากนั้นให้แทรกข้อมูลต่อไปนี้ลงใน~/.vimrc:

map <F4> <ESC>:file<CR>

สิ่งนี้บอกว่า

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

และfileคำสั่งตามที่เห็นได้ชัดส่งคืนชื่อของไฟล์ปัจจุบันพร้อมกับข้อมูลอื่น ๆ

คุณสามารถตั้งค่าสถานะบรรทัดเพื่อที่คุณจะไม่ต้องทำอะไรนอกจากดู

หากต้องการให้บรรทัดสถานะแทรกสิ่งต่อไปนี้ลงใน~/.vimrc:

set laststatus=2

สิ่งนี้จะบอกให้ ViM แสดงสถานะบรรทัดเสมอตัวเลือกอื่น ๆ คือ0ไม่ใช้เลยและ1เฉพาะเมื่อคุณเปิดหน้าต่างสองหน้าต่างขึ้นไปใน ViM เท่านั้น


1

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

Caveat : มันจะเปิดไฟล์จากดิสก์เป็นหลักดังนั้นจึงมีประโยชน์มากที่สุดเมื่อไฟล์ถูกบันทึกไว้แล้ว

:help :e พูดว่า:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.

1

ฉัน vimrc ของฉันฉันมีแผนที่นี้

nnoremap <leader>pfn :echo expand('%:p')<CR>

ดังนั้นถ้าฉันพิมพ์,pfnหรือ "พิมพ์ชื่อไฟล์" มันจะสะท้อนเส้นทางไฟล์ทั้งหมด

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