คำตอบสำหรับคำถามเรื่องของคุณคือสิ่งที่คุณสังเกต จากคู่มือผู้ใช้ที่เป็นกลุ่ม:help 21.3
เมื่อคุณเรียกใช้ Vim หลายครั้งการออกครั้งสุดท้ายจะเก็บข้อมูลไว้ นี่อาจทำให้ข้อมูลที่ออกจาก Vims ที่เก็บไว้สูญหายก่อนหน้านี้ แต่ละรายการสามารถจดจำได้เพียงครั้งเดียว
อย่างไรก็ตามชื่อไฟล์ของไฟล์ viminfo (ซึ่งจัดเก็บประวัติคำสั่งเหนือสิ่งอื่นใดเช่นเครื่องหมายสากลและเนื้อหาการลงทะเบียนหากกำหนดค่าเช่นนั้น) อาจเปลี่ยนแปลงได้! ซึ่งหมายความว่าคุณสามารถตั้งค่า 'ประวัติ' ที่แตกต่างกันสำหรับโครงการหรืออินสแตนซ์ต่าง ๆ ของ vim สมมติว่าคุณไม่ได้ใช้อินสแตนซ์ vim มากกว่าหนึ่งรายการต่อโครงการการจัดการชื่อไฟล์ viminfo ผ่าน vimrc (หรือปลั๊กอินการตั้งค่าโปรเจ็กต์อื่น ๆ ) เป็นวิธีที่ยอดเยี่ยมในการจัดการกับสิ่งนี้
ตั้งค่าไฟล์ viminfo อื่น ๆ
สำหรับการจัดการระดับโครงการเราต้องการกำหนดค่า vim เพื่อบันทึก viminfo ของคุณเป็นไฟล์อื่น สิ่งนี้สามารถทำได้ภายใน vim ที่กำลังทำงานอยู่ก่อนที่จะหยุดทำงานหรือโดย vimrc ของคุณตัวอย่างเช่นคุณอาจมีบรรทัดใน vimrc ของคุณที่ตรวจพบไดเรกทอรีเฉพาะว่าเป็นของโครงการ
:set viminfo+=nPath/to/custom/viminfofile
ตัวอย่างของการให้ vimrc ตั้งค่านี้โดยอัตโนมัติตามไดเรกทอรี:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
ผลลัพธ์จากด้านบนคือประวัติที่ระบุโปรเจ็กต์จะถูกโหลดเมื่อเริ่มต้นและบันทึกเมื่อออกหาก vim ถูกเรียกใช้ในไดเร็กทอรี / projects / projA
โหลด viminfo สำรองระหว่างการเริ่มต้น
นี่เป็นสิ่งที่ดีสำหรับกรณีที่คุณต้องการบันทึกประวัติของคุณไปที่ด้านข้างและโหลดในภายหลังโดยไม่ต้องจัดการในระดับโครงการ
ก่อนอื่นให้บันทึกประวัติคุณเพิ่มไปที่ตัวเลือก viminfo ดังกล่าวข้างต้นก่อนที่จะออก จากนั้นเพื่อโหลดประวัติเรียกใช้ vim ด้วยอ็อพชัน -i
vim -i Path/to/custom/viminfofile
หากคุณไม่ต้องการออกจากกลุ่มเพื่อบันทึกไฟล์ viminfo คุณสามารถใช้:wv
( :wviminfo
) สิ่งนี้จะบันทึกไฟล์ viminfo โดยไม่ต้องออก vim ตามการตั้งค่า n ด้านบน และคุณสามารถทำได้:wv SomeOtherFile
เพื่อบันทึกไปยังตำแหน่งที่ไม่เหมือนกับการตั้งค่าในตัวเลือก viminfo การดำเนินการนี้อาจสะดวกกว่าการตั้งค่าชื่อไฟล์ที่จะใช้ที่ exit แต่จะไม่หยุด vim จากการใช้ไฟล์เริ่มต้นเมื่อออก
ตัวอย่างเช่นในกลุ่มแรก:
:wv ~/customInfo
และในสถานีที่สอง:
vim -i ~/customInfo
หรือถ้าเป็นกลุ่มที่สองทำงานแล้วและคุณต้องการโหลด viminfo:
:rv ~/customInfo
โปรดทราบว่า:wv
และ:rv
จะไม่เปลี่ยนชื่อไฟล์เป็นกลุ่มจะบันทึกเมื่อออกหรือชื่อไฟล์ที่อ่านระหว่างการเริ่มต้น
ข้อมูลเพิ่มเติม
คำอธิบายของset viminfo+=nSomePath
: viminfo
เราใช้ชุดคำสั่งเพื่อปรับตัวเลือกในการตั้งชื่อ ตัว+=
บ่งชี้ที่เราต้องการผนวกเข้ากับตัวเลือกไม่ใช่เปลี่ยนแปลงทุกอย่าง เราผนวกn
ตัวเลือกที่ระบุชื่อไฟล์สำหรับ viminfo ทันทีหลังจากที่n
เรามีSomePath
ซึ่งจะเป็นชื่อไฟล์ที่ใช้สำหรับการบันทึก viminfo
เอกสารประกอบสำหรับwv
( :help wv
) ระบุว่าคำสั่งนี้จะอ่านไฟล์ viminfo ก่อนจากนั้นจึงรวมข้อมูลเก่าและใหม่เข้าด้วยกัน จนถึงตอนนี้ฉันยังไม่มีข้อมูลเกี่ยวกับวิธีการรวมการทำงานในกรณีนี้ แต่ฉันเดาว่ามันจะเก็บเครื่องหมายสำหรับไฟล์ที่ไม่รู้จักและการลงทะเบียนที่ไม่ได้ตั้งค่าไว้ในเซสชันปัจจุบัน