Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. Emacs

Основные режимы

Emacs предоставляет много различных основных режимов, каждый изкоторых настраивает Emacs на редактирование текста определенного вида.Основные режимы являются взаимоисключающими, и каждый буфер находится вкаждый момент времени в одном основном режиме. Строка режима обычносодержит имя текущего основного режима в круглых скобках (see section Строка режима).

@hyphenation{Fun-da-men-tal} Наименее специализированный основной режим называетсяFundamental. Этот режим не имеет специальных режимныхпереопределений или устанавливаемых переменных, так что каждая командаEmacs ведет себя самым обычным образом и каждый параметр находится всвоем состоянии по умолчанию. Для редактирования некоторого текстаопределенного типа, такого как код на Лиспе или английский текст, выдолжны переключить Emacs в соответствующий основной режим, такой какрежим Lisp или режим Text.

Выбор основного режима изменяет значение нескольких ключей таким образом, чтобы они стали более приспособленным к редактируемому языку.Одни из наиболее часто изменяемых ключей -- это TAB, DEL иC-j. Префиксный ключ C-c обычно содержит команды,специфичные для режима. Помимо этого, команды для управлениякомментариями используют режим для определения того, каким образомкомментарии должны ограничиваться. Многие основные режимыпереопределяют синтаксические свойства знаков, появляющихся в буфере.See section Синтаксическая таблица.

Основные режимы делятся на три основных группы. Режим Lisp (которыйимеет несколько вариантов), режим C и режим Fortran -- дляспецифических языков программирования. Режим Text, режим Nroff, режимTeX и режим Outline -- для редактирования текста на естественномязыке. Остальные основные режимы не предназначены для использования сфайлами пользователей; они используются в буферах, создаваемых Emacs дляспециальных целей, это такие режимы, как режим Dired для буферов,созданных Dired (see section Dired, редактор каталогов), режим Mail для буферов, созданных припомощи C-x m (see section Посылка почты), и режим Shell для буферов,используемых для связи с подчиненным процессом оболочки(see section Интерактивная подчиненная оболочка).

Большинство основных режимов для языков программирования указывают,что только пустые строки разделяют абзацы. Таким образом, командыработы с абзацами остаются удобными. (See section Абзацы.) Они так жезаставляют режим Auto Fill использовать определение TAB длясоздания отступа во вновь создаваемых им строках. Это далется,поскольку большинство строк в программе обычно начинаются с отступа.(See section Отступы.)

Как выбираются основные режимы

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

Явный выбор нового основного режима делается при помощи командыM-x. Чтобы получить имя команды для выбора режима, добавьте кимени основного режима окончание -mode. Таким образом, вы можетевойти в режим Lisp, выполнив команду M-x lisp-mode.

Когда вы обращаетесь к файлу, Emacs обычно выбирает правильныйосновной режим, основываясь на имени этого файла. Например, файлы, чьиимена оканчиваются на `.с', редактируются в режиме С. Соответствиемежду именем файла и основным режимом контролируется переменнойauto-mode-alist. Ее значение -- это список, каждый элементкоторого имеет такой вид:

(регулярное-выражение . функция-режима)

или такой:

(регулярное-выражениефункция-режимафлаг)

Например, один элемент, обычно находящийся в этом списке, имеет вид("\\.c\\'" . c-mode), и это является сигналом для выборарежима С для файлов, чьи имена кончаются на `.с'. (Отметим, что`\\' необходимо по синтаксису Лиспа для того, чтобы включить в этустроку знак `\', а он нужен для подавления специального значения`.' в регулярном выражении.) Если этот элемент имеет форму(регулярное-выражениефункция-режимафлаг), ифлаг не nil, то после вызова функции-режима суффикс,совпавший с регулярным-выражением, отбрасывается, и в спискепроизводится повторный поиск другого совпадения.

Вы можете указать, какой основной режим должен использоваться дляредактирования определенного файла, с помощью текста специального вида впервой непустой строке файла. В этой строке должно появиться имя режима,до и после него должны стоять строки `-*-'. В этой строке такжеможет появиться другой текст. Например,

;-*-Lisp-*-

приказывает Emacs использовать режим Lisp. Такое явное определениеотменяет значение по умолчанию, основанное на имени файла. Отметим, чтоточка с запятой используется для того, чтобы Лисп трактовал эту строкукак комментарий.

Другой формат определения режима:

-*- mode: имя-режима;-*-

что позволяет вам также задать локальные переменные, как здесь:

-*- mode: имя-режима; пер: значение; ... -*-

See section Локальные переменные в файлах, для получения большей информации об этом.

Если содержимое файла начинается с `#!', он может служить вкачестве выполняемой команды оболочки, которая работает путем запускаинтерпретатора, названного в первой строке этого файла. Остальная частьфайла подается на вход интерпретатора.

Когда вы обращаетесь к подобному файлу в Emacs, если имя файла незадает основной режим, Emacs использует для выбора режима имяинтерпретатора в первой строке. Если первая строка -- это имяподдерживаемой программы-интерпретатора, такой как `perl' или`tcl', Emacs использует режим, подходящий для программ для этогоинтерпретатора. Переменная interpreter-mode-alist задаетсоответствие между именами программ-интерпретаторов и основнымирежимами.

Когда первая строка начинается с `#!', вы не можете (на многихсистемах) использовать в ней `-*-', поскольку при запускеинтерпретатора это ввело бы в заблуждение систему. Поэтому в такихфайлах Emacs ищет `-*-' на второй строке, а не только на первой. Когда вы обращаетесь к файлу, который не указывает, какой основнойрежим использовать, или когда вы создаете новый буфер при помощиC-x b, то используемым основным режимом является тот, чтоопределен переменной default-major-mode. Обычно ее значение ---это символ fundamental-mode, который задает режим Fudamental.Если default-major-mode равна nil, то основной режимберется из ранее выбранного буфера.

Если вы изменили основной режим буфера, вы можете вернуться к томуосновному режиму, который Emacs выбрал бы автоматически: используйте дляэтого команду M-x normal-mode. Это та же функция, которуювызывает find-file для выбора основного режима. Она такжеобрабатывает список локальных переменных файла, если он есть.

Команды C-x C-w и set-visited-file-name переключают вновый основной режим, если новое имя файла подразумевает выбор режима(see section Сохранение файлов). Однако, это не происходит, если содержимое буферазадает основной режим; и некоторые "специальные" основные режимы недопускают изменения режима. Вы можете выключить эту возможностьпереключения режимов, установив change-major-mode-with-file-nameв значение nil.

Перекрёстные ссылки книги для Основные режимы

  • Поддержка разных языков
  • Вверх
  • Отступы

Book navigation

  • Содержание
  • Предисловие
  • Распространение
  • GNU GENERAL PUBLIC LICENSE
  • УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU
  • Введение
  • Организация экрана
  • Знаки, ключи и команды
  • Вход и выход из Emacs
  • Основные команды редактирования
  • Минибуфер
  • Запуск команд по имени
  • Справка
  • Пометка и область
  • Уничтожение и перемещение текста
  • Регистры
  • Управление изображением
  • Поиск и замена
  • Команды для исправления опечаток
  • Работа с файлами
  • Использование множества буферов
  • Множество окон
  • Фреймы и X Windows
  • Поддержка разных языков
  • Основные режимы
  • Отступы
  • Команды для естественных языков
  • Редактирование программ
  • Сборка и тестирование программ
  • Сокращения
  • Редактирование рисунков
  • Посылка почты
  • Чтение почты с помощью Rmail
  • Dired, редактор каталогов
  • Календарь и дневник
  • Разнообразные команды
  • Настройка
  • Решение частых проблем
  • Аргументы командной строки
  • Антиновости для Emacs 19
  • Emacs и MS-DOS
  • Манифест GNU
  • Глоссарий
  • Указатель ключей (клавиш)
  • Указатель команд и функций
  • Указатель переменных
  • Предметный указатель

Последние материалы

  • Утилита sensors
    20 hours ago
  • Сканер Rkhunter
    1 week 1 day ago
  • Программа resize2fs
    1 week 6 days ago
  • Аудиопроигрыватель QMMP
    2 weeks 5 days ago
  • Программа Timeshift
    3 weeks 4 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru