1

Тема: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Быстро привыкаем к emacs.
Текст ниже написан с точки зрения пользователя Windows на "обыкновенном" PC, который недавно "пересел" на Linux и хочет быстро привыкнуть к emacs. Поэтому объяснения ниже содержат некоторые упрощения, которые могут вызвать праведный гнев "истинных" линуксоводов и поклонников emacs. Что, однако, не сильно беспокоит автора этих строк .
Для GNU Emacs 22.2.1 (i586-suse-linux-gnu, GTK+ Version 2.12.9).
Немного о Emacs по-русски.

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

2

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Некоторые клавиши работают точно так же, как и в "обычных" текстовых редакторах. Например:
- клавиши управления курсором;
- Home, End;
- Ctrl+Home, Ctrl+End;
- Delete, BackSpace;
- Insert (переключение режима вставки/замещения);
- клавиши управления курсором вправо/влево в сочетании с клавишей Ctrl.

Далее - некоторые полезные простейшие команды, без которых вообще трудно начать работать.

Ctrl+Shift+_
Ctrl+x u

Отмена изменения (undo) или возврат изменения (redo).
Чтобы начать возврат отмен (redo), после серии отмен нужно просто ввести любую команду, например, пошевелить курсором.

Ctrl+g
Во многих случаях - отменить незавершённое действие или команду, набранную наполовину.

Ctrl+x Ctrl+f путь
Открыть файл. Работает автодополнение путей по Tab.
Можно "открыть" несуществующий файл, он будет автоматически создан при первом сохранении.

Ctrl+x Ctrl+s
Сохранить.

Alt+x goto-line
Считывает число N и переходит к строке N.

Ctrl+x Ctrl+o
Удалить все последовательные пустые строки рядом с курсором, кроме одной.

Alt+\
Удалить все пробелы и табуляцию вокруг курсора.

Ctrl+x =
Показать код знака под курсором (в десятичном, восьмеричном и шестнадцатеричном формате) и положение курсора.

Alt+- Alt+l
Перевести слово перед курсором в нижний регистр.

Alt+- Alt+u
Перевести слово перед курсором в верхний регистр.

Alt+- Alt+c
Написать слово перед курсором с большой буквы.

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

3

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Работа с областями текста.

Ctrl+Space
Ctrl+Shift+2

Установить метку в том месте, где сейчас курсор (запомнить это место).
Движение курсора после этого приведёт к выделению текста.

Ctrl+g
Сбросить выделение.

Ctrl+x Ctrl+x
Поменять местами курсор и метку.

Ctrl+x h
Выделить всё.

Alt+h
Выделить абзац.

Ctrl+w
Вырезать выделенное (в терминах emacs - "уничтожить").
Эта и другие подобные команды работают и накапливают текст независимо от графических инструментов "cut", "copy" и "paste".

Alt+w
Скопировать выделенное.

Ctrl+y
Вставить.

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

4

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Большинство команд emacs имеют вид "Ctrl+клавиша" и "Alt+клавиша".
Вместо удержания Alt можно нажать и отпустить Esc.
Такие комбинации раскладочнозависимы, т.е., например, Ctrl+x в русской раскладке не сработает.
Многие сочетания (например, тот же Ctrl+x) являются префиксными, т.е. ожидают продолжения ввода.

Комбинация Alt+x начинает ввод команд по их "длинному" имени.
На самом деле все другие команды emacs - это сокращения для быстрого ввода.
Например, "Alt+x goto-line" - переход к указанной строке (все команды состоят из одного или нескольких слов, разделённых дефисами).
При таком вводе работает автодополнение по Tab.

Команда Ctrl+u позволяет ввести числовой аргумент.
Например, "Ctrl+u 20 Ctrl+f" передвинет курсор на 20 символов вправо (Ctrl+f - это переход на одну позицию вправо).
"Ctrl+u 20 Alt+x forward-char" - то же, что и предыдущее.
Например, "Ctrl+u 100 Ctrl+u =" введёт 100 символов "=".

Команда "Ctrl+x z" позволяет повторить предыдущую команду, какой бы она ни была (z можно нажимать многократно).

===========================================

Эхо-область - это строка внизу экрана, где в процессе работы автоматически отображаются различные подсказки и информация.
Информативные сообщения эхо-области сохраняются в буфере "*Messages*" (см. меню Buffers).
Буферы - это окна открытых файлов плюс некоторые служебные окна, которые открыты всегда.
В нужный момент эхо-область автоматически отображает так называемый "минибуфер", предназначенный для ввода команд, и устанавливает туда курсор.
Выход из минибуфера в любой момент (с отменой команды, набранной наполовину) - Ctrl+g.

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

5

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Строка режима - это строка состояния, которая есть внизу окна каждого буфера.
Строка режима содержит информацию о кодировке и состоянии буфера в формате "-ск:из", где "ск" - используемая кодировка, а "из" - состояние буфера.
Непосредственно после кодировки идёт обозначение стиля перевода строк.
Двоеточие означает переводы строк в стиле  Unix, обратный слеш - DOS, прямой слеш - Mac.
Состояние буфера: "**" - изменён, "--" - не изменён, "%*" - изменён буфер только для чтения, "%%" - не изменён буфер только для чтения.

Далее в строке режима идёт имя буфера жирным шрифтом и текущая строка и столбец.
Непосредственно перед строкой и столбцом показывается, какая часть буфера сейчас видна в окне:
- "All" - виден весь буфер;
- "Top" - на экране присутствует начало буфера;
- "Bot" - на экране присутствует конец буфера.
В остальных ситуациях показывается процент текста, находящегося выше видимой части окна.

Далее в строке режима идут названия основного и второстепенных режимов, в которых сейчас находится буфер (через пробелы).

==============================================

Экран emacs может быть разбит на несколько окон как по вертикали, так и по горизонтали (и одновременно и по вертикали, и по горизонтали).
Окна могут содержать разные буферы, или один и тот же буфер может отображаться в нескольких окнах одновременно.
Далее - некоторые полезные оконные команды.

Ctrl+x 0
Закрыть текущее окно.

Ctrl+x 1
Закрыть все окна, кроме текущего.

Ctrl+x 2
Разбить окно по вертикали.

Ctrl+x 3
Разбить окно по горизонтали.

Ctrl+x b
Выбрать буфер для отображения в этом окне. Работает автодополнение по Tab.

==============================================

Поиск и замена.

Ctrl+s
Ctrl+r

Поиск вперёд и назад соответственно.

Alt+x replace-string
Замена.

Alt+x query-replace
Замена. При каждом появлении найденного образца задаётся вопрос о замене, на который нужно ответить "y" или "n".

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

6

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Работа с кодировками.

Ctrl+x Enter c
Задаёт кодировку для непосредственно следующей команды. При выборе кодировок работает автодополнение.

Если сразу после этого открыть файл с помощью "Ctrl+x Ctrl+f", можно открыть файл в указанной кодировке.
Поскольку точно так же можно открыть и несуществующий файл, такая методика хорошо подходит и для создания файла в нужной кодировке.

==========================================

Alt+x python-mode
Пример выбора основного режима для текущего буфера.
Часто правильный выбор основного режима происходит автоматически при открытии файла.

Для запуска python-скрипта в режиме python-mode достаточно нажать:
Ctrl+c Ctrl+c
Вывод будет помещён в буфер *Python*.

Запуск интерактивной оболочки в отдельном буфере *shell*:
Alt+x shell

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

7

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Клавиатурные макросы.

Ctrl+x Shift+(
Начало записи макроса.

Ctrl+x Shift+)
Конец записи макроса.

Ctrl+x e
Воспроизведение только что определённого макроса.

Alt+x name-last-kbd-macro
Задание имени только что определённому макросу.

Alt+x <имя макроса>
Выполнение макроса по его имени.

Alt+x insert-kbd-macro
Вставить в текущий буфер LISP-код ранее записанного поименованного макроса.
Если дополнить этим кодом файл ~/.emacs, то макрос будет определён при каждом старте emacs.

====================================================================================================

Ctrl+q <восьмеричный код>
Ввод символов по коду.
Например, 15 - возврат каретки.

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

8

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Выше было сказано:

Для запуска python-скрипта в режиме python-mode достаточно нажать:
Ctrl+c Ctrl+c
Вывод будет помещён в буфер *Python*.

После этого можно нажать Ctrl+x 4 Ctrl+o и выбрать буфер *Python*.
Префиксный ключ "Ctrl+x 4" служит для команд, которые разделяют текущее окно, если оно единственное, и выбирают буфер в новом окне. Команда "Ctrl+o" в данном случае позволяет выбрать нужный буфер для отображения без последующей передачи туда фокуса. Именно это нам и нужно, чтобы просматривать вывод python-скрипта, помещённый в буфер *Python*, в отдельном окне внизу экрана.

Когда буфер *Python* уже размещён внизу экрана, далее достаточно просто всё время нажимать "Ctrl+c Ctrl+c" для запуска python-скрипта: буфер *Python* будет каждый раз пополняться выводом.

Естественно, приём "Ctrl+x 4 Ctrl+o" может быть полезен не только в режиме Питона.

======================================================

Запуск shell-скриптов.

Для запуска выделенной части скрипта можно нажать Alt+Shift+|, а затем ввести "bash". Вывод будет отображён в минибуфере. Таким же образом можно запустить и весь скрипт, если предварительно выделить весь текст.

Для простого запуска всего shell-скрипта можно нажать Ctrl-c Ctrl-x. При необходимости будет запрошено сохранение скрипта. Внизу экрана будет открыт буфер *interpretation*, в который будет помещён вывод.

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

9

Re: Emacs: работаем в текстовом редакторе GNU Emacs в среде Gnome

Пара полезных режимов emacs:

(setq x-select-enable-clipboard t) ;;; даёт доступ к "буферу обмена" emacs другим приложениям
(cua-mode) ;;; включает режим выделения с помощью Ctrl+Shift и т.п.

Также можно попробовать "(pc-selection-mode)".
Приведённый лисп-код можно вставить в конец файла ~/.emacs, чтобы он исполнялся при запуске emacs.

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