เป็นกลุ่มไม่ได้จำตำแหน่งสุดท้าย


89

Ubuntu LTS 12.04 ของฉันมีโปรแกรมแก้ไขเสียงเรียกเข้า หากฉันเปิดไฟล์ให้ย้ายไปที่ย่อหน้าและเปิดเป็นกลุ่มอีกครั้งเคอร์เซอร์จะไปที่จุดเริ่มต้นของไฟล์เสมอ

นี่ไม่ใช่พฤติกรรมที่คาดหวัง วิธีการที่กลุ่มสามารถจำตำแหน่งการอ่านล่าสุดหลังจากปิดไฟล์ได้อย่างไร

ฉันพยายามviด้วย แต่ผลลัพธ์ก็เหมือนกัน


1
ฉันขอโทษ แต่ดูเหมือนจะมีเอกสาร 0 รายการที่บอกว่าควรจะเป็น คุณแน่ใจอย่างนั้น 100% ใช่ไหม? และฉันขอโทษฉันไม่รู้ว่าจะกำหนดค่าให้จำตำแหน่งสุดท้ายได้อย่างไร อาจเป็นความคิดเห็นที่ไม่จำเป็นโดยฉัน แต่ฉันต้องรู้ว่าคุณมีประสบการณ์โปรแกรมที่ทำก่อนหน้านี้
Denny

4
ตัวอย่างเช่นใน Redhat บรรทัด refereed สุดท้ายในไฟล์จะถูกจดจำโดย vim เสียงเรียกเข้าดูเหมือนจะไม่สะดวกใน Ubuntu 12.04
Lunar Mushrooms

นอกจากนี้ใน Ubuntu 10.04 นี่ไม่ใช่พฤติกรรมเริ่มต้นอย่างแน่นอน ฉันใช้ Vim บน Ubuntu มานานไม่เคยเห็นพฤติกรรมที่คุณคาดหวัง คุณอาจตั้งค่าไว้ให้ทำเช่นนั้นในการติดตั้งนั้น - ดูคำตอบของ @GaryBishop
gertvdijk

ขออภัยไม่ใช่ Ubuntu 10.04 มันเป็นหมวกสีแดงที่ใช้งานได้ อัปเดตความคิดเห็นของฉัน
Lunar Mushrooms

คำตอบ:


116

แก้ไขมัน:

/ etc / กลุ่ม / vimrc

มีคุณสมบัติที่จำเป็นอยู่แล้ว เพียงแค่ต้องไม่ใส่เครื่องหมายข้อคิดเห็น:

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

(Infact คุณสามารถอ้างถึง /usr/share/vim/vim73/vimrc_example.vim ได้เช่นกัน)


ดูเหมือนว่าจะทำงานกับผู้ใช้รูทเท่านั้นไม่ใช่ผู้ใช้รายอื่น ไฟล์ vimrc ของฉันคือ-rw-r--r-- 1 root root; นั่นจะเป็นปัญหาหรือไม่
ADTC

2
ฉันมีปัญหาแปลก ๆ ที่ผู้ใช้รายหนึ่งจะจดจำตำแหน่งสุดท้าย แต่ไม่มีผู้อื่น ปรากฎว่าบรรทัดเหล่านี้อยู่ในไฟล์. vimrc ของผู้ใช้ แต่ถูกคอมเม้นต์ใน / etc / vim / vimrc ไม่ใส่หมายเหตุพวกเขามีการเปิดใช้งานสำหรับผู้ใช้ทั้งหมด
felwithe

66

ฉันมีปัญหาเดียวกันนี้และพบว่าไฟล์. viminfo ในโฮมไดเร็กตอรี่ของฉันมีความเป็นเจ้าของผิด มันเป็นเจ้าของโดย root: root

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


3
สิ่งนี้ทำงานในกรณีของฉัน ฉันมีปัญหาเดียวกัน ฉันเปลี่ยนความเป็นเจ้าของ. viminfo (มีอยู่ในโฮมไดเร็กตอรี่) ที่แก้ไขปัญหากลุ่ม แต่ทำไมมันถูกสร้างขึ้นด้วย root: root?
Brijesh Valera

1
@BrijeshValera อาจเป็นเพราะคุณเริ่มเป็นกลุ่มเมื่อรูตเมื่อไฟล์ยังไม่มีอยู่
Ruslan

1
@Ruslan แต่ไม่ควรสร้างไฟล์ในไดเรกทอรีหลักของผู้ใช้รูท?
ankush981

5
@dotslash sudoที่หากินกับ ไม่เปลี่ยนสภาพแวดล้อม (อย่างน้อยส่วนใหญ่): ลองใช้งานsudo bash -c 'echo $HOME'คุณจะได้รับโฮมไดเร็กตอรี่ของคุณแทนที่จะเป็นรูท
Ruslan

1
นั่นคือสาเหตุใน 18.04 ของฉัน
Hanynowsky


2

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


ทำไม downvote vim-lastplace ทำสิ่งที่ OP ต้องการอย่างแท้จริงและทำได้ดีกว่าคำตอบที่ยอมรับได้ (ซึ่งมีข้อบกพร่องจำนวนหนึ่งในนั้น)
Greg Dietsche

0

ในกรณีของฉัน vi เป็น symlink /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tinyนี้: หลังไม่มีคุณสมบัติเป็นกลุ่มที่แท้จริง การติดตั้งแพ็กเกจ 'เสียงเรียกเข้า' (โดยใช้ synaptic หรือ apt-get) ทำให้ symlink นี้ชี้ไปที่/usr/bin/vim.basicและสิ่งนี้จะแก้ไขปัญหาได้


-1

มีข้อผิดพลาดในโซลูชัน Lunar Mushrooms ที่นี่การแก้ไข:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif

endif

ทำไมคุณถึงเชื่อว่าทางออกของคุณถูกต้อง? มันดูเหมือนกันมาก แต่สำหรับแบ็กสแลชที่จุดเริ่มต้นของบรรทัด ถ้ามีพวกเขาไม่ควรอยู่ท้ายบรรทัดที่ระบุว่าคำสั่งยังคงอยู่ในบรรทัดถัดไป ... ? นอกจากนี้คำตอบที่ได้รับการยอมรับเพียงแค่พูดคุยเกี่ยวกับ uncommenting ส่วนในไฟล์ config vimทั่วโลกที่ติดตั้งร่วมกับ เห็นได้ชัดว่านี่เป็นการแก้ไขปัญหา ข้อผิดพลาดอยู่ที่ไหน
Nephente

เพราะถ้าฉันคัดลอก / วางโซลูชันแรกฉันได้รับข้อผิดพลาด และฉันโพสต์เนื้อหาของ /usr/share/vim/vim74/vimrc_example.vim ของฉัน (ซึ่งรวมถึงแบ็กสแลชในตอนต้น)
Arnaud

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