2014-04-28 12 views
19

Tôi sử dụng Vim để viết các tệp .tex của mình, nhưng tôi gặp sự cố với trình kiểm tra chính tả trong Vim. Đôi khi nó không kiểm tra các từ, và tôi nghĩ rằng nó có thể là vì lý do sau đây.Kiểm tra chính tả Vim không phải lúc nào cũng hoạt động trong tệp .tex. Kiểm tra khu vực trong Vim

Vì Vim rõ ràng không được kiểm tra tất cả các từ trong tài liệu .tex, ví dụ, không phải phần mở đầu, nó chỉ kiểm tra chính tả ở một số vùng nhất định (theo nghĩa cú pháp). Như tôi đã thu thập từ here, một trong những khu vực này là texSectionZone. Những khu vực này có thể trở nên khá lớn, thực sự là một phần thường, vì vậy Vim gặp khó khăn khi nhận ra rằng nó thực sự nằm trong vùng texSectionZone (hoặc trong ay khác), và do đó không kiểm tra chính tả. Điều này có thể xảy ra nếu tôi thực hiện tìm kiếm trong tài liệu hoặc bất kỳ loại nhảy nào bỏ qua nhiều dòng (hoặc đúng hơn các trang).

Cách mà tôi kết luận này có thể là lý do như sau: Tôi biết rằng lệnh

:echo synIDattr(synID(line("."),col("."),1),"name") 

in tên của khu vực/vùng bạn đang ở trong (tôi thấy nó here), vì vậy khi người kiểm tra chính tả đã không làm việc tôi đã cố gắng này, và nó nói với tôi rằng nó không phải ở bất kỳ khu vực nào cả. Những nơi nó đã làm việc, tôi đã ở trong một khu vực nơi nó nên kiểm tra chính tả.

Cho đến nay giải pháp duy nhất của tôi là tìm phần gần nhất phía trên điểm tôi muốn bộ phận cần kiểm tra và sau đó di chuyển con trỏ trở lại điểm đã cho theo cách thủ công. Lý tưởng nhất là tôi sẽ rất thích một giải pháp đảm bảo rằng điều này không xảy ra, nhưng tôi cũng sẽ giải quyết một cách để tự làm cho vim 'cập nhật' mà khu vực đó là trong, mà không cần tôi phải di chuyển con trỏ rất nhiều . Trong trường hợp sau, tôi đang nghĩ về một giải pháp có thể được thực hiện cho một phím tắt.

PS Tôi nghi ngờ về việc nên gọi câu hỏi là gì. Nếu bạn đưa ra một tiêu đề giải thích vấn đề tốt hơn, hãy tự do thay đổi nó.

Trả lời

17

syntax/tex.vim đã sử dụng các mẫu đồng bộ khá phức tạp để đảm bảo rằng cú pháp tô sáng là chính xác, nhưng đối với tài liệu dài và phức tạp, điều này có thể vẫn không thành công.

tốt nhất bạn có thể làm là cố gắng để tăng cả giá trị của

syn sync maxlines=200 
syn sync minlines=50 

(ví dụ đến năm 2000 và 500). Đặt số này vào ~/.vim/after/syntax/tex.vim để ghi đè các giá trị mặc định.

syntax sync fromstart 

có thể cho kết quả tốt nhất, nhưng có thể quá chậm. Bạn sẽ tìm thấy mô tả về đồng bộ hóa cú pháp tại :help :syn-sync.

+0

Đây chính xác là những gì tôi đang tìm kiếm. Tôi đã cố gắng đọc trong ': help sync-syn', nhưng tôi phải thừa nhận rằng tôi không thực sự hiểu cách mọi thứ hoạt động. Vim cập nhật cú pháp như thế nào? Là một sự lựa chọn về điều này được thực hiện ở đâu đó. Có lẽ điều này là khó hiểu. Những gì tôi yêu cầu có lẽ là: nếu tôi chạy 'cú pháp đồng bộ từ đầu', sau đó cập nhật cú pháp từ đầu tài liệu _once_, hay nó cho Vim biết rằng nó luôn luôn nên thực hiện đồng bộ hóa cú pháp từ đầu? – Kristian

+0

Cái thứ hai; nếu điều này không làm chậm Vim quá nhiều, dính vào nó! –

+0

OK. Hầu hết các nơi trên mạng, nơi mọi người đề xuất nó, họ làm cho nó âm thanh như nó chỉ một lần. Nếu tôi chạy ': syn sync maxlines = 200' và': syn sync minlines = 50' sau đó, sau đó tôi đặt nó trở lại bình thường (như mặc định)? – Kristian

16

Kiểm tra chính tả không được thực hiện khi không có nhóm cú pháp nào được xác định (hoặc được tìm thấy bởi vim). Tôi thấy hữu ích khi bật kiểm tra lỗi chính tả ngay cả đối với nhóm không xác định (xem 'toplevel' trong tài liệu cú pháp của vim).

Để làm như vậy, hãy viết lệnh:

cú pháp đánh vần mục cấp đầu

trong file: ~/.vim/sau/cú pháp/tex.vim

Tận dụng tập tin nếu nó không tồn tại.

Điều đó đã làm điều đó cho tôi.

+0

Lệnh 'cú pháp chính tả toplevel' đã lừa cho tôi –

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