有没有一种快速的方法来重建拼音文件名单?
问题描述:
有没有什么方法可以告诉vim更新'spelllang'
中列出的所有语言的拼写文件,以便从vim外部获取单词表更改?有没有一种快速的方法来重建拼音文件名单?
我已经开始检查wordit文件到git中,因为我厌倦了在多台计算机上添加相同的单词。我不想将拼写文件添加到git repo,因为每次合并都会变得很难看,但是每当我打开vim时,任何近期更新都会被忽略,直到我从vim内部重建拼写文件(例如zg
)在词典中添加一个词。
答
使用字典的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>
答
您可以创建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
答
我已通过添加* .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
这将导致VIM每个Vim启动时。新增文件已被更新时间重建.spl文件。
答
如果你只有一个单一的拼写文件,只是把这个在您的.vimrc
:
exec 'silent mkspell! ' . &spellfile . '.spl'
我已经建立了我想要的方式拼写文件(它在我的vimrc配置为使用对应于spelllang 〜/ .vim/spell /中的单词表,符号链接到git工作目录中的文件)。问题在于,只要该文件从vim外部更改,vim就会继续使用stale .spl文件而不是新的wordlist。 – 2014-12-03 01:39:47