Вопрос

При написании исполняемых сценариев и декларативных конфигурационных файлов, использующих общий язык (напр.Python), я часто нахожу нежелательным добавлять расширение к имени файла.Многие текстовые редакторы с подсветкой синтаксиса (например.Geany) впоследствии не могут автоматически определить тип файла.

Существует ли какой-либо стандартный метод для указания редакторам типа источника в файле?

Это было полезно?

Решение

Обычно линия shebang используется в качестве запасного варианта.

Например, скрипт на Ruby без расширения будет начинаться с:

#!/usr/bin/env ruby

Другие советы

Vim

В Vim есть концепция, называемая модельная линия.Линия модели - это специально отформатированная строка внутри первой или последних 5 строк текстового файла, которая позволяет вам :setlocal локальные переменные.Например, для C:

 /* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */

или Руби:

 # vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab

Еще немного документации.

Emacs ( Эмакс )

В Emacs есть аналогичная концепция, называемая Переменные файла.

Переменные файла либо указываются в начале файла (в первой строке, либо, если есть промежуточная строка, то во второй) в этой форме:

/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */

или в конце:

# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:

Джедай

Джедай называет это буфер-локальные свойства.Они должны располагаться в пределах первых или последних 10 строк и выглядеть примерно так:

# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:

jEdit также использует строку shebang в качестве запасного варианта для определения режима.

Комодо Править

Существует плагин под названием Komode (каламбур), который добавляет поддержку modeline в Komodo Edit:

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

Он также понимает ограниченное подмножество моделей Vim.

Прочее

Многие другие редакторы также имеют либо свои собственные варианты этого, либо поддерживают один из вышеперечисленных (обычно Vim).

Кодировка на Python / Ruby

И Ruby 1.9, и Python требуют, чтобы кодировка для исходных файлов, отличных от ASCII, была явно указана.К счастью, они делают это способом, совместимым как с моделями Emacs, так и Vim.(В основном, они ищут строку coding за которым следует несловесный символ, за которым следует пробел, за которым следует допустимое имя кодировки.Оба Vim-х fileencoding= и Emacs' coding: удовлетворяйте этим требованиям.)

Генератор модельных линий

Вот простой генератор модельных линий, который генерирует модели для Vim, Emacs и jEdit.

Это работает для многих редакторов, если вы используете нестандартные шаблоны:

#!/usr/bin/env python3
# filetype=python
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top