1

Я редактирую некоторые сценарии в Linux без языковых расширений, и кажется, что редакторы, а именно vi, nano и gedit, не применяют подсветку синтаксиса, потому что имена файлов не используют языковые расширения.

Есть ли какие-то параметры для передачи или какие-то настройки, которые могут позволить им распознавать язык?

Обновить:

После некоторого поиска в Google я понимаю, что у bash есть такая возможность, по крайней мере, сделать некоторый анализ или проверить, что шебанг в верхней части определяет язык. По умолчанию Ubuntu не устанавливает полный пакет vim, поэтому после установки файлы оболочки распознаются. Я не знаю о nano или gedit, но подойдет vi и его графический аналог.

2 ответа2

2

Обычно на этот вопрос нельзя ответить так, что он применим ко всем текстовым редакторам.

Vim распознает файлы по суффиксу. Это обусловлено используемой по умолчанию сценарием запуска, и вы можете взломать пользовательское поведение в вашем .vimrc .

Например, я написал для себя программу на C под названием autotab которая просматривает содержимое файла и определяет параметры shiftwidth tabstop и expandtab для Vim в зависимости от того, как этот файл выглядит отформатированным.

Когда я загружаю или перезагружаю файл в Vim, эта программа анализирует содержимое, а затем выводит вышеупомянутые параметры Vim, которые интерполируются в set команду и выполняются. Например, если обнаружено, что файл использует отступ с двумя пробелами, но, очевидно, со смесью пробелов и жестких вкладок с восемью пробелами, программа выведет tabstop=8 shiftwidth=2 noexpandtab .

Точно такой же подход может быть использован для выбора подсветки синтаксиса. Напишите скрипт, который просматривает некоторые строки файла, угадывает тип и генерирует команду :set syntax ...

file утилита может быть использована в качестве основы скрипта. "Волшебная" база данных программы содержит эвристику для обнаружения некоторых языков программирования. Попробуйте запустить file на разных ваших файлах и посмотрите результат. Вы можете быть удивлены тем, насколько хорошо он идентифицирует контент. Таким образом, стратегия может быть следующей: запустить file в файл, захватить вывод, проанализировать его в различных случаях и вывести правильные заклинания Vim. Затем подключите это к .vimrc .

GIT- autotab: http://www.kylheku.com/cgit/c-snippets/tree/autotab.c

0

Прежде всего, тип файла может быть распознан в системах Linux/Unix по "Волшебному номеру", и этот идентификатор типа файла может быть проверен с помощью редактора с шестнадцатеричными функциями редактирования или непосредственно с помощью Hex Editor. К сожалению, простые текстовые файлы не могут быть распознаны таким образом.

Больше информации по этой теме: Определение магического числа

Возможным решением для простого текстового файла является использование редактора, способного распознать, какой язык программирования используется.

Может быть, Geany или SciTe . Они поддерживают разные типы файлов, но я не могу сказать, могут ли они распознать его, если файл был создан другим редактором, например ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .