Como compartilhar adições de verificação ortográfica do vim entre várias máquinas?

9

Eu uso o recurso de verificação ortográfica do vim. Como trabalho com muitos termos técnicos e comandos do LaTeX, costumo adicioná-los ao meu dicionário pessoal ~/.vim/spell/en.utf-8.add.

Gostaria de compartilhar esse arquivo entre várias máquinas, para que, quando adiciono uma palavra ao arquivo em uma máquina, ela também seja adicionada em outras máquinas e não seja necessário adicioná-lo uma vez em cada máquina. Tentei versionar ~/.vim/spell/en.utf-8.addno git, mas isso não parece funcionar: o vim não pega os novos termos. Eu suspeito que o vim também precise que o arquivo en.utf-8.add.splseja editado de alguma forma, mas como esse arquivo é binário, a versão provavelmente levará a conflitos.

Alguém aqui tem uma solução satisfatória para incluir adições de dicionário de verificação ortográfica do vim como parte de sua configuração e sincronizá-las entre todas as suas máquinas?

a3nm
fonte

Respostas:

13

O Vim usa o splarquivo para fazer as verificações, e o splarquivo é gerado a partir dele add. Podemos especular se o splarquivo é portátil em diferentes máquinas e versões do Vim, mas é mais fácil (e seguro) gerá-lo novamente, conforme necessário. Agora, o splarquivo é gerado novamente automaticamente quando você adiciona palavras ao dicionário local a partir do Vim, mas você deve executar mkspellpara gerá-lo novamente se editar o addarquivo diretamente.

Com isso em mente, você pode fazer algo como isto: sincronizar o addarquivo por qualquer meio (com git, rsync, NFS, ou qualquer outro), e adicionar estes comandos para o seu vimrcem todas as máquinas:

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

Isso irá gerar novamente o splarquivo na inicialização do Vim sempre que o addarquivo correspondente for mais novo que ele.

Sato Katsura
fonte
3
Brilhante, obrigado! Eu adicionei silentantes execpara não receber spam na inicialização pelas informações de progresso do comando (e não receber "Pressione ENTER ou digite o comando para continuar").
A3nm 9/10
2
@ a3nm Essa é uma questão de preferência. Como um administrador de sistemas sênior me explicou há muitos anos, receber spam com notificações "ok" é um sinal de que as coisas funcionam bem. :)
Sato Katsura
11
A propósito, se você também estiver usando essa configuração, provavelmente desejará automatizar o tratamento de conflitos de git. Expliquei como fazer isso aqui: a3nm.net/blog/git_auto_conflicts.html
a3nm
11
@ CBhihe: Você perdeu completamente o ponto. glob()é uma função interna do Vim que (como o nome sugere) executa o equivalente ao glashing do nome do caminho do Bash. Ou seja, glob()aceita uma expressão global e retorna uma lista ou sequência de todos os nomes de caminho correspondentes a essa expressão no sistema de arquivos local. Expressões Glob são como expressões regulares, apenas mais simples e menos poderosas. Digite :h globno Vim para obter detalhes horríveis.
Cecil Curry
4

Eu criei um plugin Vim para isso. Ele encontra o caminho para as pastas de ortografia automaticamente e chama mkspellas listas de palavras encontradas na inicialização para regenerar os arquivos de ortografia. Ele também cria .gitignoree .gitattributesarquivos nos diretórios ortográficos para excluir arquivos ortográficos binários e usar o driver de mesclagem de união do Git para evitar conflitos ao mesclar arquivos ortográficos de duas máquinas diferentes. Obrigado a Sato Katsura pelo mkspellexemplo.

https://github.com/micarmst/vim-spellsync

micarmst
fonte
0

Sincronizo minha pasta .vim com minhas máquinas usando o Dropbox. Sempre que eu fizer uma alteração na minha configuração, jogarei de volta no Dropbox e puxarei para as outras máquinas.

Eu tenho os comandos definidos no meu arquivo .bashrc para que eu possa salvar algumas digitações. Minha instalação do Vim não é muito complexa, por isso é muito rápido sincronizar quando faço uma alteração. Não tenho certeza de como lidaria com uma pasta .vim excepcionalmente grande.

zomgdavidbowie
fonte
4
Obrigado por esta sugestão! No entanto, o Dropbox é um software proprietário, por isso não deseja usá-lo. (Isso me força a se preocupar muito mais sobre a sua segurança, e não oferece garantias de confidencialidade do que eu armazenar nele.)
a3nm
2
Evite "dropbox". Use o gitcontrole de versão.
Cbhihe