Indicate Programmiersprache in einer Datei ohne Erweiterung
Frage
Wenn ausführbare Skripte zu schreiben, und deklarative Konfigurationsdateien, die eine gemeinsame Sprache verwenden (z. B. Python), finde ich es oft unerwünscht eine Erweiterung an den Dateinamen hinzuzufügen. Viele Syntax-Hervorhebung Texteditor (zB. Geany) sind anschließend nicht in der Lage, automatisch die Datei des Typs zu bestimmen.
Gibt es eine Standardmethode zum Anzeigen an den Herausgebern die Art der Quelle in der Datei?
Lösung
Typischerweise wird die Shebang-Zeile wird als Fallback verwendet wird.
Zum Beispiel, ein Ruby-Script ohne eine Erweiterung würde beginnen mit:
#!/usr/bin/env ruby
Andere Tipps
Vim
Vim hat ein Konzept namens einer Modeline . Eine Modeline ist eine speziell formatierte Linie entweder withinin den ersten oder letzten 5 Zeilen der Textdatei, die Sie lokale Variablen :setlocal
ermöglicht. Zum Beispiel für C:
/* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */
oder Ruby:
# vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab
Einige weitere Dokumentation .
Emacs
Emacs ein ähnliches Konzept, genannt Dateivariablen .
Datei-Variablen werden entweder am Anfang der Datei angegeben (in der ersten Zeile, oder wenn es eine Shebang-Zeile, dann in den zweiten) in dieser Form:
/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */
oder am Ende:
# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:
jEdit
jEdit nennt dies puffer lokalen Eigenschaften . Die haben in den ersten oder letzten 10 Zeilen und sieht wie folgt sitzen:
# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:
jEdit verwendet auch die Shebang-Zeile als Ausweich für Moduserkennung.
Komodo Edit
Es ist ein Plugin namens Komode (pun intended), die fügt mode~~POS=TRUNC Unterstützung Komodo Edit:
# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2
Es versteht auch eine begrenzte Teilmenge von Vim -Modelines.
Andere
Viele andere Editoren auch entweder haben ihre eigenen Varianten dieser oder Unterstützung einer der oben (in der Regel Vim).
Python / Ruby-Codierung
Sowohl Ruby 1.9 und Python erfordern, dass die Codierung für Nicht-ASCII-Quelldateien explizit angegeben werden. Glücklicherweise tun sie dies in einer Weise, die mit beiden Emacs und Vim -Modelines kompatibel ist. (Im Grunde suchen sie nach der Zeichenfolge coding
von einem Nicht-Wortzeichen gefolgt, gefolgt von Leerzeichen durch eine gültige Codierung Namen. Sowohl Vims fileencoding=
und Emacs' coding:
diese Anforderungen erfüllen.)
Modeline Generator
Hier ist ein einfaches Modeline Generator , die -Modelines für Vim, Emacs und jEdit erzeugt.
Dies funktioniert für viele Redakteure, wenn Sie Nicht-Standard-Bauden verwenden:
#!/usr/bin/env python3
# filetype=python