Có plugin vim nào thực hiện tính năng thoát nóng từ văn bản cao siêu không


11

Hot exit là một trong những tính năng giết người của trình soạn thảo Sublime Text. Nó cho phép đóng trình chỉnh sửa bất cứ lúc nào mà không phải lo lắng về sửa đổi trong các tệp đã mở - nó chỉ đóng mà không có bất kỳ câu hỏi nào. Khi khởi chạy lại ST, tất cả các tệp được mở và chỉnh sửa sẽ ở cùng trạng thái như trước khi đóng

Tôi tự hỏi có cách nào làm như vậy trong vim không?


: xa thoát tất cả (lưu tất cả các thay đổi và đóng Vim)
Sim

Điều này ghi các tập tin, nhưng không lưu bất cứ điều gì khác. Tôi nghĩ rằng OP muốn một cái gì đó vừa lưu các tệp mà không cần ghi chúng và lưu trạng thái của bất kỳ tab hoặc bộ đệm đang mở nào
EvergreenTree

Vâng, tôi hiểu rằng sau đó từ ý kiến ​​của mình.
Sim

Câu trả lời:


6

Vim có thể làm điều này, mặc dù nó có thể hơi lộn xộn và có một số thiết lập.

romainl giúp bạn một phần với session. Các bit bị thiếu là các tệp hoán đổi :preserve&cờ cho cpoptions.

Các tập tin hoán đổi được dự định để phục hồi nếu Vim hoặc hệ thống của bạn gặp sự cố. Chúng cho phép bạn khôi phục mọi thay đổi chưa lưu (với một số hạn chế, xem :he swap-file). Tuy nhiên, khi Vim thoát bình thường, nó sẽ xóa mọi tệp hoán đổi mà nó đang sử dụng, ngay cả khi bộ đệm có các thay đổi chưa được lưu.

Đó là nơi mà :preservecpoptions's &đi vào. :preserveLực lượng Vim để viết tất cả các bộ đệm để các file swap của họ ngay lập tức (như trái ngược với tiêu chuẩn sau 4 giây hoặc 200 ký tự, hoặc bất cứ lựa chọn của bạn đã đặt nó vào). Làm :set cpoptions+=&cho Vim không xóa các tập tin trao đổi được lưu với :preservekhi thoát bình thường.

Thật không may, Vim không tự động dọn sạch các tệp hoán đổi khi khôi phục từ chúng, vì vậy bạn có thể sớm kết thúc với một thư mục trông như thế này:

.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt

Bạn có thể xóa những cái cũ theo cách thủ công, nhưng Vim sẽ chỉ tự động đề nghị khôi phục nếu có một *.swptệp nơi nó sẽ đặt tệp hoán đổi mới của nó. Các :recoverlệnh sẽ buộc Vim để tìm kiếm các file swap để phục hồi từ.

Bằng cách sử dụng autocommands, bạn có thể tự động bảo quản (có thể với QuitPresự kiện) và khôi phục (có thể bằng BufReadhoặc BufReadPost). Recover.vim là một plugin có thể hoạt động như một giải pháp thay thế thân thiện hơn để quản lý khôi phục. Nó dường như cũng xử lý làm sạch các tập tin trao đổi. Tôi không chắc làm thế nào nó sẽ xử lý một thư mục với một tập tin .swonhưng không có .swp. Bạn vẫn có thể cần phải sử dụng :recovercho trường hợp đó.

vim-obsession là một plugin khác tuyên bố sẽ giúp xử lý các phiên dễ dàng hơn nhiều.


1

Đúng. Nó được gọi là "phiên" và bạn có thể đọc tất cả về nó trong:

:help session

1
Tôi biết về các phiên. Nhưng có vẻ như nó không giống nhau - nó lưu tất cả các bộ đệm và tab đã mở (và cài đặt) nhưng nếu bạn có một số thay đổi trong một trong các bộ đệm, bạn phải ghi chúng vào đĩa trước khi thoát. Trong văn bản cao siêu, bạn không cần lưu tệp đã mở khi thoát - siêu phàm lưu tất cả các thay đổi vào vị trí riêng biệt và khôi phục chúng khi mở lại. Vì vậy, tệp gốc không bị ảnh hưởng trên đĩa nhưng các thay đổi cũng không bị mất
LazyS

Vâng, đó sẽ là sự khác biệt chính. Không có ý tưởng nếu nó có thể đạt được bằng bất kỳ cách nào mà không cần dùng đến tmux / screen / Detach.
romainl
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.