ในที่ ๆ ฉันจะเปิดไฟล์ที่หมายเลขบรรทัดเดียวกับที่ฉันปิดในครั้งสุดท้ายได้อย่างไร?


141

ฉันต้องการกำหนดค่าเป็นกลุ่มเพื่อเปิดไฟล์ในที่เดียวกับที่ฉันค้างไว้

vim 

: '' apostrophe ตามด้วยอัญประกาศคู่เปลี่ยนเส้นทางคุณการเปลี่ยนแปลงล่าสุด
Dhiren Hamal

คำตอบ:


195

จาก/etc/vim/vimrcไฟล์ของ Ubuntu ตัวอย่างนี้ถูกใส่ความคิดเห็น:

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

หากวิธีนี้ใช้ไม่ได้แสดงว่าปัญหาทั่วไปไม่ได้เป็นเจ้าของ~/.viminfoไฟล์ของคุณ หากเป็นกรณีนี้ให้เรียกใช้:

sudo chown user:group ~/.viminfo

ที่ที่ผู้ใช้เป็นของคุณusernameและgroupมักจะเหมือนกับชื่อผู้ใช้ของคุณ


9
autocmd ออกมาโดยตรงจาก vim doc โปรดดู: ช่วยตำแหน่งสุดท้าย - กระโดด
55400

19
ถ้าคำพูดเดียวในบรรทัดสุดท้ายจะถูกเปลี่ยนเป็น backtick ก็จะข้ามไปยังตำแหน่งเคอร์เซอร์ที่เกิดขึ้นจริงไม่ได้เป็นเพียงจุดเริ่มต้นของบรรทัดว่า:\| exe "normal! g`\"" | endif
u2622

4
chownส่วนการแก้ไขปัญหาสำหรับผม ถอดหมวกออก!
slowpoison

2
ในที่สุดบางคนชี้ให้เห็นว่า. viminfo ของฉันเป็นเจ้าของโดย root ด้วยเหตุผลบางอย่าง! สิ่งนี้ต้องอยู่ในเอกสารอีก 100 เรื่องที่ฉันอ่าน
แจ็ค

2
แค่ต้องการ +1 chown user ~/.viminfoเพิ่ม ฉันพยายามที่จะคิดออกเป็นเวลาหนึ่งชั่วโมงและคุณเพียงแค่ช่วยชีวิตของฉัน
Christopher Reid

48

หากคุณไม่สนใจระบบการซื้อขายอัตโนมัติเพื่อความง่ายเพียงกดปุ่ม'"(เครื่องหมายวรรคตอนตามด้วยเครื่องหมายอัญประกาศคู่) ในการเปิดไฟล์คุณจะข้ามไปที่ที่คุณเคยอยู่ นี่เป็นสิ่งที่คำตอบของ @ marcog กำลังทำอยู่


24
  :h views-sessions

คุณสามารถวางสิ่งนี้ไว้ใน. vimrcของคุณ:

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

มุมมองจะถูกวางใน $ HOME / .vim / view คุณอาจต้องสร้างไดเรกทอรีเหล่านี้


ฉันชอบคำตอบนี้เพราะอีกอันหนึ่งอ้างถึงไฟล์ / etc / vim / ที่ไม่มีอยู่ใน Mac ของฉัน
MarkHu

15

คุณสามารถเริ่มเป็นกลุ่มได้โดยไม่ต้องระบุชื่อไฟล์โดยใช้

vim 

จากนั้นกด CTRL + O สองครั้งเพื่อเลื่อนไปยังตำแหน่งสุดท้ายในไฟล์ที่คุณทำงาน


หากคุณติดตั้ง NERDTree ไว้การกด Co สองครั้งสามารถเปิด NERDTree ในบัฟเฟอร์ปัจจุบันได้ ในกรณีของฉันบางครั้งฉันจำเป็นต้องกด Co สูงสุดห้าครั้ง แต่ในที่สุดฉันก็ได้รับเอฟเฟกต์ที่อธิบายโดย @ Matat
ashrasmun

การกดCtrl-cครั้งเดียวก็เพียงพอแล้วสำหรับฉัน นอกจากนี้การกดCtrl-cมากกว่าจะทำให้ฉันกลับไปที่ตำแหน่งเคอร์เซอร์ฮิสรอยด์ (แม้จะเปิดไฟล์ที่ไม่ได้เปิดที่เกี่ยวข้อง) ฉันใช้ Neovim 0.4.2 แต่ฉันเข้าใจว่ามันใช้ได้กับvimเช่นกัน
T_T

7

หากคุณเปิดใช้งาน viminfo เป็นเรื่องง่ายเหมือน`0ไปที่ตำแหน่งไฟล์ที่แก้ไขล่าสุด คุณจะสังเกตเห็นว่านี่เป็นเพียงคำสั่ง 'ไปที่ทำเครื่องหมาย';

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

มองไปที่

 :marks

เพื่อดูตำแหน่งที่จดจำ โปรดทราบว่า viminfo เก็บสิ่งอื่นทุกประเภท (เช่นเนื้อหาของการลงทะเบียนเครื่องหมายต่อไฟล์คำสั่งและประวัติการค้นหา) คนส่วนใหญ่เปิดใช้งานสิ่งนี้ด้วยเหตุผลที่ชัดเจน


`0 ใช้งานไม่ได้สำหรับฉันในกลุ่มเวอร์ชัน 7.4.1689 บน mac แต่ '0 จะหลอกลวง นี่เป็นคำที่สะกดผิดหรือเปล่า?
alamoot

@alamoot ไม่เป็นเช่นนั้นดูvimdoc motion.txt - ตรวจสอบว่าอักขระของคุณ`สร้างขึ้นจริงหรือทำอะไร:verbose map `
sehe

คุณพูดถูก ตาม vimdoc ทั้งสองถูกต้อง!
alamoot

6

มีปลั๊กอินที่เรียกว่าvim-lastplace (ฉันเป็นผู้เขียน) ที่จะเปิดไฟล์ของคุณที่คุณค้างไว้ มันช่วยปรับปรุงคำแนะนำข้างต้นโดยละเว้นการส่งข้อความเพราะปกติแล้วคุณจะแก้ไขข้อความใหม่และต้องการเริ่มที่ด้านบนของไฟล์ข้อความยอมรับ


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

1

บางครั้ง~/.viminfoกลายเป็นแบบอ่านอย่างเดียวหรือผู้ใช้ของคุณไม่มีสิทธิ์เข้าถึงไฟล์ นั่นอาจเป็นสาเหตุที่ทำให้กลุ่มไม่จัดเก็บตำแหน่งเคอร์เซอร์ของคุณเมื่อคุณปิดไฟล์

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