Vim und snipMate (Plugin) - Hinzufügen neuer Snippet wird nicht funktionieren

StackOverflow https://stackoverflow.com/questions/4488786

  •  11-10-2019
  •  | 
  •  

Frage

Ich versuche, ein neues Snippet zu meinem snipMate Plugin zu erstellen.

Ich arbeite mit einigen Dateien genannt (d) myfile.endfile

Alle .endfile Dateien sollten den gleichen „Schnipsel“ wie HTML-Dateien haben. So habe ich

cp html.snippet endfile.snippet

in meiner ~ / .vim / snippets Verzeichnis.

SnipMate arbeitet mit allen gegenwärtigen Schnipseln, aber nicht mit meinem neuen erstellt ein. Irgendwelche Vorschläge für dieses Problem?

(Btw., Nachdem die neue .snippet-Datei erstellen, lief ich :helptags ~/.vim/doc Befehl in einer vim-Instanz)

War es hilfreich?

Lösung

Es ist, weil Snipmate mit filetype arbeitet, die eine Vim Option gesetzt wird, wenn eine Datei eines bestimmten Typs zu öffnen.

Für exemple, wenn Sie öffnen, "index.html" die filetype automatisch html eingestellt ist.

Um zu sehen, wie es funktioniert, tun:
:e $VIMRUNTIME/filetype.vim

Als Vorversuch können Sie:
1. Öffnen Sie test.endfile
2. Art :set ft=endfile oder :set filetype=endfile
3. Überprüfen Sie, ob Ihre definierten Schnipsel jetzt Arbeit

Um das zu tun automatisch die folgenden in Ihrem .vimrc hinzufügen:
au BufNewFile,BufRead *.endfile set filetype=endfile

Es bedeutet, dass jedes Mal, wenn Sie eine neue Datei in endfilethe Dateityp Option lesen oder erstellen Sie endet auf endfile eingestellt ist.

(Der Dateityp ist eine beliebige Zeichenkette, die es nicht auf die Dateierweiterung identisch sein muss)

Andere Tipps

Sie können Schnipsel zuweisen, ohne den Dateityp zu verändern (was wünschenswert ist, da die Hervorhebung Syntax Datei des Typs Pause zu verändern).

ich die richtige Art und Weise glaube, dies zu tun in der gehalten Gabel von snipmate zu Satz g :. snipMate.scope_aliases

In Ihrem Beispiel vorausgesetzt, Sie haben eine ‚endfile.snippet‘ Datei, ich glaube, die folgend zu Ihrem .vimrc Hinzufügen funktionieren würde:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'endfile'

Wenn Sie HTML und endfile Schnipsel Arbeit für Dateien von filetype = ‚html‘, dann verwenden:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'html,endfile'

Ich habe hinzugefügt, um ihre Dokumentation einen -Pull-Request snipmate aktualisiert haben . Edit: Es ist jetzt verschmolzen worden.

Ich fand es bequem zu bedienen global Schnipsel wenn Schnipsel verwenden, die ungewöhnlich name.endfile haben.

Wenn Sie setzen Ihre Schnipsel in _. Schnipsel Datei innerhalb Schnipsel Ordner sie global werden und zugänglich sind, in jedem Dateityp.

Vielleicht ist dies nicht direkt auf die Frage beantworten, aber viele Benutzer mit ähnlichem Problem diesen bequem finden kann. Besonders, wenn sie in verschiedenen Dateien haben keine Notwendigkeit, alles organisiert haben und sind glücklich, ihren eigenen Schnipsel in einer Datei zu haben, die überall zugänglich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top