Trong vim, FIXME và TODO được đánh dấu, nhưng tôi không thể nhận được FIXME: và TODO: (lưu ý dấu hai chấm sau từ khóa) để làm nổi bật? Tôi nên đặt cái gì vào trong .vimrc để làm điều này xảy ra?Trong vim, làm cách nào để làm nổi bật TODO: và FIXME :?
Trả lời
Vâng, bạn đã tìm thấy sự cố, nhưng đây là lý do tại sao.
Có ba loại đối sánh cú pháp cơ bản: từ khóa, kết quả phù hợp và vùng. Từ khóa là các chuỗi cố định, thường được sử dụng cho các từ khóa ngôn ngữ cơ bản (int
, double
, ...) và trong trường hợp của bạn, đối với FIXME và TODO. Tôi thực sự có nghĩa là chuỗi cố định; chúng phải chính xác và toàn bộ các từ, không giống như các đối sánh và vùng, sử dụng regex. Ví dụ: từ cú pháp C:
syn keyword cTodo contained TODO FIXME XXX
Dường như trong tất cả các định nghĩa cú pháp dựng sẵn, chỉ với các tên nhóm khác nhau (cTodo).
iskeyword
cho biết liệu một ký tự cụ thể có thể là một phần của từ khóa hay không. Theo mặc định, nó không bao gồm dấu hai chấm, vì vậy khi tìm kiếm từ khóa, vim thấy "FIXME:" là "FIXME" và bỏ qua dấu hai chấm. Nếu bạn tack vào dấu hai chấm (set iskeyword+=:
), bây giờ bạn có thể xác định một chút thêm nổi bật:
syn keyword myTodo contained TODO: FIXME:
Đó là tùy thuộc vào bạn như thế nào bạn muốn làm việc đó thành các nhóm cú pháp/highlight hiện có. Nếu chỉ cho một loại tệp, bạn có thể thêm nó vào nhóm cần làm của cú pháp (ví dụ: cTodo). Nếu bạn muốn nó ở khắp mọi nơi, bạn có thể làm "myTodo" như tôi đề nghị, sau đó liên kết nó thẳng đến nhóm làm nổi bật Todo (hi def link myTodo Todo
).
Ngoài ra, bạn có thể để lại một mình iskeyword
(tôi có lẽ muốn khuyên này), và chỉ cần sử dụng một trận đấu:
syn match myTodo contained "\<\(TODO\|FIXME\):"
hi def link myTodo Todo
+1 @Jefromi, tuy nhiên, tôi không nghĩ rằng kết hợp đồng bộ hóa này hoạt động. Tôi tát nó vào .vimrc của tôi và nếu tôi thay đổi FIXME thành cái gì khác thì nó không được đánh dấu. – g33kz0r
@ G33kx0r: Đó không phải là lỗi của trận đấu này; nó hoạt động nếu nó vẫn tồn tại. Tôi nghi ngờ bạn đang kích hoạt cú pháp (một cách này hay cách khác) * sau * các dòng trong vimrc của bạn chạy, và khi cú pháp được kích hoạt, trước tiên nó sẽ xóa cú pháp cũ rồi tải cú pháp thích hợp. Bạn có thể kiểm tra xem liệu khớp đó có còn đúng chỗ không bằng cách sử dụng ': syn list myTodo'. Xem thêm ': help-loading'. – Cascabel
Đặt 'cú pháp bật' đầu tiên và sau đó' syn khớp với myTodo chứa "\ <\ (TODO \ | FIXME \):" 'trong tệp' vimrc' của tôi và 'hi! def liên kết myTodo Todo' không làm việc cho tôi. Mặt khác, nếu tôi làm, ví dụ, 'au BufNewFile, BufRead * .tex syn khớp với texTodo" \ <\ (TODO \ | FIXME \): "' tệp 'tex' kết quả được đánh dấu đúng. Có giải pháp chung nào không? – petobens
Nếu bạn thực hiện môi trường của riêng mình, make syntax file (not .vimrc)
cú pháp toàn cầu tệp nằm trong thư mục vim (ví dụ: /usr/share/vim/vim72/syntax/c.vim)
và nếu yo u làm ~/.vim/syntax/c.vim, sau đó bạn có thể thêm cú pháp cho số của riêng bạn. (ghi đè)
Chỉ cần thêm cú pháp bổ sung vào tệp đó. (Đường @Jefromi không)
augroup vimrc_todo
au!
au Syntax * syn match MyTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE|XXX):/
\ containedin=.*Comment,vimCommentTitle
augroup END
hi def link MyTodo Todo
Các containedin
sẽ thêm nó vào tất cả các nhóm kết thúc bằng "Comment", cộng với vimCommentTitle, nơi " TODO: foo
sẽ không có được tô đậm như MyTodo khác.
Ghi chú sử dụng: bạn có thể thêm ghi chú này vào .vimrc của bạn và xóa dấu hai chấm (':') nếu bạn chỉ muốn từ được đánh dấu và không phải dấu hai chấm theo sau. Tôi thích đánh dấu để đọc _NOTE_ :, không _NOTE: _. Tôi cũng đôi khi viết CHÚ Ý hoặc TODO không theo sau bởi dấu hai chấm. – Ari
- 1. Plugin TODO/FIXME cho Eclipse
- 2. Làm nổi bật cú pháp trong vim
- 3. Làm nổi bật TODO ở tất cả các chế độ lập trình
- 4. Làm nổi bật văn bản đặc biệt trong vim
- 5. Làm thế nào để có được tên nhóm làm nổi bật dưới con trỏ trong vim?
- 6. Làm thế nào để làm cho IntelliJ biết FIXME?
- 7. làm nổi bật cú pháp vim cải thiện hiệu suất
- 8. Vim cú pháp tùy chỉnh làm nổi bật nền chỉ
- 9. Làm cách nào để làm nổi bật Nút?
- 10. Tại sao VIM làm nổi bật một số từ?
- 11. Cú pháp Vim làm nổi bật các ký tự ẩn
- 12. VIM Làm nổi bật toàn bộ dòng hiện hành
- 13. Notepad ++ - làm nổi bật từ khóa tùy chỉnh
- 14. vim không làm nổi bật một số C++ từ khóa
- 15. Cách loại bỏ tìm kiếm nổi bật trong Vim
- 16. Làm nổi bật NSToolbarItems
- 17. gvim chuỗi multiline dài làm nổi bật
- 18. Làm nổi bật tìm kiếm giống như ViM trong Visual Studio có thể?
- 19. Vim nổi bật với tông màu solarized
- 20. C# - Cách: Mở PDF, làm nổi bật kết quả tìm kiếm và lưu làm nổi bật trở lại PDF
- 21. Làm thế nào tôi có vim làm nổi bật không gian trắng dư thừa và tất cả các tab?
- 22. Inline đang làm nổi bật trong reStructuredText
- 23. Làm cách nào để làm nổi bật Chế độ xem tùy chỉnh trong XML?
- 24. bất ngờ ngoặc nổi bật màu đỏ trong vim
- 25. Làm nổi bật kiểu dáng của Emacs cho tìm kiếm gia tăng trong vim
- 26. Làm nổi bật đường trong biểu đồ nổi
- 27. Làm nổi bật cú pháp cho cụm từ thông dụng trong Vim
- 28. Vim: Làm nổi bật cặp từ khóa trong Ruby (def/end, do/end, vv)
- 29. Làm nổi bật các từ do người dùng chỉ định trong Visual Studio?
- 30. nghiêng Kích hoạt trong cú pháp vim làm nổi bật cho mac terminal
Thật kỳ quặc; mỏ nổi bật có hoặc không có dấu hai chấm. Làm nổi bật cú pháp được định nghĩa trong các cú pháp riêng lẻ, tôi nghĩ - điều này có xảy ra trong một số loại tệp cụ thể không? – Cascabel
@Jefromi: Tôi nghĩ điều đó xảy ra ở mọi loại tệp. –
những gì hiện ': verbose set iskeyword?' Cho biết? – Benoit