編集:これを小さなプラグインに変えました。これは私の最初の試みであり、私が何をしているかわからないので、どんな助けでも大歓迎です。:)
ここにあります:https://github.com/danielbmarques/vim-dialect
----------
私が使用し続けたいzg
とzw
グローバルのvimに単語を追加するspellfile
のが、私が使用したいzG
とzW
に単語を追加するためにspellfile
、私が編集していたファイルに固有。言い換えれば、私は各ファイルに対して永続的でzG
ありたいと思っzW
ています。
spellfile
変更を設定するzg
とzw
コマンドとコマンドが変更されますが、必要なのはコマンドzG
とzW
コマンドのみを変更することです。
だから私はこれをやった:
: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
そして、それは機能します…しかし、それは私にとって良い解決策のようには見えません(編集:それはすでに良くなっています:))。ですから、誰かがより良いアイデアや改善を提案する場合に備えて、ここに投稿すると思いました。どう思いますか?
spellfile
最初のファイルzG
が実行されたときにのみ作成されます。
a spellfile specific to the file I'm editing
私はあなたが複数のスペルファイルを使用していると思ったzG
。spellfilenameはファイル名(let &l:spellfile = expand('%:p:h')...
)から派生しているため、そのファイルを開くときにファイル名とマッピングを定義することにより、特定のファイルタイプに対してこれを実現できます(<buffer>
マッピングに含める必要があります)。またzG
、特定のファイルのみにこの変更を加えることを望んでいると想定しました。
spellfile
特定のファイルタイプを意味するのではなく、ファイルspellfile
ごとに1つです。そのため、単語を追加することができます。そのファイルをもう一度開くと、それらは引き続き追加されますが、その特定のファイルだけに適用され、他のファイルには追加されません。それも興味深いアイデアです。残念ながら、それは複数のスペルファイルを調達する方法ではないようです。それ以外の場合は、両方を実行して、現在のファイルに単語を追加するコマンドと現在のファイルタイプに単語を追加するコマンドを使用できます。
one spellfile for each file
。多分私は何かを見逃したかもしれませんが、コードをあなたに追加した場合.vimrc
、:source
再度それを明示的に再評価しない限り、複数のスペルファイルを持つことはできませんでした%
。