Как запустить emacs в терминале
Перейти к содержимому

Как запустить emacs в терминале

  • автор:

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.036 секунд. Запросов: 23.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Емакс в терминале

Долгое время я пользовался Емаксом с графическим интерфейсом. Для Мака такой Емакс качается с сайта Emacs For Mac OS X и ставится как обычное приложение в папке Applications .

Два месяца назад перешел на версию для терминала. Ниже короткие заметки о том, как это сделать и что изменилось.

Установка из пакетов. Для Мака ставится из brew: brew install emacs . На момент написания статьи скачивается версия 25.1. Важно: бинарник находится по пути /usr/local/Cellar/emacs/25.1/bin/emacs ! Если вы введете в терминале просто emacs , то запустится /usr/bin/emacs , у меня это какое-то старье.

Внешний вид. Я использую стандартную цветовую схему light-blue из коробки. Включается командой (load-theme ‘light-blue t) . В терминальной версии цвета немного другие. Сравните графическую версию:

gui

terminal

Размер текста. Для комфортной работы я нашел полезным ставить шрифт покрупнее. Глаза нам даны одни на всю жизнь, так что лучше их поберечь. В графической версии высота шрифта меняется командой (set-face-attribute ‘default nil :height 140) (140 – моя метрика, подобранная эмпирически). В терминале, конечно, это не прокатит. Поэтому я просто жму три раза Cmd + = . Получается как на рисунке ниже (картинка специально обрезана, чтобы вошла в колонку без масштабирования):

font

Курсор. Больше недели не мог настроить цвет курсора в терминале. В графической версии был красный, а в терминале серый. Сливается в голубым фоном, глазам трудно найти. Команды вроде (set-cursor-color «#ffffff») не помогают. Оказывается, в маковском терминале Iterm2 цвет курсора и текста под ним регулируется силами самого терминала. Пришлось поправить настройки:

iterm2

Вместе с цветом курсора (Cursor) можно включить легкое цветовое выделение текущей строки (Cursor Guide).

Общие впечатления. В целом мне показалось, что терминальная версия работает быстрее графической. Изредка бывают артефакты при сложной прорисовке (несколько рабиений окна, например), а так все ок. Мини-буфер, попапы работают как надо.

Напомню, мой конфиг Емакса с комментариями лежит в Гитхабе.

Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter

Баги с прорисовкой — это баг айтерма. Долго мучался сам в виме с этим.

unixforum.org

В иксах emacs = emacs, в консоли $emacs = $emacs -nw (Раздельный запуск емакса для иксов и для эмулятора с консолью)

Модератор: /dev/random

11 сообщений • Страница 1 из 1
vipermagi Сообщения: 83 ОС: AgiliaLinux

В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 11.10.2011 22:08

Хочется, чтобы в консольном эмуляторе и чистом терминале по комманде $emacs запускался консольный емакс. Как воплотить?

Спасибо сказали:
sash-kan Администратор Сообщения: 13939 Статус: oel ngati kameie ОС: GNU Контактная информация:

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение sash-kan » 11.10.2011 23:19

Писать безграмотно — значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог

Спасибо сказали:
vipermagi Сообщения: 83 ОС: AgiliaLinux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 12.10.2011 07:13

Эх зря я дурак сильно урезал изначальный пост.

Хочется чтобы через .emacs было подобие как в соседней моей теме про цветовые схемы:

;; Раздельные темы для консоли и иксов (if window-system (color-theme-solarized-light) ;; С этой темой emacs будет в X11 (color-theme-comidia)) ;; С этой темой будет, если запущен консольный emacs -nw

Спасибо сказали:
deadhead Сообщения: 1913 Статус: zzz..z

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение deadhead » 12.10.2011 09:55

$ grep emacs .bashrc export EDITOR="emacsclient -t" export VISUAL="emacsclient -n -c"

Спасибо сказали:
vipermagi Сообщения: 83 ОС: AgiliaLinux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 12.10.2011 12:33

Нет. Короче нужна строчка elisp’а, прописываемая в ~/.emacs , которая заставит емакс запускаться в режиме -nw, Ну а я её уже всуну в тот шаблон, определяющий тип запуска.

Спасибо сказали:

watashiwa_daredeska Бывший модератор Сообщения: 4038 Статус: Искусственный интеллект (pre-alpha) ОС: Debian GNU/Linux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Насколько я понимаю, .emacs выполняется, когда emacs уже решил, использует он window-system или текстовый терминал и уже создал фрейм.
Поэтому из .emacs уже невозможно повлиять на этот выбор.
Кроме того, если Вы запускаете emacs из shell в эмуляторе терминала командой emacs, при том, что переменная DISPLAY установлена, из .emacs может быть проблематично определить, что emacs запущен из терминала, а не из меню DE. Можно написать простенький wrapper вокруг emacs, который будет проверять, что stdin/stdout/stderr направлены на tty и запускать emacs -nw в этом случае.

Спасибо сказали:
vipermagi Сообщения: 83 ОС: AgiliaLinux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 12.10.2011 22:21

Ну если не возможно, то ни чего не поделаешь

Ещё может кому будет полезно, в некоторых местах советуют в ~/.bashrc писать alias emacs=»emacs -nw». Это не верно, кавычки нельзя, только апострофы у меня заработали.

Спасибо сказали:
sash-kan Администратор Сообщения: 13939 Статус: oel ngati kameie ОС: GNU Контактная информация:

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение sash-kan » 12.10.2011 22:53

12.10.2011 22:21
Это не верно, кавычки нельзя

это не верно, кавычки можно·

12.10.2011 22:21
только апострофы у меня заработали

/telepathy mode on
.bashrc сам собой не прочитается·
надо было, например, открыть другое окно x-эмулятора терминала·

Писать безграмотно — значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог

Спасибо сказали:
vipermagi Сообщения: 83 ОС: AgiliaLinux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 13.10.2011 06:35

Ну и я естественно открывал другое окно эмулятора. Была даже мысль полностью выйти со всех сессий этим пользователем. Но заменил апострофами, и сработало.

Спасибо сказали:
sash-kan Администратор Сообщения: 13939 Статус: oel ngati kameie ОС: GNU Контактная информация:

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение sash-kan » 13.10.2011 19:43

13.10.2011 06:35

Ну и я естественно открывал другое окно эмулятора. Была даже мысль полностью выйти со всех сессий этим пользователем. Но заменил апострофами, и сработало.

ну, проведите тест
1. поставьте двойные кавычки
2. запустите новый эмулятор
3. выполните
$ alias emacs
4. вы должны увидеть
alias emacs=’emacs -nw’
да-да, вы увидите одинарные кавычки, именно так bash хранит alias-ы в своих внутренностях·
но к способу ввода самой команды alias это отношения не имеет·
5. проверьте работоспособность:
$ emacs

второй тест
1. удалите в существующей сессии существующий alias:
$ unalias emacs
2. создайте alias для текущей сессии:
$ alias emacs=»emacs -nw»
3. проверьте работоспособность:
$ emacs

Писать безграмотно — значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог

Спасибо сказали:
vipermagi Сообщения: 83 ОС: AgiliaLinux

Re: В иксах emacs = emacs, в консоли $emacs = $emacs -nw

Сообщение vipermagi » 14.10.2011 21:27

Я только что сделал проще(для чистоты эксперимента). Удалил алиас из ~/.bashrc, вышел с сессии эмулятора консоли, создал новую, запустил емакс, и запустился иксовый вариант, закрыл его. Пошёл в ~/.bashrc и возобновил алиас но уже с кавычками, закрыл сессию эмулятора терминала, открыл новую, запустил емакс, и он, вот ведь сволочь же, открыл теперь консольный вариант. Наверно я неспамши тогда чёй-то таки да перепутал.

Emacs для начинающих

Этот документ предназначен для тех пользователей Linux, которые хотят узнать о Emacs и научиться работать с ним.

Этот документ не является специфичным только для ALTLinux. Его можно использовать для работы с Emacs из других дистрибутивов Linux, в других вариантах операционной системы Unix, а также с Emacs для MS Windows.

Описание настройки русского языка немного устарело, и лучше его не использовать в современных версиях Emacs!

Что такое Emacs?

Emacs — один из наиболее мощных и широко распространённых редакторов, используемых в мире Unix. По популярности он соперничает с редактором vi и его клонами. В зависимости от ситуации, Emacs может быть:

  • текстовым редактором;
  • программой для чтения почты и новостей Usenet;
  • интегрированной средой разработки (IDE);
  • операционной системой;
  • всем, чем угодно.

Всё это разнообразие достигается благодаря архитектуре Emacs, которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части Emacs, включая полнофункциональный интерпретатор языка Lisp. Таким образом, Emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи Emacs работают в наши дни, написана на языке Lisp.

Первая версия редактора Emacs была написана в 70-х годах 20-го столетия Richard Stallman (Ричардом Столманом) как набор макросов для редактора TECO. В дальнейшем, уже будучи основателем Фонда Свободного программного обеспечения Free Software Foundation и проекта GNU, Столман разработал GNU Emacs в развитие оригинального Emacs и до сих пор сопровождает эту программу. Вы можете подробнее ознакомиться с историей редактора, прочитав статью, располагающуюся по адресу http://www.wikipedia.org/wiki/Emacs.

Emacs является одним из старейших редакторов. Он использовался тысячами программистов на протяжении последних 20 с лишним лет, для него создано много дополнительных пакетов расширений. Эти дополнения позволяют делать с помощью Emacs такие вещи, которые Столман, вероятно, даже не считал возможными в начале своей работы над редактором. Более подробно я расскажу о них в следующих разделах.

Разновидности Emacs

Существует две основных разновидности Emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии Emacs, написанной Столлманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией Emacs.

Кроме двух основных версий существует и множество других редакторов, считающихся вариантами Emacs. Полный их список можно найти на странице Emacs Implementations and Literature.

В данном документе я буду рассказывать, прежде всего, о GNU Emacs, входящем в поставку дистрибутивов ALTLinux. Однако большая часть сказанного применима и для XEmacs, а также для версий Emacs в других дистрибутивах Linux.

Используемая терминология

В этом разделе описываются термины Emacs, с которыми вы встретитесь при использовании редактора.

Буфера и файлы Буфер — это основная единица редактирования; один буфер соответствует одному куску редактируемого текста. Вы можете иметь несколько буферов, но в каждый конкретный момент вы редактируете только один выбранный буфер. При этом, разумеется, если вы используете несколько окон, то видимыми могут быть несколько буферов. Чаще всего буферы обращаются к какому-либо файлу, считывая данные из файла в буфер, или записывая данные из буфера в файл.

Вы встретите термин «буфер» в документации по Emacs, сообщениях программы, описаниях режимов и пакетов. Просто имейте в виду, что при работе с файлами буфер означает «копию файла, которая находится в памяти в данный момент». Однако необходимо отметить, что буфер не всегда соответствует какому-либо файлу на диске. Очень часто Emacs создаёт буферы в результате выполнения ваших команд. Такие буферы могут содержать вывод команды, список для выбора вариантов и другую информацию.

Точка, область и метка Точка вставки (point) — это место в буфере, в котором происходит вставка или удаление данных. Считается, что точка вставки находится между двумя знаками, а не на каком-то одном из них. Например, если курсор находится на букве «h» в слове «the», то точка вставки находится между «t» и «h». Курсор терминала показывает положение точки вставки.

Как и другие современные редакторы, Emacs позволяет выполнять разные действия над фрагментами текущего буфера — изменение отступа, проверку орфографии, переформатирование, вырезание, копирование, вставку и т.д. Вы можете подсветить (или «пометить») блок текста, используя клавиатуру или мышь, а затем выполнить операцию только над выделенным блоком. В Emacs такой блок текста называется область (region). Область — это текст между точкой и меткой.

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

Окна и фреймы Окно в Emacs — это область экрана, в которой отображается буфер. Когда Emacs запускается, у вас на экране отображается одно окно. При обращении к некоторым функциям Emacs (таким, как оперативная справка и интерактивная документация) часто (временно) открываются дополнительные окна на экране Emacs.

Окна Emacs не имеют ничего общего с окнами графической среды X Window. Одно окно X Window может быть разбито на несколько окон в смысле Emacs, в каждом из которых отображается отдельный буфер. Однако вы можете открывать для отображения буферов Emacs и дополнительные окна X, например, при сравнении двух файлов. Эти новые окна X в жаргоне Emacs называются фреймами.

Фрейм (frame) — это отдельное окно используемой оконной системы, в котором отображаются одно или несколько окон Emacs. При этом несколько фреймов, открытых одновременно, являются частью одного сеанса Emacs.

Основы работы с Emacs

Запуск Emacs

Чтобы запустить Emacs, просто наберите в командной строке команду emacs (или xemacs , если вы хотите посмотреть на этот вариант Emacs). После запуска появится окно (фрейм в терминах Emacs, смотрите раздел Используемая терминология) изображённое на рисунке:

Как видно на рисунке, этот фрейм состоит из следующих частей:

  • полосы меню, предоставляющей быстрый доступ к основным командам Emacs, а также к справочной информации;
  • основного окна, в котором производится редактирование текста. Это окно можно разделить на несколько окон. Помимо редактирования текста, основное окно используется для отображения данных теми пакетами, которые не связаны с редактированием, например пакетом gnus для чтения новостей usenet;
  • строки состояния, которая используется для отображения такой информации, как состояние буфера (изменён/не изменён), название буфера, текущее время, используемые режимы, а также позиция точки в буфере;
  • мини-буфера, который используется для ввода различных команд и их параметров, а также для отображения информации о производимых действиях.

После запуска Emacs без каких-либо параметров в основном окне отображается буфер *scratch* , который используется для оценки выражений Emacs Lisp, а также для заметок, которые вы не хотите сохранять. Этот буфер не сохраняется автоматически, так что будьте осторожны!

Выход из Emacs

Чтобы выйти из Emacs, просто наберите сочетание клавиш C-x C-c ( C-x означает, что надо нажать клавишу x , удерживая при этом клавишу Control , это справедливо и для C-c ).

Кроме того, вы можете для выхода выбрать пункт Exit Emacs из меню File .

Получение помощи

В поставку GNU Emacs включена обширная справка (для описания функций и клавиш вызова справки смотрите таблицу ниже. Кроме полного руководства по GNU Emacs, в неё входит учебник для начинающих пользователей. В состав дистрибутивов ALTLinux также включён русский перевод учебника. Для его вызова нажмите сочетание клавиш C-h t , и далее следуйте инструкциям, приведённым в появившемся тексте.

Emacs поставляется со встроенной программой чтения справки в формате Texinfo. В данном формате поставляется руководство по Emacs, руководства по пакетам расширения, а также документация по большинству программ проекта GNU. Для запуска системы Info нажмите сочетание клавиш C-h i . При работе со справочной системой Info, вы в любой момент можете нажать клавишу h и получить справку о том, как пользоваться справочной системой.

Основы работы с клавиатурой

Командные клавиши

Для выполнения команд в Emacs широко используются клавиатурные сокращения. Особенно часто используются сочетания различных клавиш с клавишами Control (обозначается как C- ), Meta (обозначается как M- , на клавиатурах персональных компьютеров её роль часто играет клавиша Alt ), и Shift (обозначается как S- ). Эти клавиши также называются префиксными. Например, запись M-x означает, что надо нажать на клавишу x , при этом удерживая клавишу Meta (или Alt на клавиатурах персональных компьютеров).

Кроме отдельных префиксных клавиш, в Emacs используются сочетания клавиш, которые рассматриваются как префиксные. В отличии от префиксных клавиш Control , Shift и других, такие сочетания клавиш не надо удерживать когда вы нажимаете следующую клавишу. Например, сочетание C-x C-f (команда открытия файла), означает, что надо нажать на клавишу x , удерживая клавишу Control , отпустить обе клавиши, а потом нажать на клавишу f , удерживая клавишу Control .

Префиксные сочетания клавиш различаются по назначению. Например, сочетание клавиш C-x является префиксом для основных команд редактора — открытия и сохранения файлов, а также многих других важных действий. Функции, привязанные к этим клавишам, не зависят от используемого режима. Кроме этого, сочетание клавиш C-h используется для доступа к разным разделам справочной системы.

В отличие от сочетания клавиш C-x , комбинация C-c играет роль префикса для вызова функций, зависящих от используемого режима. Например, сочетание клавиш C-c C-c при редактировании исходного текста на языке С приведёт к комментированию выделенного текста с помощью функции comment-region , а при редактировании файла в формате SGML приведёт к вызову функции sgml-show-context , которая отображает текущее положение точки в иерархии документа.

Перемещение в буфере

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

Сочетание клавиш Команда Действие
C-p previous-line Вверх на одну строку
C-n next-line Вниз на строку
C-f forward-char Вперёд на один символ
C-b backward-char Назад на один символ
C-a beggining-of-line Начало строки
C-e end-of-line Конец строки
C-v scroll-up Вниз на одну страницу
M-v previous-page Вверх на одну страницу
M-f next-word Вперёд на одно слово
M-b previous-word Назад на одно слово
M-

beginning-of-buffer В начало буфера
M-> end-of-buffer В конец буфера
C-g keyboard-quit Закончить (прервать) текущую операцию
goto-line Переход на заданную строку

Как правило, при работе в системе X Window, кроме перечисленных клавиш, также работают и привычные для пользователей персональных компьютеров клавиши управления курсором (например, стрелки).

Основные команды

В таблицах приведенных ниже перечислены наиболее часто используемые команды, их действие, а также сочетания клавиш, которые используются для их быстрого вызова. Полная форма команды, приведённая в столбце «Команда», используется для запуска с помощью префиксного сочетания M-x , например M-x save-buffer .

    Команды работы с текстом:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *