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?

¿Fue útil?

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

Algunos más documentación .

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top