Indican Lenguaje de programación en un archivo sin extensión
Pregunta
Al escribir secuencias de comandos ejecutables y archivos de configuración declarativas que utilizan un lenguaje común (por ejemplo. Python), a menudo resulta deseable añadir una extensión al nombre del archivo. Muchos editor de texto resaltado de sintaxis (por ejemplo. Geany) son posteriormente no puede determinar automáticamente el tipo de archivo.
¿Hay algún método estándar para indicar a los editores el tipo de fuente en el archivo?
Solución
Normalmente la línea shebang se utiliza como una caída de la espalda.
Por ejemplo, un script de Ruby sin una extensión comenzaría con:
#!/usr/bin/env ruby
Otros consejos
Vim
Vim tiene un concepto llamado modeline . Un modeline es una línea con un formato especial, ya sea withinin los primeros o últimos 5 líneas del archivo de texto, que le permite :setlocal
variables locales. Por ejemplo, para C:
/* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */
o Ruby:
# vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab
Emacs
Emacs tiene un concepto similar, llamado File Variables .
Variables de archivos se especifican ya sea al principio del fichero (en la primera línea, o si hay una línea shebang, a continuación, en el segundo) en esta forma:
/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */
o al final:
# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:
jEdit
jEdit llama a los anuncios del local al búfer . El tiene que sentarse dentro de los primeros o últimos 10 líneas y tener este aspecto:
# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:
jEdit también utiliza la línea shebang como un mensaje para la detección del modo.
Komodo Edit
Hay un plugin llamado Komode (juego de palabras) que añade soporte modeline a Komodo Edit:
# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2
También entiende un subconjunto limitado de modelines Vim.
Otros
Una gran cantidad de otros editores también tienen cualquiera de sus propias variantes de este, o el apoyo a uno de los anteriores (por lo general Vim).
Python / Ruby codificación
Tanto Ruby 1.9 y Python requieren que la codificación para archivos de origen no ASCII se especifica explícitamente. Afortunadamente, lo hacen de una manera que sea compatible con las dos líneas de modo de Emacs y Vim. (Básicamente, buscan la coding
cadena seguido por un carácter no-palabra seguida por un espacio en blanco seguido de un nombre de codificación válida. fileencoding=
de dos Vim y Emacs coding:
satisfacen estos requisitos.)
Modeline Generador
Aquí es un simple modeline generador , que genera modelines para Vim, Emacs y jEdit.
Esto funciona para muchos editores, si está usando shebangs no estándar:
#!/usr/bin/env python3
# filetype=python