2011-02-04 29 views
9

Nếu tôi gõ một bình luận trong gVim như thế nàyLàm cách nào để dừng Vim khỏi tự động tạo nhận xét trên ENTER?

// this is a comment

và tôi nhấn ENTER, nó sẽ tự động bắt đầu dòng tiếp theo với //, vì vậy nó trông như thế này:

// this is a comment 
// 

Nhưng thông thường tôi không muốn viết thêm bình luận khi sử dụng kiểu bình luận này. Tôi có thể ngừng gVim tự động thực hiện việc này, trong khi vẫn giữ tự động hoàn thành kiểu/* .. */nhận xét không?

Trả lời

3

Một câu trả lời khác từ tôi vì bạn không muốn điều này được kích hoạt cho /**/ nhận xét.

Sử dụng:

inoremap <expr> <enter> getline('.') =~ '^\s*//' ? '<enter><esc>S' : '<enter>' 

Đối oO:

nnoremap <expr> O getline('.') =~ '^\s*//' ? 'O<esc>S' : 'O' 
nnoremap <expr> o getline('.') =~ '^\s*//' ? 'o<esc>S' : 'o' 
+0

có thể 'imap' thay vì' inoremap' sẽ duy trì một số hành vi của S. – Benoit

+0

Thật hoàn hảo! Bạn có thể làm cho công việc này để đánh O trên một dòng bình luận không? – Merijn

+0

@Merijn: được chỉnh sửa để làm hài lòng bạn. – Benoit

24

Để vô hiệu hóa nó trong khi đánh ENTER trong chế độ chèn, làm :set formatoptions-=r

Để vô hiệu hóa nó trong khi đánh o hoặc O trong chế độ bình thường, làm :set formatoptions-=o

Xem :help 'formatoptions':help fo-table.

Hoặc, bạn vẫn có thể nhấn CTRL-U trong chế độ chèn nếu bạn muốn xóa ký tự từ đầu dòng cho đến khi con trỏ.

+0

Cảm ơn, nhưng điều này cũng vô hiệu hóa tự động hoàn tất khi nhấn ENTER sau khi thực hiện nhận xét kiểu '/ *'. Tôi muốn giữ tùy chọn đó, nhưng vô hiệu hóa hành vi tương tự khi nhấn ENTER sau khi thực hiện một nhận xét kiểu '//'. Điều này có thể không? – Merijn

+1

Tôi thích giải pháp này. Tôi có dòng sau trong .vim của tôi.rc: 'autocmd BufRead, BufNewFile * thiết lập formatoptions- = o' Vì vậy, theo mặc định, tôi vẫn có thể sử dụng trở về vận chuyển để tạo các bình luận nhiều dòng. Khi tôi bình luận xong, tôi gõ 'o'. – adampasz

1

Để có nó tàn tật mỗi khi bạn sử dụng vim, mở tập tin vimrc của bạn và thêm dòng sau:

autocmd BufNewFile,BufRead * setlocal formatoptions-=r 
0

Thêm:

set fo-=ro 

trong ~/.vimrc là đủ,

để vô hiệu hóa R eturn và o/O phím trong chế độ bình thường từ autocommenting.

fo là viết tắt của formatoptions-= để trừ các khóa nhất định trong khi giữ lại phần còn lại của giá trị ban đầu.

Giá trị fo có thể được hiển thị bằng cách sử dụng chế độ set fo? theo lệnh (ex).

Phát hành help fo để đọc thêm về tùy chọn trong các trang hướng dẫn sử dụng nội bộ của vim.

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