2012-07-26 32 views
6

Tôi đã thực hiện chuyển đổi sang GVim gần đây, bởi vì tôi thấy nó có vẻ đẹp hơn về mặt thẩm mỹ và nhanh hơn một chút so với thiết bị đầu cuối. Tôi có thói quen này thực sự xấu mà tôi đang cố gắng để phá vỡ. Khi tôi sử dụng vim từ dòng lệnh, luồng công việc của tôi giống như sau:Buộc GVim nhắc trước khi đóng

vim filename.txt 
# make some edits 
ZZ 
# do other stuff 
vim otherfile.txt 
# make some edits 
ZZ 

Bây giờ sử dụng GVim, tôi sẽ đóng trình chỉnh sửa quá thường xuyên. Tôi tự hỏi nếu có một cách để buộc chỉ GVim hoặc là nhắc tôi hoặc mở một bộ đệm trống khi tôi làm một :wq hoặc ZZ. Ý tưởng nào?

EDIT: Tôi biết làm thế nào để remap phím, nhưng tôi tự hỏi nếu có một cách để buộc GVim để có một hành vi khác nhau sau đó khi vim được gọi là từ dòng lệnh.

Trả lời

6

Gọi một hàm trên ZZ và nếu chỉ còn một tab và cửa sổ, hãy nhắc xem có đóng hay không (mặc định là đóng). Xem :help confirm().

nnoremap ZZ :call QuitPrompt()<cr> 

fun! QuitPrompt() 
    if has("gui_running") && tabpagenr("$") == 1 && winnr("$") == 1 
     let choice = confirm("Close?", "&yes\n&no", 1) 
     if choice == 1 | wq | endif 
    else | wq | endif 
endfun 
6

Đưa sau trong vimrc của bạn có thể được sử dụng để hoàn toàn vô hiệu hóa các phím tắt ZZ hoàn toàn:

nnoremap ZZ <Nop> 

Hoặc bạn có thể remap họ đến hành vi tiêu chuẩn của :q:

if has("gui_running") 
    nnoremap ZZ :q 
    nnoremap :wq :q 
endif 
+0

tôi có thể làm điều đó, nhưng tôi vẫn như khả năng để đưa lên vim trong dòng lệnh, thực hiện chỉnh sửa nhanh chóng và ZZ. – jfocht

+0

Nếu đó là trường hợp, chỉ cần bao quanh nó với 'if has (" gui_running ") ... endif' – sybkar

2

Thêm này trong vimrc của bạn:

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