Wie kann ich eine Liste der Namen von Dateitypen abrufen, die vim derzeit kennt?
Ich möchte in der Lage sein, dies zu tun, damit ich, wenn vim einen Dateityp nicht automatisch erkennt, einige der von vim bekannten Dateitypen ausprobieren kann.
Ich weiß, dass Vimscript-Dateien, die sich mit Dateitypen befassen, ftplugin
nach Konvention in das Verzeichnis gestellt werden, aber das müssen sie nicht (ich bin nicht sicher, aber ich denke nicht, dass die Vimscript-Dateien im ftplugin
Verzeichnis etwas Besonderes sind), also möchte ich nur Fragen Sie vim, welche Dateitypen es kennt, unabhängig davon, wie es von ihnen erfahren hat.
syntax-highlighting
Praxeolitische
quelle
quelle
:setfiletype
(dh mitTab
nach einem Leerzeichen). Ich bin mir nicht sicher, ob es sich um die vollständige Liste handelt oder wie ich sie in einem Puffer / einer Datei erfassen soll.<c-d>
anstelle von,<tab>
um Vervollständigungen aufzulisten.Antworten:
Einfache Lösung
Geben Sie
:setfiletype
(mit einem Leerzeichen danach) ein und drücken Sie dannCtrl-d
.Sehen Sie
:help cmdline-completion
für weitere Informationen über die automatische Vervollständigung in der Befehlszeile des vim.Komplizierte Lösung
Diese Lösung verwendet die
'runtimepath'
Option, um alle verfügbaren Syntaxverzeichnisse abzurufen, und ruft dann eine Liste der Vimscript-Dateien in diesen Verzeichnissen ab, deren Erweiterungen entfernt wurden. Dies ist möglicherweise nicht die sicherste Methode, daher sind Verbesserungen willkommen:Sie können diese Funktion dann wie gewünscht verwenden, z. B. um alle Werte in der Liste auszudrucken. Das könnten Sie so machen:
Beachten Sie, dass dies wahrscheinlich ziemlich stark komprimiert werden kann. Dies dient nur der Lesbarkeit. Ich werde nicht alle hier verwendeten Funktionen und Befehle erklären, aber hier sind alle Hilfeseiten für sie:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
quelle
set filetype<space><c d>
, zeigt es mir eine Liste, aber HTML ist nicht in der Liste. Java ist nicht in der Liste. Wie zeige ich Dateitypnamen im Sinne von Dateitypen an, die den Syntaxformatierungskonfigurationen entsprechen?:setfiletype
keinen typischen Abstand zwischen "set" und "filetype". Weitere Informationen finden Sie mit:help :setfiletype
und:help ftdetect
.:setfiletype ht<Ctrl+D>
Dateityp auflisten, der mit ht beginnt und unerwünschte Ergebnisse filtert. :)Wenn Ihre Version von vim aktuell genug ist (v7.4.2011 +), können Sie mit der Funktion, die wir jetzt zur Definition der manuellen automatischen Vervollständigung verwenden können, nach bekannten Dateitypen fragen:
getcompletion()
Wenn Sie die Liste auf Dateitypen beschränken möchten, die mit a beginnen
'c'
, rufen Sie anund so weiter.
Hinweis: Im Gegensatz zu Lösungen, in denen die Dateinamen und Verzeichnisnamen
$VIMRUNTIME/{syntax,filetype}/
analysiert werden, wird auch diese Lösung analysiert'runtimepath'
. Soweit ich weiß, werden keine neuen Dateitypen angezeigt, die im laufenden Betriebset ft=foobar
oder nach automatischen Befehlen definiert / registriert wurden .quelle
Sie können auch alle Dateitypen im Terminal drucken, indem Sie die folgenden 2 Befehle ausführen:
1.
2.
Der erste Befehl navigiert einfach zu Ihrem vim-Laufzeitpfad (für mich war es / usr / share / vim / vim80 ).
Der zweite Befehl listet alle Dateitypnamen in den beiden Ordnern auf, in denen vim die Dateitypdefinitionen speichert.
Aktualisieren
Verbesserungsvorschläge für die beiden Befehle von muru, die Folgendes bieten:
1.
2.
quelle
tr
Zeilenumbrüche nur in Null konvertieren, um sie beim nächsten Befehl wieder zu konvertieren, führen Sie die Substitution durch, wenn dies durch eine einfache Befehlsgruppierung möglich wäre. Ich würde folgendes vorschlagen:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Ich denke.printf
ein builtin):f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. Eine Erläuterung der Hieroglyphen finden Sie unter "Parametererweiterung" in der Bash-Manpage.bash
, die kein echtes Plugin für Dateitypen sind ... und den Effekt von Dateityp "sh"