10 Stimmen

Können wir mehrere Snippet-Dateien für bestimmte Dateitypen in Vim verwenden?

Wenn man snipmate + vim benutzt, ist es möglich, viele Snippet-Dateien zu haben für eine bestimmte Sprache/einen bestimmten Dateityp zu laden?

Ex: snipmate kommt mit javascript.snippets Ich habe auch die mootools-Snippets geladen und dies zu meiner vimrc hinzugefügt: autocmd FileType javascript set ft=javascript.mootools

Jetzt kann ich

  • die vorrätigen js-Schnipsel
  • die Mootools-Schnipsel

Ich möchte einen 3. Satz von Snippets hinzufügen, javascript.myCustomSnippets das wird auch laden für den Dateityp javascript .

Wenn ich versuche, meine benutzerdefinierten Snippets mit etwas wie diesem hinzuzufügen autocmd FileType javascript set ft=javascript.myCustomSnippets überschreibt/deaktiviert es die mootools-Snippets, die Standard-Javascript-Snippets funktionieren jedoch weiterhin.

Wie kann ich das erreichen, oder ist das möglich?

ps: Ich weiß, dass ich meine Snippets einfach zur Standard-Javascript-Snippets-Datei hinzufügen könnte, aber da ich das Snipmate-Github-Repositorium mit meinem .vim/bundle/ Ich möchte die persönlichen Sachen von der Live-Repo getrennt halten.

Meine Lösung

Die spezifische Lösung, die schließlich dazu führte, dass meine Dateien nebeneinander funktionierten, bestand darin, meine Dateien wie folgt zu strukturieren (ich verwende übrigens Krankheitserreger zum automatischen Laden der bundle dir)

~/.vim/bundles/
    snipmate.vim/snippets/javascript.snippet
    vim-snippets.mootools/snippets/mootools.snippet
    vim-snippets.myCustomSnippets/snippets/javascript.snippets

Wenn ich meine Datei "javascript.snippets" nenne, wird sie zusammen mit den Standardeinstellungen automatisch geladen.

17voto

Andrew Radev Punkte 3847

Ruy Diaz hat Recht, was die persönlichen Sachen angeht. Sie können alle Ihre eigenen Snippets in "~/.vim/snippets" aufbewahren und Sie werden keine Probleme mit dem Github-Repos haben. Wenn das für Sie nicht funktioniert, kann die g:snippets_dir Variable könnte den falschen Wert haben -- setzen Sie sie einfach explizit in Ihren Vimfiles.

Um mehrere Snippets zu kombinieren, können Sie die ExtractSnipsFile Funktion. Das sollte das tun, was Sie wollen, ohne sich mit der gepunkteten Dateitypsyntax herumzuschlagen.

Nehmen wir an, Sie haben die folgenden drei Snippet-Dateien, die sich alle in Ihrem Snippet-Verzeichnis befinden:

  • javascript.snippets
  • mootools.snippets
  • myCustomSnippets.snippets

Erstellen Sie eine Datei "after/plugin/snippets.vim" und fügen Sie dort Folgendes ein:

call ExtractSnipsFile(g:snippets_dir.'javascript.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'mootools.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'myCustomSnippets.snippets', 'javascript')

Dadurch werden alle diese Schnipsel mit dem javascript Dateityp, keine expliziten Autokommandos erforderlich. Für weitere Informationen können Sie versuchen :help ExtractSnipsFile .

4voto

Ruy Diaz Punkte 2999

Erstellen Sie einen Snippets-Ordner in Ihrem .vim-Verzeichnis und legen Sie Ihre Snippets dort ab. Erstellen Sie dort eine Datei namens javascript.snippets und Sie sollten sowohl die Snipmate-Snippets als auch Ihre eigenen Snippets zur Verfügung haben.

3voto

mike Punkte 701

Nur als weitere Referenz, die :h snipMate Staaten: erweitert: erweitert die Snippets der angegebenen Dateitypen.

extends c, cpp, objc

würde dies alle Snippets für die angegebenen Dateitypen einschließen. Und legen Sie einfach Ihre eigene Snippet-Datei in ~/.vim/snippets/objc.snippet

1voto

Marc Weber Punkte 481

Ja, natürlich. Benutzen Sie zuerst github.com/MarcWeber/vim-addon-manager, damit Sie keine Upstreams verpassen. M. Sanders Snipmate wurde geforkt, weil er nie auf E-Mails über Merge-Anfragen geantwortet hat. Deshalb haben ich und garbas es verbessert. Die neue Version kann unter github.com/garbas/vim-snipmate gefunden werden.

Sie verfügen über ein globales Wörterbuch scope_aliases, das Sie verwenden können, um Dateitypen mit Snippet-Dateien zu verknüpfen. Auf diese Weise können Sie Html-Dateien je nach persönlichen Vorlieben ganz einfach Js-Snippet-Unterstützung hinzufügen. Es gibt noch einige weitere Änderungen, aber ich bin es leid, sie zu wiederholen.

0voto

dkinzer Punkte 30335

Da Sie Pathogen verwenden, müssen Sie lediglich einen benutzerdefinierten Snippets-Ordner in das Bundles-Verzeichnis aufnehmen. Zum Beispiel:

~/.vim/bundles/mySnippets/snippets/php.snippets

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X