Modelines có vẻ như là một cách để làm điều này, nhưng tiếc là chúng sẽ không hoạt động. Modelines chỉ hỗ trợ các tùy chọn cài đặt ( shiftwidth
,, colorcolumn
loại đó). Bạn có thể sử dụng một mô hình như vim: spell
để kích hoạt kiểm tra chính tả cho một tài liệu. Tuy nhiên, spellgood!
là một lệnh Ex, không phải là một tùy chọn. Hơn nữa, bạn đặc biệt không thể đặt một số tùy chọn (bao gồm spellfile
, xem :help spellfile
) từ các mô hình vì lý do bảo mật.
Bạn có thể tạo một loạt các autocommands tệp cụ thể trong vimrc của mình, nhưng điều đó sẽ trở nên rất khó để duy trì theo thời gian, tẻ nhạt nếu bạn từng có hai tệp có cùng tên ở các vị trí khác nhau và sẽ không di chuyển "với tập tin."
Thay vào đó, giải pháp tốt nhất có lẽ là xây dựng tính năng giống mô hình của riêng bạn để thêm từ bằng cách phân tích một số khối văn bản đã xác định trong tài liệu. Ví dụ: bạn có thể tìm các dòng bắt đầu bằng "spellgood:"
và tự động thêm bộ từ được phân tách bằng dấu cách vào danh sách từ bên trong:
function! AddLocalSpelling ()
" Save the cursor position.
let cursor_position = getcurpos()
let location = searchpos("\"spellgood:", "c")
while location != [0, 0]
let words = split(getline(location[0]))
" The first 'word' will be the sentinel token itself (unless)
" we found the token in an embedded string or comment...
if words[0] == "\"spellgood:"
call remove(words, 0)
for word in words
execute "silent spellgood! " . word
endfor
endif
let location = searchpos("\"spellgood:", "W")
endwhile
" Restore cursor position.
call setpos(".", cursor_position)
endfunction
Sau đó, bạn có thể thiết lập một autocommand cho, nói BufReadPost * call AddLocalSpelling()
trong của bạn .vimrc
. Trong thực tế, có lẽ bạn muốn làm cho chức năng trên trở nên mạnh mẽ hơn khi đối mặt với các lỗi và có thể sử dụng comments
để xem mã thông báo nhận xét hợp lệ là gì (tôi đã chọn "
vì tôi đã thử nghiệm điều này trong bộ đệm VimL). Câu trả lời SuperUser này được liên kết bởi JJoao trong các bình luận cung cấp cách triển khai tương tự nhưng thay thế cho phép bạn sử dụng các khối từ thay vì chỉ một dòng tại một thời điểm.
Phương pháp này sẽ yêu cầu những người khác sử dụng cùng chức năng hoặc ít nhất là đồng ý với các quy tắc phân tích cú pháp tương tự, vì vậy nó không hoàn hảo. Nhưng bạn có thể lấy nó và quảng bá chức năng cho một plugin nếu bạn muốn, cho phép người dùng khác truy cập dễ dàng hơn.
modeline
?