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 zg
và zw
thêm từ vào vim toàn cầu spellfile
, nhưng tôi muốn sử dụng zG
và zW
thê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 zG
và zW
kiên trì cho từng tệp.
Đặt các spellfile
thay đổi zg
và zw
các lệnh, trong khi điều tôi muốn là chỉ thay đổi các lệnh zG
và 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?
spellfile
chỉ được tạo khi lần đầu tiên zG
được chạy.
a spellfile specific to the file I'm editing
tô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 zG
chỉ trong một số tệp cụ thể.
spellfile
cho các kiểu tệp cụ thể , nhưng một spellfile
cho 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ì .vimrc
bạn không thể có nhiều hơn một lỗi chính tả, trừ khi bạn rõ ràng :source
lại đánh giá nó một lần nữa để đánh giá lại %
.