Edit : Ich habe daraus ein kleines Plugin gemacht. Dies ist mein erster Versuch, einen zu schreiben, und ich habe keine Ahnung, was ich tue. Daher wird jede Hilfe sehr geschätzt. :) :)
Hier ist es: https://github.com/danielbmarques/vim-dialect
----------
Ich möchte weiterhin verwenden zg
und zw
Wörter zu den globalen vim hinzuzufügen spellfile
s, aber ich möchte verwenden zG
und zW
Wörter hinzuzufügen spellfile
spezifisch auf die Datei , die ich bin der Bearbeitung . Mit anderen Worten, ich möchte zG
und zW
muss für jede Datei persistent sein.
Festlegen der spellfile
Änderungen der Befehle zg
und zw
, während ich nur die Befehle zG
und ändern möchte zW
.
Also habe ich das einfach gemacht:
: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
Und es funktioniert ... aber es sieht für mich nicht nach einer guten Lösung aus (edit: es wird schon besser :)). Also dachte ich, ich würde es hier posten, falls jemand bessere Ideen oder Verbesserungen vorschlägt. Was denken Sie?
spellfile
wird nur erstellt, wenn der erste zG
trotzdem ausgeführt wird.
a spellfile specific to the file I'm editing
dachte ich, Sie verwenden mehrere Zauberdateien für zG
; Da der Rechtschreibdateiname vom Dateinamen ( let &l:spellfile = expand('%:p:h')...
) abgeleitet ist, können Sie dies für einen bestimmten Dateityp erreichen, indem Sie den Dateinamen und die Zuordnungen beim Öffnen dieser Datei definieren (Sie müssten <buffer>
sie den Zuordnungen hinzufügen). Ich ging auch davon aus, dass Sie diese Änderung zG
nur für bestimmte Dateien wünschen.
spellfile
für bestimmte Dateitypen , sondern einen spellfile
für jede Datei . Ich kann also Wörter hinzufügen, und wenn ich diese Datei erneut öffne, werden sie weiterhin hinzugefügt, jedoch nur für diese bestimmte Datei und nicht für andere. Das ist aber auch eine interessante Idee. Leider scheint es nicht möglich zu sein, mehr als eine Zauberdatei zu beschaffen, andernfalls könnte ich beides tun und einen Befehl zum Hinzufügen von Wörtern für die aktuelle Datei und einen anderen zum Hinzufügen von Wörtern für den aktuellen Dateityp haben.
one spellfile for each file
. Vielleicht habe ich etwas verpasst, aber wenn Sie den Code zu Ihrem hinzugefügt .vimrc
haben, konnten Sie nicht mehr als eine Zauberdatei haben, es sei denn, Sie haben es ausdrücklich noch :source
einmal wiederholt, um die neu zu bewerten %
.