2014-12-02 4 views
3

Есть ли способ сообщить vim обновить файлы заклинаний для всех языков, перечисленных в 'spelllang', чтобы получить изменения в списке слов извне vim?Есть ли быстрый способ перестроить файлы заклинаний из списков слов?

Я начал проверять файл списка слов в git, так как устал добавлять одни и те же слова на несколько компьютеров. Я не хочу добавлять файл заклинаний в git repo, так как слияния будут уродливыми каждый раз, но всякий раз, когда я открываю vim, любые последние обновления игнорируются, пока я не сделаю что-то изнутри vim, которое перестраивает файл заклинаний, например zg, добавьте слово в словарь.

ответ

0

Работа с git-репо словаря имеет смысл. Проблема заключается в том, чтобы сообщить vim о вашем словаре. Простым решением является отображение vim для использования правильного словаря. Например, если ваши слова в my-dictionary.txt, то вы можете работать с Vim:

:mkspell ~/.vim/spell/en_my_dict /path/to/git/repo/my-dictionary.txt 

Я, вероятно, использовать что-то вроде:

" Set up Dictionary for check 
" This is will add your dictionary to existing list. 
" To use only your dictionary use, setlocal &spelllang=en_my_dict 
nmap <leader>ss :setlocal &spelllang=join(add(split(&spelllang, ','), 'en_my_dict'), ',') 

" Spell Check (Redo to disable) 
nmap <silent> <leader>sc :set spell!<CR> 
+0

Я уже файлы заклинания создано так, как я хочу (это настраивается в моем vimrc использовать spelllang, соответствующий список слов в ~/.vim/spell /, символически привязанный к файлу в рабочем каталоге git). Проблема в том, что всякий раз, когда этот файл изменяется извне vim, vim продолжает использовать устаревший .spl-файл вместо нового словаря. –

1

Вы можете создать GIT смазыванию/чистые фильтры и после оформления заказа крюк в позвоните по телефону :mkspell.

$ mkdir -p ~/.vim/spell 
$ cd ~/.vim/spell 
$ git init 
$ echo '*.spl' > .gitignore 
$ touch words.utf-8.add 
$ git add . && git commit -m 'init' 
$ echo '*.add filter=spellfile' > .git/info/attributes 
$ git config filter.spellfile.smudge cat 
$ git config filter.spellfile.clean 'sort -u' 
$ cd .git/hooks/ 
$ vim mkspell 
#!/bin/sh 
SPELL_FILE="`git rev-parse --show-toplevel`/words.utf-8.add" \ 
    vim -i NONE -u NORC -U NONE -V1 -nNesc ' 
     execute ":mkspell! " . fnameescape($SPELL_FILE) | echo "" | qall! 
     ' 
$ chmod +x ./mkspell 
$ ln -s ./mkspell post-checkout 

Затем добавьте spellfile установки в ваш ~/.vimrc

set spellfile=~/.vim/spell/words.utf-8.add 
6

Я решил эту проблему, добавив * .spl в файл .gitignore, а затем в vimrc (который также синхронизирован с GIT, добавьте:

for d in glob('~/.vim/spell/*.add', 1, 1) 
    if filereadable(d) && (!filereadable(d . '.spl') || getftime(d) > getftime(d . '.spl')) 
     exec 'mkspell! ' . fnameescape(d) 
    endif 
endfor 

источник: https://vi.stackexchange.com/questions/5050/how-to-share-vim-spellchecking-additions-between-multiple-machines

Это приведет к ВИМ, чтобы восстановить .spl файл каждый раз, когда .add файл был обновлен при запуске Vim.

0

Если у вас есть только один файл заклинаний, просто поместите это в .vimrc:

exec 'silent mkspell! ' . &spellfile . '.spl' 
Смежные вопросы