複数のマシン間でvimスペルチェックの追加を共有するにはどうすればよいですか?


9

vimのスペルチェック機能を使用しています。私は多くの専門用語とLaTeXコマンドを扱っているので、それらの多くをの個人用辞書に追加する傾向があります~/.vim/spell/en.utf-8.add

このファイルを複数のマシンで共有したいので、1つのマシンでファイルに単語を追加すると、他のマシンでも単語が追加され、各マシンで1回追加する必要がなくなります。私~/.vim/spell/en.utf-8.addはgitでバージョン管理を試みましたが、これは機能していないようです:vimは新しい用語を取得しません。vimもen.utf-8.add.spl何らかの形でファイルを編集する必要があると思いますが、このファイルはバイナリであるため、バージョン管理を行うと競合が発生する可能性があります。

ここの誰もが、設定の一部としてvimスペルチェック辞書を追加し、すべてのマシン間でそれらを同期するための満足できるソリューションを持っていますか?

回答:


13

Vimはsplファイルを使用してチェックを行い、splファイルはaddファイルから生成されます。splファイルが異なるマシンやVimバージョン間で移植可能かどうかを推測できますが、必要に応じて再生成する方が簡単(かつ安全)です。これで、splVim内からローカル辞書に単語を追加すると、ファイルは自動的に再生成されますがmkspelladdファイルを直接編集する場合は、実行して再生成する必要があります。

このことを念頭に置いて、あなたはこのような何かを行うことができます:同期add(と何らかの手段でファイルをgitrsync、NFS、または何でも)、およびこれらのコマンドを追加するには、vimrcすべてのマシン上:

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

これによりspl、対応するaddファイルがそれよりも新しい場合は常に、Vimの起動時にファイルが再生成されます。


3
素晴らしい、ありがとう!silent以前に追加したexecので、コマンドの進行状況情報によって起動時にスパムを受けないようにします(「続行するにはEnterキーを押すか、コマンドを入力してください」を取得しません)。
a3nm

2
@ a3nmそれは好みの問題です。何年も前に上級のシステム管理者が私に説明したように、「ok」通知が大量に送信されていることは、うまく機能している兆候です。:)
佐藤桂

1
ちなみに、この設定を使用している場合は、おそらくgitの競合の処理を自動化する必要があります。その方法をここで説明しました:a3nm.net/blog/git_auto_conflicts.html
a3nm

1
@Cbhihe:ポイントを完全に逃してしまいました。 glob()(名前が示すように)Bashパス名のグロビングと同等の機能を実行する組み込みのVim関数です。つまりglob()、glob式を受け入れ、ローカルファイルシステム上のその式に一致するすべてのパス名のリストまたは文字列を返します。グロブ表現は正規表現に似ており、単純で強力ではありません。:h glob陰惨な詳細については、Vim内で入力してください。
セシルカレー

4

このためのVimプラグインを作成しました。スペルフォルダーへのパスを自動的mkspellに検出し、起動時に検出した単語リストを呼び出して、スペルファイルを再生成します。また、バイナリスペルファイルを除外し、Gitのユニオンマージドライバーを使用して、2つの異なるマシンからのスペルファイルをマージする際の競合を回避するために、spellディレクトリにファイルを作成.gitignore.gitattributesます。おかげ佐藤桂のための一例。mkspell

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


0

Dropboxを使用して.vimフォルダーをマシンに同期します。構成に変更を加えたら、それをDropboxに戻し、他のマシンにプルダウンします。

コマンドを.bashrcファイルに設定してあるので、タイピングの手間を省くことができます。私のVimのインストールはそれほど複雑ではないので、変更を加えると同期がかなり速くなります。非常に大きな.vimフォルダーの処理方法がわからない。


4
この提案をありがとう!ただし、Dropboxは独自のソフトウェアであるため、使用したくありません。(それは私にそのセキュリティについてもっと多くのことを心配させ、それは私がそれに保存するものの機密性の保証を提供しません。)
a3nm

2
「dropbox」は避けてください。git代わりにバージョン管理を使用してください。
Cbhihe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.