Chỉnh sửa : Tôi đã biến nó thành một plugin nhỏ. Đây là nỗ lực đầu tiên của tôi khi viết một bài và tôi không biết mình đang làm gì, vì vậy mọi sự giúp đỡ đều được đánh giá cao. :)
Đây là: https://github.com/danielbmarques/vim-dialect
----------
Tôi muốn tiếp tục sử dụng zgvà zwthêm từ vào vim toàn cầu spellfile, nhưng tôi muốn sử dụng zGvà zWthêm từ vào một spellfile cụ thể cho tệp tôi đang chỉnh sửa . Nói cách khác, tôi muốn zGvà zWkiên trì cho từng tệp.
Đặt các spellfilethay đổi zgvà zwcác lệnh, trong khi điều tôi muốn là chỉ thay đổi các lệnh zGvà zW.
Vì vậy, tôi đã làm điều này:
:au BufNewFile,BufRead * let &l:spellfile = expand('%:p:h') . '/.' .
\ substitute(expand('%:t'), '\(.*\)\..*', '\1', '') . '.utf-8.add'
nnoremap zG :call LocalSpell("zG")<cr>
nnoremap zW :call LocalSpell("zW")<cr>
nnoremap zuG :call LocalSpell("zuG")<cr>
nnoremap zuW :call LocalSpell("zuW")<cr>
nnoremap zg :call GlobalSpell("zg")<cr>
nnoremap zw :call GlobalSpell("zw")<cr>
nnoremap zug :call GlobalSpell("zug")<cr>
nnoremap zuw :call GlobalSpell("zuw")<cr>
vnoremap zG :call LocalSpell("gvzG")<cr>
vnoremap zW :call LocalSpell("gvzW")<cr>
vnoremap zuG :call LocalSpell("gvzuG")<cr>
vnoremap zuW :call LocalSpell("gvzuW")<cr>
vnoremap zg :call GlobalSpell("gvzg")<cr>
vnoremap zw :call GlobalSpell("gvzw")<cr>
vnoremap zug :call GlobalSpell("gvzug")<cr>
vnoremap zuw :call GlobalSpell("gvzuw")<cr>
function! LocalSpell(cmd)
if &l:spellfile == ""
execute "normal! " . a:cmd
else
execute "normal! " . tolower(a:cmd)
endif
endfunction
function! GlobalSpell(cmd)
let b:spellfile = &l:spellfile
setlocal spellfile=
execute "normal! " . a:cmd
let &l:spellfile = b:spellfile
endfunction
Và nó hoạt động rất tốt nhưng nó không giống như một giải pháp tốt cho tôi (chỉnh sửa: nó đã trở nên tốt hơn rồi :)). Vì vậy, tôi nghĩ rằng tôi sẽ đăng nó ở đây trong trường hợp bất cứ ai có ý tưởng hoặc cải tiến tốt hơn để đề xuất. Bạn nghĩ sao?
spellfilechỉ được tạo khi lần đầu tiên zGđược chạy.
a spellfile specific to the file I'm editingtôi nghĩ rằng bạn đang sử dụng nhiều chính tả cho zG; vì tên chính tả được lấy từ tên tệp ( let &l:spellfile = expand('%:p:h')...), bạn có thể đạt được điều này cho một kiểu tệp cụ thể bằng cách xác định tên tệp và ánh xạ khi mở tệp đó (bạn sẽ cần đưa <buffer>vào ánh xạ). Tôi cũng cho rằng bạn muốn thay đổi này zGchỉ trong một số tệp cụ thể.
spellfilecho các kiểu tệp cụ thể , nhưng một spellfilecho mỗi tệp . Vì vậy, tôi có thể thêm từ và khi tôi mở lại tệp đó, chúng sẽ vẫn được thêm, nhưng chỉ với tệp cụ thể đó chứ không phải bất kỳ tệp nào khác. Đó cũng là một ý tưởng thú vị. Thật không may, có vẻ như đó không phải là một cách để tạo nhiều nguồn chính tả, nếu không tôi có thể thực hiện cả hai và có một lệnh để thêm từ cho tệp hiện tại và một cách khác để thêm từ cho kiểu tệp hiện tại.
one spellfile for each file. Có thể tôi đã bỏ lỡ điều gì đó, nhưng nếu bạn đã thêm mã vào thì .vimrcbạn không thể có nhiều hơn một lỗi chính tả, trừ khi bạn rõ ràng :sourcelại đánh giá nó một lần nữa để đánh giá lại %.