ประวัติไฟล์ล่าสุดในกลุ่ม?


136

ฉันต้องการเข้าถึงไฟล์ล่าสุดที่ฉันเปิดแล้วปิดใน GVim ฉันเปิดและปิด GVim บ่อยๆ ฉันต้องการเข้าถึงไฟล์ล่าสุดจากเซสชันก่อนหน้านี้ด้วย

GVim เก็บไฟล์ล่าสุดไว้ที่ไหนสักแห่งเป็น Word และแอปเดสก์ท็อปอื่น ๆ อีกมากมายหรือไม่ จะเข้าถึงได้อย่างไร?


คำถามที่คล้ายกัน: stackoverflow.com/questions/309723/…
malgca

คำตอบ:


235

อย่างน้อย terminal vim จะเก็บไฟล์สิบไฟล์ก่อนหน้านี้ไว้~/.viminfoในส่วน filemarks คุณสามารถใช้'0, '1, '2...'9ที่จะกระโดดในหมู่พวกเขา

(น่าจะเป็นประโยชน์สำหรับ '0การกลับไปยังไฟล์ล่าสุดที่คุณแก้ไขเว้นแต่หน่วยความจำของคุณจะแข็งแกร่งกว่าของฉัน)

คุณยังสามารถใช้:browse oldfilesคำสั่งเพื่อรับเมนูที่มีตัวเลข


2
หากคุณต้องการใช้0- 9เป็นเครื่องหมายสำหรับการนำทางอย่าทำเครื่องหมายด้วยตนเอง
หยวน

20
ใช้:browse oldget file-list และเข้าไปqเพื่อเลือกไฟล์ที่จะแก้ไข
songhir

6
:e #<1:h c_#<เปิดแฟ้มที่ผ่านมาเห็น
Hotschke

: bro ol ใช้งานได้ .. แต่คุณต้องพิมพ์คีย์จำนวนมาก .. ก่อนอื่นเพื่อรับรายการไฟล์จากนั้นกด q จากนั้นจึงเลือกตัวเลข ฉันเชื่อว่าปลั๊กอิน MRU ที่กล่าวถึงด้านล่างดีกว่ามาก: stackoverflow.com/a/3171323/4752883 คุณต้องกด <leader> f จากนั้นเรียกดูไฟล์ด้วย hjkl หรือคีย์อื่น ๆ / ค้นหาชื่อไฟล์ จากนั้นกด o, Enter, t หรือ v เพื่อเปิดไฟล์อย่างรวดเร็วใต้เคอร์เซอร์
alpha_989

ฉันกู้คืนไฟล์ที่ฉันลบโดยไม่ได้ตั้งใจโดยrmใช้วิธีการข้างต้น
ตีคู่

59

วิธีที่ดีที่สุดที่ฉันใช้คือ

:browse oldfiles

วิธีที่ง่ายที่สุดในกลุ่ม


1
ดี! ฉันแมปนิพจน์นั้นเป็น "nmap bo: เรียกดูไฟล์เก่า <CR>" (โดยไม่มีใบเสนอราคา) ใน ~ / .vimrc ของฉัน เพียงพิมพ์การแมปนั้น (bo) ในโหมดปกติจะเรียกใช้คำสั่งนั้น
Victoria Stuart


22

คำตอบที่ช้ามากที่นี่ ... อธิบายเกี่ยวกับคำตอบ @sarnolds - คุณสามารถดูประวัติไฟล์ด้วยคำสั่ง oldfiles @see: h oldfiles หรือ: h viminfo

:oldfiles 

นอกจากนี้คุณสามารถจัดการไฟล์แบบละเอียดพร้อมมุมมองและเซสชัน ... @see: h mkview และ: h mksession สำหรับข้อมูลเฉพาะ ...


6
เป็นประโยชน์ที่จะทราบวิธีเปิดไฟล์จริง ๆ หลังจากที่คุณทราบหมายเลขจากรายการ:oldfilesไฟล์. หนึ่งสามารถทำได้โดยใช้:browseคำสั่งแบบโต้ตอบตามที่อธิบายโดย @sarnold แต่ก็สามารถทำได้ด้วยตนเองโดยใช้โดย:e #<Nที่ N คือตัวเลขจากoldfilesรายการ
Krzysztof Adamski

11

มีดสวิสมีดสลับไฟล์ปลั๊กอิน CtrlPซึ่งเป็นส่วนหนึ่งของjanus distribution มี:CtrlPMRUคำสั่งพร้อมการค้นหาอัจฉริยะระหว่างไฟล์ที่เพิ่งใช้

หมายเหตุ: CtrlPรักษารายการของไฟล์ที่ใช้ล่าสุดในรูปแบบg:ctrlp_cache_dir."mru/cache.txt". ไม่ได้ใช้ viminfo ( set viminfo?) ซ้ำซึ่งมีรายการเครื่องหมายไฟล์ สิ่งนี้มีประโยชน์หากคุณต้องการล้างรายการนี้


1
อินเทอร์เฟซ CtrlP ไม่ใช้งานง่ายสำหรับผู้ใช้กลุ่ม? ไม่คุ้มกับปัญหาในการเรียนรู้อินเทอร์เฟซที่ซับซ้อนเพื่อทำสิ่งง่ายๆในการค้นหาไฟล์ MRU = ~ / regexp / (ทำได้อย่างง่ายดายด้วย perl / grep regexp ~ / _viminfo)
มอช

ใช่ฉันพยายามทำความเข้าใจวิธีใช้ Ctrlp แล้ว แต่ MRU ดูเหมือนจะใช้งานง่ายกว่ามากถ้าคุณมีชุดไฟล์ง่ายๆ ( stackoverflow.com/a/3171323/4752883 ) ใน MRU คุณยังสามารถค้นหา VIM regexp เพื่อค้นหาไฟล์ที่คุณต้องการ ...
alpha_989

10

ใช้:bro olจากนั้นกดหมายเลขที่ตรงกับไฟล์ที่คุณต้องการเปิด


5

CtrlPปลั๊กอินช่วยให้คุณสามารถค้นหาผ่านไฟล์ที่ใช้เมื่อเร็ว ๆ นี้ของคุณเป็นไฟล์ในไดเรกทอรีปัจจุบันด้วยคำสั่งนี้

nnoremap <c-p> :CtrlPMixed<cr>

สิ่งนี้ช่วยให้คุณไม่ต้องยุ่งยากกับการจัดการกับคำสั่ง Vim และปลั๊กอิน MRU ซึ่งทั้งสองอย่างนี้ไม่อนุญาตให้คุณค้นหาไฟล์ที่คลุมเครือซึ่งเป็นสิ่งสำคัญเมื่อทำงานในโครงการขนาดใหญ่


สำหรับผู้ที่มีความต้านทานเกี่ยวกับการแมปค่าเริ่มต้นของ Ctrl-P ซ้ำตามหน้าที่: คุณสามารถเปิด Ctrl-P ได้ตามปกติและใช้ Ctrl-F หรือ Ctrl-B เพื่อสลับระหว่างโหมดต่างๆ (MRU เป็นหนึ่งในนั้น)
Gustavo Matias


2

ดังที่เห็นในความคิดเห็นที่นี่ (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim) ไฟล์ของคุณอาจยังเปิดอยู่ในบัฟเฟอร์:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

ตัวอย่างเช่นคุณสามารถเปิดบัฟเฟอร์ที่สามอีกครั้งในแท็บใหม่ (ใช้: e แทนหากคุณไม่ใช้แท็บ):

:tabnew +3buf

1
ใช่มันใช้งานได้ แต่งานของบรรณาธิการคือการทำให้สิ่งต่างๆเป็นเรื่องง่าย? หากคุณต้องออกคำสั่งให้ระบุบางสิ่งด้วยสายตาจำรหัสจากนั้นให้ออกคำสั่งอื่นที่เสียเวลาผู้ใช้อย่างแท้จริง คำตอบของคุณถูกต้องและฉันไม่ได้หมายถึงความผิด แต่มันไม่ได้มีไว้สำหรับคุณสมบัติของนักฆ่าคนใดคนหนึ่ง!
artfulrobot

ผมมีปัญหาเหมือนกัน. คุณเคยลอง buffexplorer หรือไม่? มันรวม ls และ: tabnew + Nbuf ตอนนี้คุณสามารถเปิดรายการบัฟเฟอร์และเปิดในแท็บใหม่เป็นต้นด้วยการกดแป้นพิมพ์เดียว (o, t, v) และอื่น ๆ
alpha_989

2

คุณอาจสามารถเข้าถึงรายการจากบรรทัดคำสั่งด้วย:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

คำอธิบาย:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

คุณอาจมีนามแฝง bash หากคุณใช้สิ่งนี้เป็นประจำ

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

เพิ่ม 2 เซ็นต์ของฉันที่นี่เพราะ fzf ถูกไม่ได้กล่าวถึงก่อนหน้านี้ซึ่งเป็นเช่นเครื่องมือที่ยอดเยี่ยม:
fzf.vimมี:Historyคำสั่งที่ช่วยให้คุณค้นหามากที่สุดไฟล์ที่คุณใช้เมื่อเร็ว ๆ นี้ในเลือนและค้นหาขณะที่คุณพิมพ์ลักษณะ
ฉันปรับแต่งพฤติกรรม (ค่าเริ่มต้น) ของคำสั่งนี้โดยไม่ให้ fzf เรียงลำดับรายการผลการค้นหาใหม่ให้ตรงที่สุด: ฉันต้องการให้ลำดับของชื่อไฟล์ที่ตรงกันทั้งหมดเป็นลำดับที่ไฟล์เหล่านี้ถูกใช้ครั้งล่าสุด
ในการปรับแต่งนี้ให้สำเร็จฉันได้เพิ่มสิ่งต่อไปนี้ใน. vimrc ของฉันเพื่อแทนที่Historyคำสั่งเริ่มต้นที่กำหนดโดยปลั๊กอิน fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

อีกหนึ่งปลั๊กอินช่วยให้ที่คุณเลือกไฟล์จากรายการที่แก้ไขล่าสุดคือstaritfy มันจะแทนที่หน้าจอเริ่มต้นของคุณด้วยรายการไฟล์ที่แก้ไขล่าสุด คุณสามารถเปิดเพจนี้ได้ในภายหลังโดยใช้:Startifyคำสั่ง


1
ไม่สามารถเริ่มการติดตั้งได้ - ต้องการเอกสารเพิ่มเติมเกี่ยวกับการติดตั้งและการใช้งานพื้นฐาน ใช้ MRU เนื่องจากติดตั้งและใช้งานง่าย
mosh

1

:ls เพื่อแสดงรายการไฟล์ล่าสุดพร้อมหมายเลขบัฟเฟอร์ในคอลัมน์ทางซ้ายมือ

แล้วทำ :b{buffer-number}กระโดดไปที่นั่น

ตัวอย่าง: :lsแสดงรายการไฟล์ ฉันต้องการข้ามไปยังไฟล์ที่สามสุดท้ายที่ฉันเยี่ยมชม :b3จะพาฉันไปที่นั่น

เพื่อการค้นหาที่รวดเร็วขึ้นให้จับคู่:lsกับบางสิ่งเช่น<Leader>.ในไฟล์. vimrc ของคุณ


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