Erkennen der Sprache neuer Dateien in vim (Syntaxhervorhebung für Aktualisierung)

981
Javier Arias

Wenn Sie eine Datei öffnen, führt vim eine Reihe von Prüfungen durch, um die Sprache der Datei zu ermitteln, und wendet die entsprechende Syntaxhervorhebung an. Zuerst überprüfen Sie die Dateierweiterung und dann die Datei selbst. Nichts Neues hier.

Wenn Sie eine neue Datei mit der Dateierweiterung erstellen, z. B. test.sqlhebt vim die SQL-Syntax automatisch auf alles hervor, was Sie eingeben - auch hier nichts Neues.

Wenn Sie jedoch eine neue Datei ohne Dateierweiterung erstellen, die jedoch einen Shebang enthält, #!/usr/bin/env pythonscheint es erforderlich, die Datei zu speichern und erneut zu öffnen, damit vim die Prüfungen anwendet und entscheidet, dass dies ein Python-Skript ist.

Meine Frage ist, ob es einen vim-Befehl gibt, der diese Prüfungen auslöst, wodurch die Hervorhebung in neuen (erweiterungslosen) Dateien aktualisiert werden kann, ohne dass die Datei erneut geöffnet werden muss.

Wenn ich mir die vim-Dokumentation zum Syntax-Laden anschaue, dachte ich, ich würde etwas Nützliches in Bezug auf meine Anfrage finden - leider nicht.

1
Ich vermute: set ft = python wird in diesem Fall für Sie funktionieren. Josh English vor 7 Jahren 1

1 Antwort auf die Frage

3
KNejad

Es gibt 3 verschiedene Möglichkeiten, dies zu tun:

  • :set ft=python. Der Nachteil dieses Ansatzes ist, dass Sie ihn nicht zu einer Tastenkombination hinzufügen können, da er nur mit einem Dateityp funktioniert (in diesem Beispiel Python).
  • :w+ :eDer Nachteil ist, dass Sie die Datei speichern müssen, bevor Sie den Befehl ausführen, da die Datei neu geladen wird.
  • :filetype detect Dies ist jedoch länger zu tippen.

Sie können die zweite oder dritte Option als Verknüpfung mit map <C-r> :filetype detect<CR>Ihrer hinzufügen .vimrc, um die Aktualisierung der Datei mit ctrl+ zu aktivierenr

`: filetype detect` ist genau das, wonach ich gesucht habe - das Tippen macht mir nichts aus - vielen Dank! Javier Arias vor 7 Jahren 0