9
votes

Indiquez la langue de programmation dans un fichier sans extension

Lorsque vous écrivez des scripts exécutables et des fichiers de configuration déclarative qui utilisent une langue commune (par exemple, Python), je trouve souvent indésirable d'ajouter une extension au nom de fichier. De nombreux éditeurs de texte en surbrillance de la syntaxe (par exemple, Geany) ne peuvent par la suite pas en mesure de déterminer automatiquement le fichier de type.

existe-t-il une méthode standard pour indiquer aux éditeurs le type de source dans le fichier?


7 commentaires

Pourquoi trouvez-vous indésirable d'ajouter une extension au nom de fichier? Juste curieux...


@Tarydon: Je suis de la même manière qu'aucun de mes scripts shell n'a d'extensions de taper supplémentaire sans raison - dans la plupart des termes, ils sont traités comme une exécutable de sorte que sa frappe supplémentaire Jsut sur la CLI.


Je pensais que c'est ce que l'onglet est terminé. :)


Sur UNIX, l'exécution est transparente et n'exige pas qu'un fichier soit un binaire. À titre d'exemple, si je voulais remplacer un exécutable binaire existant avec un script shell qui l'enveloppe.


@fennec - Windoze n'a pas d'onglet compétent.


@ampHetamachine: Windoze n'est pas compétent.


@ampHetamachine Windows windows avec Cygwin a une achèvement de l'onglet plutôt compétent (Bash) et une onglet très compétent (ZSH). Mais oui, c'est comme tricher :)


3 Réponses :


8
votes

Typiquement, la ligne Shebang est utilisée comme retombée.

Par exemple, un script rubis sans extension commencerait par: P>

#!/usr/bin/env ruby


2 commentaires

On note que c'est généralement comment FileType de fichier (1) et Vim détermine la langue du script.


J'ai choisi cette réponse parce que c'est la relèvement la plus évidente et le plus facile à mettre en œuvre.



20
votes

Vim

Vim a un concept appelé Modeline . Une modélisation est une ligne spécialement formatée soit au sein des premières ou des 5 dernières lignes du fichier texte, qui vous permet de : setLocal code> variables locales. Par exemple, pour C: P> xxx pré>

ou rubis: p> xxx pré>

une autre documentation . P>

emacs h2>

emacs a un concept similaire, appelé variables de fichier . p>

Les variables de fichiers sont spécifiées au début du fichier (dans la première ligne ou s'il existe une ligne de shebang, puis dans la seconde) sous ce formulaire: P>

# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2


0 commentaires

0
votes

Ceci fonctionne pour de nombreux éditeurs si vous utilisez des shebangs non standard:

#!/usr/bin/env python3
# filetype=python


1 commentaires

En fait, ça ne marche pas. Les rédacteurs que j'ai pensés, c'était réellement fait de fantaisie Regex sur le premier argument env.