Finden Sie heraus, welcher Dateityp in vim geladen ist

224

Sobald ich eine Datei in vim lade, wird versucht, die Datei zu erkennen und wenn möglich farblich hervorzuheben.

Ich möchte einen vim-Befehl kennen, der mir sagt, welches ftplugin oder Dateityp-Plugin / Dateityp vim in Betracht zieht, um die Datei hervorzuheben.

Ruturaj
quelle
Macht vim das nicht automatisch?
Am
Wenn Sie ein Vimscript in ~ / .vim / ftplugin / einfügen, wird dieses Vimscript beim Laden einer Datei mit dem entsprechenden Dateityp erstellt. So setzen setlocal cursorlinein ~/.vim/ftplugin/python.vimund Sie werden aktuelle Zeile haben in Python - Dateien markieren. Siehe :help ftpluginund:help after
idbrii

Antworten:

365

:set filetype?

Hobbs
quelle
39
Sie können ein paar Tastenanschläge speichern und einfach verwenden:set ft?
Matthew Rankin
35
:se ft?- Ich gewinne. ;)
sjas
39
:se ft? Ich habe gewonnen!
Fábio Santos
SO erfordert eine minimale Kommentarlänge, daher ist es möglicherweise nicht offensichtlich, dass der kürzeste nach dem endet t. ? es ist optional.
Reergymerej
15

Sie können auch den Dateityp auf Ihre Statuszeile oder Fenstertitel mit der hinzufügen %yund %YArtikel. Sehen

:help 'statusline'
:help 'titlestring'
Nefrubyr
quelle
11

&filetype für die Verwendung von Skripten

Minimales Beispiel:

echo &filetype

Realistischeres Anwendungsbeispiel:

if &filetype ==# 'c' || &filetype ==# 'cpp'
  setlocal noexpandtab
endif

&Die Syntax funktioniert für alle Optionen: /vi/2569/how-do-i-check-the-value-of-a-vim-option-in-vimscript

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
2

Als ich den Dateityp finden wollte, hatte ich die Erweiterung .ipy, die ein Ipython-Skript modifizierte. Die obigen Fragen und Antworten haben hervorragend funktioniert, um festzustellen, dass die Ipython-Erweiterung nicht als Python behandelt wurde (etwas offensichtlich). Daher wollte ich das Festlegen des Dateityps erzwingen, und ich fand dies von der immer helfpul vim-Site. http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions

Das Hinzufügen des Folgenden zu Ihrer .vimrc funktioniert

au BufRead,BufNewFile *.ipy set filetype=python
Paul
quelle
2

Da Sie diese Frage in erster Linie stellen / suchen, gehe ich davon aus, dass Sie dies tun, weil Ihr vim die richtige Syntax für Sie nicht automatisch hervorhebt und Sie versuchen herauszufinden, warum und wie Sie sie beheben können.

Der Befehl :set filetype?in der gewählten Antwort fragt vim grundsätzlich "Hey, welcher Typ ist Ihrer Meinung nach die aktuelle Datei?". Und wenn vim nicht die richtige Farbe / Hervorhebung anzeigt, wird diese wahrscheinlich filetype=am unteren Rand Ihrer Konsole angezeigt, was bedeutet, dass vim den Dateityp nicht kennt. Dies ist nur die Hälfte Ihrer Suche.

Logischerweise wird Ihr nächster Schritt vim sagen "Markieren Sie es einfach mit (zum Beispiel) ps1-Syntax". Wenn Sie dies eingeben :set filetype=ps1, hebt vim jetzt die aktuelle Datei im ps1-Stil hervor (vorausgesetzt, Sie laden bereits die richtige Powershell-Syntaxdatei herunter und fügen sie in Ihre ~ / .vim / -Syntax ein ).

An diesem Punkt möchten Sie wahrscheinlich von nun an die automatische Syntaxhervorhebung. Die Lösung besteht darin, ein entsprechendes Erkennungsskript in Ihren Ordner ~ / .vim / ftdetect zu legen. Wenn Sie beispielsweise alle PowerShell-Skripts .ps1, .psm1 usw. hervorheben möchten, fügen Sie diese Datei in ~ / .vim / ftdetect ein

Das ist ein Happy End.

RayLuo
quelle