2009-06-04 42 views
9

My SAS đang đòi hỏi kiểu này bình luận:Insert bình luận tự động trong Vim

/* 
* This is the comment 
*/ 

tôi đã có thể gõ lệnh này (Từ Vim Comment Howto):

:set comments=sl:/*,mb:*,elx:*/ 

Vấn đề là khi tôi nhập lệnh set này tôi không biết cách thực sự nhận các nhận xét đó để thêm vào mã. Các hướng dẫn nói để gõ /\*<enter> nhưng trong chế độ chèn này chỉ hoạt động bình thường, và trong chế độ lệnh này không tìm thấy trên *.

Làm cách nào để làm điều này hoạt động và có cách nào tốt hơn cách này để tự động chèn dấu nhận xét?

Trả lời

19

Theo mặc định, Vim không tự động chèn dòng mới hoặc điểm đánh dấu kết thúc cho bạn. Thay vào đó, nó giúp bạn dễ dàng chèn những khi bạn gõ, miễn là 'formatoptions' chứa r:

:set formatoptions+=r 

Sau đó, bắt đầu nhập bình luận của bạn như bình thường: "/*<Enter>" (trong chế độ chèn). Sau khi bạn nhấn phím Enter, người dẫn đầu nhận xét (dấu hoa thị và dấu cách) sẽ tự động xuất hiện trên dòng tiếp theo, sẵn sàng để bạn bắt đầu nhập. Khi bình luận của bạn hoàn tất, hãy kết thúc nó bằng "<Enter>/"; các <Enter> di chuyển đến dòng tiếp theo, và dấu gạch chéo trở thành ký tự thứ hai của điểm đánh dấu kết thúc. Có, nó sẽ loại bỏ không gian cho bạn, nhưng chỉ ngay sau khi bạn nhấn Enter.

Để chỉnh sửa loại nhận xét này dễ dàng hơn, bạn cũng muốn thêm các ký tự c và/hoặc o ký tự vào formatoptions. Trước đây cho phép các chú thích tự động bọc, và sau đó chèn đầu ghi chú khi bạn tạo một dòng mới bên trong chú thích bằng cách sử dụng các lệnh chế độ thông thường.

+0

Tôi dường như đã phá vỡ vim của tôi - nhấn '/'ở cuối các nhận xét của tôi chỉ dẫn đến nhận xét về dấu gạch chéo và nhận xét trên dòng tiếp theo - vim không nhận ra '* /' là '* /'. –

+0

@Daniel: Hành vi đó được kích hoạt bởi ký tự 'x' trong dòng': set comments' ở trên. Xem ': help' format-comments'' để biết chi tiết. Để xem giá trị ''comments'' xấu đang được thiết lập, hãy sử dụng': verbose set comments? '. – eswald

2

Ngôn ngữ nào?

Trong C Vim tự động gọi thiết lập này để lấy ý kiến:

" Set 'comments' to format dashed lists in comments. 
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// 

Những công trình như bạn mong muốn. Có lẽ bạn cần phải thêm nó vào ftplugin cho ngôn ngữ/phần mở rộng bạn đang sử dụng?

+1

OP đề cập đến mã SAS – webwesen

1

Tôi có viết tắt này trong vimrc của tôi:

" /// -> insert javadoc comment 
iab <buffer> /// /**^M *^M*/^[0A 

nơi^[0A là ctrl-v + lên.
Loại /// trong chế độ chèn để có được một lời nhận xét như

/** 
* 
*/ 
1

this Vim kịch bản có thể giải quyết vấn đề của bạn - chỉ cần đặt nó vào "vimXY/cú pháp" thư mục

1

Cũng nhớ kiểm tra kiểu nhận xét của bạn (:set comments?) nếu bạn đang sử dụng nhiều loại tệp. PHP, ví dụ đôi khi sẽ sử dụng các nhận xét kiểu HTML <!-- ... --> nếu có HTML được nhúng, do đó việc nhập /* và sau đó nhấn Nhập sẽ xuất hiện không có hiệu lực.

Tôi đã điều sau đây trong tập tin .vimrc tôi để đảm bảo PHP bình luận được sử dụng bởi mặc định

au Bufenter *.php set comments=sl:/*,mb:*,elx:*/ 

HTML code sẽ vẫn được nhận xét đúng, tuy nhiên, không gian trong vòng HTML code thể sử dụng quy ước cho ý kiến ​​PHP (nếu bạn sử dụng các plugin như tComment) và bạn sẽ không có các nhận xét HTML nhiều dòng mà tôi không nghĩ là có thể.

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