2009-04-21 29 views

Trả lời

133

Từ tập tin /etc/vim/vimrc của Ubuntu, ví dụ này là nhận xét ra:

" 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 

Nếu điều này không làm việc, một vấn đề phổ biến là không có quyền sở hữu của tập tin ~/.viminfo của bạn. Nếu đây là trường hợp, sau đó chạy:

sudo chown user:group ~/.viminfo 

nơi người dùng là username của bạn và group thường là giống như tên người dùng của bạn.

+6

Autocmd xuất hiện trực tiếp từ tài liệu vim. Xem: help last-position-jump – user55400

+13

Nếu dấu nháy đơn trong đường áp chót được thay đổi thành một dấu gạch chéo ngược, nó sẽ nhảy đến vị trí con trỏ thực tế, không chỉ là đầu của dòng đó: '\ | exe "bình thường! g \' \ "" | endif' – u2622

+3

Phần 'chown' cố định vấn đề cho tôi. – slowpoison

17
:h views-sessions 

Bạn có thể đặt này trong thư mục vimrc:

au BufWinLeave * mkview 
    au BufWinEnter * silent loadview 

quan điểm sẽ được đặt trong $ HOME/.vim/xem. Bạn có thể cần tạo các thư mục này.

+0

Tôi thích câu trả lời này vì câu trả lời khác được đề cập đến/etc/vim/file không tồn tại trên máy Mac của tôi. – MarkHu

32

Nếu bạn không nhớ tự động hóa buôn bán vì đơn giản, chỉ cần nhấn tổ hợp phím '" (apostrophe, tiếp theo là dấu ngoặc kép) vào mở một tập tin, bạn sẽ nhảy đến nơi mà bạn được. Đây là cơ bản những gì @ marcog của câu trả lời là làm

5

Nếu bạn đã viminfo được kích hoạt, nó cũng đơn giản như `0 để đi đến vị trí tập tin cuối cùng thay đổi nội dung bạn sẽ nhận thấy rằng đây chỉ là một 'đi để đánh dấu' lệnh;..

Thật vậy, sau này bạn có thể làm '3 để đi đến vị trí đã chỉnh sửa thứ ba trước đó (có thể trong một tệp khác), và sau đó quay lại người cuối cùng với `0 lại

Có một cái nhìn tại

:marks 

xem vị trí nhớ. Cũng lưu ý rằng viminfo lưu trữ tất cả các loại nội dung khác (như nội dung của sổ đăng ký, nhãn hiệu cho mỗi tệp, lệnh và lịch sử tìm kiếm). Hầu hết mọi người đều bật tính năng này vì lý do rõ ràng

+0

'0 không hoạt động đối với tôi trên phiên bản vim 7.4.1689 trên mac. Nhưng '0 không lừa. Đây có phải là lỗi đánh máy trong câu trả lời không? – alamoot

+0

@alamoot no it is not, xem [vimdoc motion.txt] (http://vimdoc.sourceforge.net/htmldoc/motion.html#mark-motions) - Kiểm tra xem ký tự '\' 'của bạn thực sự tạo ra cái gì, hoặc làm ': verbose map \' ' – sehe

+0

bạn nói đúng. Theo vimdoc cả hai đều đúng! – alamoot

2

Có plugin được gọi là vim-lastplace (Tôi là tác giả) sẽ mở tệp của bạn ở nơi bạn đã dừng lại. Nó cải thiện các đề xuất ở trên bằng cách bỏ qua các thông báo cam kết vì bạn thường chỉnh sửa một tin nhắn mới và muốn bắt đầu ở đầu tệp tin cam kết.

+0

tất cả những gì bạn có thể làm mà không cần plugin là tốt nhất. nhằm mục đích cho .vimrc: mã càng nhỏ và nhanh hơn – nilon

1

Đôi khi /root/.viminfo trở thành chỉ đọc. Đó cũng có thể là lý do khiến vim không lưu trữ vị trí con trỏ của bạn khi bạn đóng tệp.

1

Bạn có thể bắt đầu vim mà không chỉ định một tên tập tin sử dụng

vim 

Tiếp theo nhấn CTRL + O hai lần để di chuyển đến vị trí cuối cùng trong bất kỳ tập tin bạn làm việc trên.

Các vấn đề liên quan