Làm thế nào để lưu cửa sổ, phân chia và bố trí bộ đệm?


56

Tôi có một số nhiệm vụ tôi đang làm việc trong một kho lưu trữ. Tôi muốn tạo ra "không gian làm việc" để làm việc với chúng.

Một "không gian làm việc" hoặc "bố trí bộ đệm" sẽ có tất cả các tệp tôi cần để mở trong bố cục tôi muốn (sử dụng ^w+v, ^w+sđể phân chia cửa sổ).

Sau đó, khi tôi bắt đầu thực hiện một nhiệm vụ khác, tôi muốn lưu bố cục hiện tại của mình, chuyển sang một công việc khác, nhưng tôi muốn có thể quay lại bố cục trước đó.

cách tốt nhất để đạt được điều này là gì?

Câu trả lời:


48

Bạn có thể sử dụng vim's :mksessionvà viết từng "không gian làm việc" vào một tệp khác, sau đó mở lại một phiên bằng cách sử dụng vim -S session_file, tuy nhiên, nếu bạn đang mở để sử dụng một plugin thì tôi thấy plugin Startify chính xác là thứ tôi cần cho loại kịch bản này: https : //github.com/mhinz/vim-startify

Nó làm rất tốt công việc quản lý phiên, trong vim và mccvim, và nó cung cấp cho bạn một danh sách các tệp gần đây khi bạn mở vim. Nó cũng sẽ tự động thay đổi sang thư mục làm việc phù hợp với bạn. Nó cũng cho phép bạn ghim các tệp vào màn hình mở bắt đầu, điều này rất tốt để dễ dàng truy cập vào những thứ như của bạn.vimrc


23

Bạn có thể sử dụng plugin vim-obsession của tpope để dễ dàng quản lý các phiên. Nó giống như một trình bao bọc cho Vim được xây dựng mksession, nhưng cũng cung cấp một bộ các chi tiết khác.

Bạn có thể lưu phiên hiện tại (hoặc bố trí bộ đệm) bằng cách đưa ra lệnh :Obsess. Nếu bạn không cung cấp một đối số, nó sẽ ghi một tệp phiên được gọi Session.vimtheo mặc định.

Để tải lại phiên, hãy sử dụng vim -S <session-name>hoặc :source <session-name>nếu bạn đã ở trong Vim.

Điều tuyệt vời là, bạn không cần phải nhớ lưu phiên mỗi khi bạn thoát Vim. Nó được tự động quản lý bởi các plugin.

Một tính năng rất quan trọng khác của vim-obession là nó không lưu các tùy chọn và bản đồ. mksessionchụp các tùy chọn và bản đồ hiện tại mà bạn không muốn xảy ra nếu bạn chỉ muốn lưu bố cục bộ đệm. Ngoài ra, nó can thiệp khi một plugin được cập nhật, vv


Nó có thể quản lý nhiều tập tin phiên không?
Nebril 4/2/2015

1
@Nebril Nó có thể. Khi bạn lưu phiên, sử dụng định dạng :Obsess <session-name>. Sử dụng tên phiên cụ thể mà bạn muốn khi tải lại.
thameera 4/2/2015

Tôi thấy rằng Nỗi ám ảnh đã không nhớ sự chia tách theo chiều dọc, trong khi mksession thì có. Tôi chỉ loay hoay với chuyện tối nay thôi, có điều gì tôi đã bỏ lỡ không?
baxx

1
@baxx Nỗi ám ảnh không nhớ tất cả các loại chia tách. Có lẽ bạn đã đóng cửa chia tách trước khi bỏ vim?
thameera

2
@baxx Cái này cũ nhưng tôi muốn thêm một ghi chú trong trường hợp cái này giúp được ai khác. Lý do có vẻ như nỗi ám ảnh đang quên chia tách có lẽ là vì bạn đang bỏ tất cả các phần tách của mình để rời khỏi vim. Điều đó có nghĩa là trạng thái cuối cùng là cửa sổ cuối cùng của bạn khi bạn đóng vim, đó là những gì ám ảnh lưu trữ. Tôi gặp vấn đề tương tự với các tab và câu trả lời là sử dụng: qa để thoát khỏi tất cả các cửa sổ đang mở, chia nhỏ, tab. Nếu ai đó có một lựa chọn tốt hơn xin vui lòng cho chúng tôi biết.
TC0072

12

Một lưu ý phụ, tôi muốn chỉ ra rằng tôi đã xây dựng một plugin dhruvasagar / vim-prosession khác như một phần mở rộng cho tpope / vim-obsession , giúp tăng cường hơn nữa để tạo và quản lý các phiên vim theo mặc định trong kho lưu trữ tập trung như mỗi cấu hình trên cơ sở mỗi thư mục và tải chúng tự động khi bạn khởi chạy vim mà không có bất kỳ đối số nào trên thư mục. Nó cũng cho phép bạn chuyển đổi giữa các phiên khác nhau để thuận tiện.


Điều này nghe thật tuyệt vời. Nếu tôi có thể quản lý các tệp phiên trong một thư mục tương tự như hoàn tác và sao lưu các tệp để giữ cho các dự án của tôi không bị lộn xộn với các tệp hoán đổi có thể làm tôi suy nghĩ.
dragon788

1

Bạn có thể thử plugin vim-workspace , các tính năng quản lý phiên của nó được tự động hóa, nằm trong phạm vi thư mục làm việc hiện tại của bạn và khá đơn giản (chỉ cần chạy ToggleWorkspacemột lần).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.