2014-10-06 15 views
8

Trong Vim, tôi thích tính năng cho phép bạn tự động chèn nhận xét sau khi đã bắt đầu một khối chú thích. Làm thế nào bạn sẽ làm cho nó để bạn có được một nhân vật bình luận (s) sau khi một dòng mới, nhưng khi nhận được một dòng mới thứ hai mà bình luận được gỡ bỏ và bạn bắt đầu một dòng mới mà không có một nhân vật bình luận. Điều này sẽ hữu ích nếu bạn đang làm việc trên một khối bình luận và không muốn đưa ra nhận xét nữa sau đó (trong trường hợp của tôi, tôi cũng muốn áp dụng cùng một điều vào danh sách đánh dấu, xử lý */- làm ký tự nhận xét).Vim: Xóa ký tự nhận xét sau khi nhập đúp

Ví dụ

// typing a comment 
// (cursor here after hitting enter once) 

// typing a comment 

(cursor here after hitting enter twice) 

Trả lời

3

lập bản đồ này kiểm tra nếu dòng hiện tại chỉ chứa các nhà lãnh đạo bình luận trước khi quyết định nếu nó <C-u> hoặc <CR>:

inoremap <expr> <CR> getline(".") =~ '^\s*\(\*\|//\|#\|"\)\s*$' ? "\<C-u>" : "\<CR>" 
+0

tôi đặt mà trong vimrc của tôi và cố gắng gõ // sau đó nhập tôi nhận được: 'E15: Biểu thức không hợp lệ:^R = getline (".") = ~ '^ \ s * \ (\ * | // | # | "\) \ s * $'? "\^U": "\^M" ' – Keiga

+0

Tương tự tại đây trên Vim 7.2. Hủy bỏ ' =' để sửa E15. Tôi không thể nhận được "hoặc" một phần của biểu thức, nhưng điều này làm việc cho mục đích của tôi: 'inoremap getline (". ") = ~ '^ \ S * \ (# \) \ s * $'? "\ ": "\ " '(sẽ thật tuyệt nếu được tích hợp với cú pháp nhận xét của ngôn ngữ) –

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