2009-11-24 11 views
6

Trong vim, khi tôi nhấn :wq nó gần như luôn luôn là một tai nạn xảy ra khi cố gắng nhập :w. Tôi muốn vô hiệu hóa :wq.Làm thế nào để vô hiệu hóa lệnh tích hợp trong vim

Gần nhất tôi thấy là cmap, nhưng nó có một số hành vi kỳ lạ. Nếu tôi làm điều gì đó như

:cmap wq w 

Tôi thậm chí không còn có thể nhập :wq; nó chỉ cần remaps trình tự tổ hợp phím wq đến w ở chế độ lệnh. Bây giờ tôi không thể, ví dụ, nhập lệnh tìm kiếm/thay thế trên một chuỗi có chứa wq.

Tôi chỉ muốn đặt bí danh lệnh chính xác :wq thành :w hoặc không có. Có cách nào để làm việc này không?

EDIT: làm rõ tại sao :cmap không phải là một lựa chọn cho tôi

Trả lời

0

Dường như lựa chọn tốt nhất là chỉ cần làm quen với :cmap hành vi. Trong trường hợp hiếm hoi, tôi muốn nhập bàn phím seqeunce wq Tôi chỉ có thể nhấn wq, đợi một giây, sau đó nhấn q một lần nữa. Tôi đã tìm thấy this possible solution nhưng nó quá phức tạp đối với sở thích của tôi.

2

Một giải pháp tốt hơn có thể là:

:cabbrev wq w 

Nhưng tôi không chắc chắn lý do tại sao cmap không hoạt động như loại trừ. Thật sự tôi đã vạch một phím chức năng của tôi để lưu các tập tin:

:map <F2> :w<CR> 
:nmap <F2> <ESC>:w<CR>i 

CẬP NHẬT: typo sửa chữa trong lệnh đầu tiên.

UPDATE2: có thể workaround:

:cabbrev wq<CR> w 

HTH

+0

Bạn có thể giải thích: cabbrew? –

+2

Tôi nghĩ rằng nó phải là ': cabbrev'. ': cabbrev wq w' sẽ thay đổi wq thành w sau khi bạn nhấn dấu cách hoặc nhập, vì vậy nó sẽ làm cho': wq' do ': w'. Xem ': help: cabbrev' và': help: ab' để biết thêm thông tin. – DrAl

+0

Xin lỗi, tôi nghĩ tôi không đủ rõ ràng trong câu hỏi của mình. Nếu bạn làm: cmap và nó cũng có vẻ như: cabbrew, nó có nghĩa là trình tự tổ hợp phím "wq" trong chế độ lệnh được ánh xạ tới một thứ khác với "wq". Vì vậy, sau đó bạn không thể, ví dụ, làm một tìm kiếm/thay thế trên một chuỗi có chứa "wq". Tất cả tôi muốn làm là làm cho nó như vậy nếu tôi nhập vào lệnh chính xác: wq, nó là bí danh để "w" hoặc no-op. – user85509