2009-08-14 21 views
8

Tôi thích rằng vim 7.0 hỗ trợ kiểm tra chính tả thông qua: thiết lập chính tả, và tôi thích rằng nó theo mặc định chỉ kiểm tra ý kiến ​​và chuỗi văn bản trong mã C của tôi. Nhưng tôi muốn tìm cách thay đổi hành vi để vim sẽ biết rằng khi tôi viết các từ chứa dấu gạch dưới, tôi không muốn kiểm tra chính tả từ đó.Làm cách nào để thay đổi nhận dạng từ trong chính tả vim?

Vấn đề là tôi thường tham khảo tên biến hoặc tên hàm trong nhận xét của tôi, và vì vậy ngay bây giờ vim nghĩ rằng mỗi phần văn bản không phải là từ chính xác hoàn toàn là lỗi chính tả. Ví dụ.

/* The variable proj_abc_ptr is used in function do_func_stuff' */

Hầu hết thời gian, các mảnh tách bằng dấu gạch dưới là những từ hoàn chỉnh, nhưng đôi khi họ là từ viết tắt mà tôi không muốn thêm vào một danh sách từ. Có cách nào toàn cầu để nói vim để bao gồm _ như là một phần của từ khi kiểm tra chính tả?

Trả lời

4

Bạn sẽ cần di chuyển nó vào nhóm riêng của mình. Một cái gì đó như thế này:

hi link cCommentUnderscore cComment 
syn match cCommentUnderscore display '\k\+_\w\+' 
syn cluster cCommentGroup add=cCommentUnderscore 

Trong một số tô màu chữ bạn có thể cần [email protected] trên cuối dòng trận đấu, nhưng trong C, mặc định là @NoSpell, vì vậy nó nên được tốt như thế.

+0

Điều đó hoạt động tuyệt vời! Cảm ơn rất nhiều. Một bình luận mà tôi sẽ bổ sung: Tôi đã thử đặt nó vào trong .vimrc, nhưng nó không làm gì cả. Sau khi xem xét trợ giúp: syn, tôi đã tìm ra rằng để có được cú pháp này làm nổi bật thay đổi được sử dụng mỗi khi cú pháp C được tải, tôi cần phải đặt những dòng này vào một tệp ~/.vim/after/syntax/c.vim . Sau khi tôi làm điều đó, mọi thứ đều hoạt động tốt. –

+2

Sau khi sử dụng thay đổi này trong một thời gian ngắn, tôi đã thực hiện hai lần sàng lọc. Đầu tiên, không đánh vần các từ kiểm tra bằng _ ở đầu hoặc cuối của từ. Thứ hai, để không gây ra mọi từ với một _ trong nó được tô màu theo nhận xét. Dòng mới là: "syn match cCommentHiển thị màn hình hiển thị '_ \ k \ + \ | \ k \ + _ \ w *' chứa" –

2

Dưới đây là một số quy tắc ngoại lệ kiểm tra chính tả tổng quát hơn để đưa vào .vim/after/syntax/{LANG}.vim file:

" Disable spell-checking of bizarre words: 
" - Mixed alpha/numeric 
" - Mixed case (starting upper)/All upper 
" - Mixed case (starting lower) 
" - Contains strange character 
syn match spellingException "\<\w*\d[\d\w]*\>"  transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\<\(\u\l*\)\{2,}\>" transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\<\(\l\+\u\+\)\+\l*\>" transparent contained containedin=pythonComment,python.*String [email protected] 
syn match spellingException "\S*[/\\_`]\S*"   transparent contained containedin=pythonComment,python.*String [email protected] 

Thay đổi pythonComment,python.*String cho ngôn ngữ của bạn.

  • transparent có nghĩa là kết quả kế thừa thuộc tính tô sáng của nó từ khối chứa (tức là các quy tắc này không thay đổi cách hiển thị văn bản).
  • contained ngăn chặn những trận đấu từ mở rộng quá khứ khối chứa (quy tắc cuối cùng kết thúc với \S* mà có khả năng sẽ phù hợp với quá khứ cuối của một khối)
  • containedin giữ danh sách các nhóm cú pháp hiện có để thêm những quy định mới để.
  • [email protected] ghi đè bất kỳ và tất cả các nhóm được kế thừa, do đó yêu cầu trình kiểm tra chính tả bỏ qua văn bản phù hợp.
Các vấn đề liên quan