Форум русскоязычного сообщества 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) . В терминальной версии цвета немного другие. Сравните графическую версию:


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

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