Câu trả lời cho câu hỏi tiêu đề của bạn là những gì bạn quan sát. Từ hướng dẫn sử dụng vim:help 21.3
Khi bạn chạy Vim nhiều lần, lần thoát cuối cùng sẽ lưu thông tin của nó. Điều này có thể khiến thông tin mà Vims thoát trước đó được lưu trữ bị mất. Mỗi mục chỉ có thể được ghi nhớ một lần.
Tuy nhiên, tên tệp của tệp viminfo (nơi lưu trữ lịch sử lệnh, trong số những thứ khác như dấu toàn cục và nội dung đăng ký, nếu được định cấu hình) có thể thay đổi! Điều này có nghĩa là bạn có thể thiết lập các 'lịch sử' khác nhau cho các dự án hoặc trường hợp khác nhau của vim. Giả sử bạn không chạy nhiều hơn một phiên bản vim cho mỗi dự án, quản lý tên tệp viminfo thông qua vimrc (hoặc plugin cài đặt dự án khác) là một cách tuyệt vời để xử lý việc này.
Thiết lập tập tin viminfo thay thế
Để quản lý cấp dự án, chúng tôi muốn định cấu hình vim để lưu viminfo của bạn vào một tệp khác. Điều này có thể được thực hiện trong một vim đang chạy trước khi thoát hoặc bởi vimrc của bạn, ví dụ bạn có thể có các dòng trong vimrc phát hiện một thư mục cụ thể thuộc về một dự án.
:set viminfo+=nPath/to/custom/viminfofile
Một ví dụ về việc vimrc tự động thiết lập điều này dựa trên thư mục:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
Kết quả của những điều trên là lịch sử dành riêng cho dự án sẽ được tải khi khởi động và lưu khi thoát, nếu vim được khởi chạy trong thư mục / dự án / projA.
Tải một viminfo thay thế trong khi khởi động
Điều này tốt cho trường hợp bạn muốn lưu lịch sử của mình sang một bên và tải nó sau, mà không cần quản lý nó ở cấp dự án.
Đầu tiên, để lưu lịch sử, bạn thêm vào tùy chọn viminfo như trên trước khi thoát. Sau đó để tải lịch sử, khởi chạy vim với tùy chọn -i
vim -i Path/to/custom/viminfofile
Nếu bạn không muốn thoát vim để lưu tệp viminfo, bạn có thể sử dụng :wv
( :wviminfo
). Điều này sẽ lưu tệp viminfo mà không thoát vim theo cài đặt n ở trên. Và, bạn cũng có thể thực hiện :wv SomeOtherFile
để lưu vào một vị trí không giống với cài đặt trong tùy chọn viminfo. Điều này có thể thuận tiện hơn so với việc thiết lập tên tệp để sử dụng khi thoát, nhưng không ngăn vim sử dụng tệp mặc định sau khi thoát.
Ví dụ: trong vim đầu tiên:
:wv ~/customInfo
và trong thiết bị đầu cuối thứ hai:
vim -i ~/customInfo
Hoặc, nếu một vim thứ hai đang chạy và bạn muốn tải viminfo:
:rv ~/customInfo
Lưu ý rằng :wv
và :rv
không thay đổi tên của tệp vim sẽ lưu khi thoát cũng như tên của tệp được đọc trong khi khởi động.
Thông tin thêm
Mô tả về set viminfo+=nSomePath
: Chúng tôi sử dụng lệnh set để điều chỉnh tùy chọn có tên viminfo
. Các +=
dấu hiệu cho thấy chúng tôi muốn thêm vào tùy chọn, không thay đổi mọi thứ. Chúng tôi nối thêm n
tùy chọn chỉ định tên tệp cho viminfo. Ngay sau khi n
chúng tôi có SomePath
tên tệp sẽ được sử dụng để lưu viminfo.
Tài liệu cho wv
( :help wv
) chỉ ra rằng lệnh này trước tiên sẽ đọc tệp viminfo, sau đó hợp nhất giữa thông tin cũ và thông tin mới. Cho đến nay tôi không có thông tin về cách hợp nhất hoạt động trong trường hợp này, nhưng tôi đoán nó sẽ giữ dấu cho các tệp và thanh ghi không xác định không được đặt trong phiên hiện tại.