Wie kann man vim-Ergänzungen zur Rechtschreibprüfung zwischen mehreren Computern teilen?

9

Ich verwende die Rechtschreibprüfung von vim. Da ich mit vielen Fachbegriffen und LaTeX-Befehlen arbeite, neige ich dazu, viele davon meinem persönlichen Wörterbuch in hinzuzufügen ~/.vim/spell/en.utf-8.add.

Ich möchte diese Datei auf mehreren Computern freigeben, damit sie beim Hinzufügen eines Wortes zur Datei auf einem Computer auch auf anderen Computern hinzugefügt wird und ich es nicht einmal auf jedem Computer hinzufügen muss. Ich habe versucht, ~/.vim/spell/en.utf-8.addin git zu versionieren , aber das scheint nicht zu funktionieren: vim greift die neuen Begriffe nicht auf. Ich vermute, dass vim die Datei en.utf-8.add.splauch irgendwie bearbeiten muss, aber da diese Datei binär ist, wird die Versionierung wahrscheinlich zu Konflikten führen.

Hat hier jemand eine zufriedenstellende Lösung, um vim Rechtschreibprüfungswörterbuch-Ergänzungen als Teil seiner Konfiguration zu haben und sie zwischen all seinen Maschinen zu synchronisieren?

a3nm
quelle

Antworten:

13

Vim verwendet die splDatei, um die Überprüfungen durchzuführen, und die splDatei wird aus der addDatei generiert . Wir können darüber spekulieren, ob die splDatei auf verschiedene Computer und Vim-Versionen portierbar ist, aber es ist einfacher (und sicherer), sie nach Bedarf neu zu generieren. Jetzt wird die splDatei automatisch neu generiert, wenn Sie in Vim Wörter zu Ihrem lokalen Wörterbuch hinzufügen. Sie müssen sie jedoch ausführen, mkspellum sie neu zu generieren, wenn Sie die addDatei direkt bearbeiten .

Mit dem im Verstand, können Sie etwas tun: synchronisieren Sie die addDatei mit allen Mitteln (mit git, rsync, NFS, oder was auch immer), und fügen Sie diese Befehle an Ihre vimrcauf allen Maschinen:

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

Dadurch wird die splDatei beim Start von Vim neu generiert, wenn die entsprechende addDatei neuer als sie ist.

Sato Katsura
quelle
3
Genial, danke! Ich habe silentzuvor hinzugefügt, execdamit ich beim Start nicht durch die Fortschrittsinformationen des Befehls Spam bekomme (und nicht "Drücken Sie ENTER oder geben Sie den Befehl ein, um fortzufahren").
A3NM
2
@ a3nm Das ist eine Frage der Präferenz. Wie mir ein leitender Systemadministrator vor vielen Jahren erklärte, ist es ein Zeichen, dass die Dinge gut funktionieren, wenn sie mit "OK" -Benachrichtigungen gespammt werden. :)
Sato Katsura
1
Übrigens, wenn Sie dieses Setup auch verwenden, möchten Sie wahrscheinlich die Behandlung von Git-Konflikten automatisieren. Ich habe hier erklärt, wie das geht: a3nm.net/blog/git_auto_conflicts.html
a3nm
1
@Cbhihe: Du hast den Punkt völlig verpasst. glob()ist eine integrierte Vim-Funktion, die (wie der Name schon sagt) das Äquivalent zum Globbing von Bash-Pfadnamen ausführt. Das heißt, glob()akzeptiert einen Glob-Ausdruck und gibt eine Liste oder Zeichenfolge aller Pfadnamen zurück, die mit diesem Ausdruck im lokalen Dateisystem übereinstimmen. Glob-Ausdrücke sind wie reguläre Ausdrücke, nur einfacher und weniger leistungsfähig. Geben Sie :h globin Vim grausame Details ein.
Cecil Curry
4

Ich habe dafür ein Vim-Plugin erstellt . Es findet automatisch den Pfad zu den Zauberordnern und ruft dann mkspellbeim Start alle gefundenen Wortlisten auf, um die Zauberdateien neu zu generieren. Außerdem werden Dateien in den Rechtschreibverzeichnissen erstellt .gitignoreund .gitattributesabgelegt, um binäre Rechtschreibdateien auszuschließen und den Union Merge-Treiber von Git zu verwenden , um Konflikte beim Zusammenführen von Zauberdateien von zwei verschiedenen Computern zu vermeiden. Vielen Dank an Sato Katsura für das mkspellBeispiel.

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

micarmst
quelle
0

Ich synchronisiere meinen .vim-Ordner mit Dropbox mit meinen Computern. Immer wenn ich meine Konfiguration geändert habe, werfe ich sie zurück auf Dropbox und ziehe sie auf meinen anderen Computern herunter.

Ich habe die Befehle in meiner .bashrc-Datei festgelegt, damit ich einige Eingaben speichern kann. Meine Vim-Installation ist nicht zu komplex, daher ist die Synchronisierung bei Änderungen ziemlich schnell. Ich bin mir nicht sicher, wie es mit einem außergewöhnlich großen .vim-Ordner umgehen würde.

zomgdavidbowie
quelle
4
Danke für diesen Vorschlag! Dropbox ist jedoch eine proprietäre Software, daher möchte sie nicht verwendet werden. (Es zwingt mich, mir viel mehr Sorgen um seine Sicherheit zu machen, und es bietet keine Vertraulichkeitsgarantien für das, was ich darin speichere.)
a3nm
2
Vermeiden Sie "Dropbox". Verwenden Sie gitstattdessen die Versionierung.
Cbhihe