Основи Slackware/Emacs

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

Перейти до: навігація, пошук

Зміст

Emacs

Якщо vi та його клони, це найбільш стандартні редактори на Юнікс-подібних операційних системах, то Emacs є конкурентом до першого по популярності і досконалості. На відміну від vi, Emacs не використовує командний і ввідний стани, натомість Control та Alt комбінації клавіш для введення команд. Останнє дуже схоже на та як ви користуєтесь Control і Alt у програмах по обробці текстів і багатьох інших програмах, хоча варто зауважити що комбінації не завжди співпадають у різних програмах, так якщо багато сучасних аплікацій вживають Ctrl-C, Ctrl-X й Ctrl-V для, відповідно, копіювання, вирізки і вклеювання, Emacs послуговується відмінним ключами і механізмом для цих операцій.

Також, якщо vi є хоч і дуже хорошим але тільки редактором, то Emacs, це програма із практично необмеженими властивостями і набором функціональності. Emacs в основному написаний на Lisp, досить потужній мові програмування із цікавою властивістю що полягає у тому що будь-яка програма, написана на ній, автоматично перетворюється у Lisp компілятор сама по собі. Це означає що користувач може розширювати Emacs, більше того, писати цілком нові програми зв'язані з Emacs. Існує велика кількість розширень Emacs, значна частина з них розповсюджується з вихідним кодом програми. Більшість цих розширень пов'язані з редагуванням, що є основним завданням Emacs, але не зупиняються на цьому. Так, наприклад, існує декілька модулів для табличного обчислювання (spreadsheet) для Emacs, декілька баз даних, ігр, поштових і новинних клієнтів (Gnus будучи одним з найвідоміших), і.т.д.

З двох основних версій програми, Slackware включає GNU Emacs. Іншою є XEmacs (це не означає що програма працює лише у X віконному середовищі). Обидві версії можна використовувати як у консолі, так і у X. XEmacs проект було започатковано з метою очистити код Emacs. На даний момент обидві версії редактора активно розробляються, більше того обидві команди розробників співпрацюють одне з одним. Для послідуючих розділів не є суттєвим чи ви використовуєте Emacs чи XEmacs, так як різниця між ними не настільки велика для звичайного користувача.

Запуск Emacs

Emacs можна запустити з командної лінії просто виконавши emacs. Якщо ви знаходитесь у X віконному середовищі, Emacs, як правило, відкриється у власному вікні, із меню смугою наверху, де ви можете знайти основні функції редактора. Під час запуску Emacs спочатку привітає вас власним логотипом і інформацією про програму, після чого надасть вам порожній, у Emacs термінології *scratch*, буфер (дивіться Розділ 9.2.3).

+-----------------------------------------------------------------------------+
|File  Edit  Options  Buffers  Tools  Help                                    |
+-----------------------------------------------------------------------------+
|Welcome to GNU Emacs, one component of the GNU/Linux operating system.       |
|                                                                             |
|Get help          C-h  (Hold down CTRL and press h)                          | 
|Emacs manual      C-h r                                                      | 
|Emacs tutorial    C-h t          Undo changes     C-x u                      |
|Buy manuals       C-h C-m        Exit Emacs       C-x C-c                    |
|Browse manuals    C-h i                                                      |
|Activate menubar  F10  or  ESC `  or  M-`                                    |
|(`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.         |
|If you have no Meta key, you may instead type ESC followed by the character.)|
|                                                                             |
|GNU Emacs 23.0.0.2 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)         |
| of 2005-03-25 on slackware                                                  |
|Copyright (C) 2004 Free Software Foundation, Inc.                            |
|                                                                             |
|GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full details.  |
|Emacs is Free Software--Free as in Freedom--so you can redistribute copies   |
|of Emacs and modify it; type C-h C-c to see the conditions.                  |
|Type C-h C-d for information on getting the latest version.                  |
|                                                                             |
|If an Emacs session crashed recently, type M-x recover-session RET           |
|to recover the files you were editing.                                       |
+-----------------------------------------------------------------------------+
|-------GNU Emacs-------------------------------------------------------------| 
+-----------------------------------------------------------------------------+
|For information about the GNU Project and its goals, type C-h C-p.           |
+-----------------------------------------------------------------------------+

Ви також можете завантажити файл якщо вкажете шлях до нього:

$ emacs /etc/resolv.conf

Командні ключі.

Як ми вже згадували, Emacs використовує Control і Alt комбінації для команд. Загальноприйнятою умовністю є позначати їх як C- (control) і M- (meta) відповідно. Тож C-x означатиме Control+x і M-x буде Alt+x. (Літера M використовується замість A тому що раніше не існувало Alt клавіші, замість неї була Meta. Meta клавіша вже давно зникла з сучасних клавіатур, тож її місце заняла Alt. Emacs традиційно все ще вживає позначення Meta).

Багато Emacs команд складаються з послівностей ключів і клавішних комбінацій. Наприклад, C-x C-c (Control-x за яким слідує Control-c) покине Emacs, C-x C-s сбереже поточний файл, тощо. Майте на увазі що C-x C-b не є тим самим що й C-x b. Перше означає Control-x за яким іде Control-b, тоді як останнє - Control-x із послідуючим простим b.

Буфери.

У Emacs поняття буферів є надзвичайно важливим. Кожний відкритий файл завантажується у власний буфер. Більше того, Emacs має декілька спеціальних буферів які не утримують файлів а використовуються для інших цілей. Такі спеціальні буфери, як правило мають назви які починаються і закінчуються зірочкою. Так, наприклад, порожній буфер під час завантаження Emacs без жодних аргументів буде називатися *scratch*. Ви можете друкувати у *scratch* буфер як звичайно, але введений текст не буде збережено під час закриття редактора.

Існує що один спеціальний мінібуфер про який вам варто знати. Цей буфер складається лише з одного рядка і завжди присутній на самому низу екрана, нижче смужки стану редактора. Мінібуфер є тим місцем де Emacs виводить повідомлення і де виконуються певні команди що вимагають вводу користувача. Так, наприклад, при відкритті файла Emacs може спитати його назви у мінібуфері.

Перемикання від одного буфера до іншого можна здійснити завдяки C-x b команді. Останнє спитає вас назву буфера (як правило, назва буфера зпівпадає із назвою файла який ви відкрили) і надасть вам як вибір за замовчуванням буфер у якому ви знаходились до перемикання або створення поточного буферу. Просто притиск Enter клавіші перенесе вас у буфер, наданий за замовчуванням.

Якщо ви бажаєте перейти до іншого буфера, відмінного від наданого Emacs за замовчуванням, введіть його назву внизу. Зауважте що ви також можете використовувати таб виповнення тут, введіть декілька початкових літер назви буфера і притисніть Tab. Загалом, таб виповнення працює скрізь в Emacs де воно доцільне.

Ви можете отримати список відкритих буферів якщо притиснете C-x C-b. Остання команда, звичайно, розділить екран на два, зберху буде відображений буфер у якому ви працювали, тоді як унизу - новий буфер під назвою *Buffer List*. Нижнє вікно буде утримувати список буферів, їхні розміри, стани і назви файлів які були завантажені у ці буфери. Ви можете позбутися поділу екрана з допомогою команди C-x 1.

Стани.

Кожний буфер в Emacs знаходиться у певному стані. Стани Emacs не мають нічого спільного зі станами vi які ми розглянули у попередніх розділах, скоріше вони вказують на тип буфера у якому ви знаходитесь. Так, скажімо, існує text-стан що вказує на звичайний текстовий файл, також є c-стан що осначатиме що редагується C вихідний код, sh-стан - для скриптів оболонки, latex-стан для редагування LaTeX файлів, mail-стан для електронної пошти і новинних повідомлень. Стани надають спеціальні налаштування і функціональність, відповідно до типу файла що редагується. Навіть є можливість переналадити ключі і команди для окремих станів. Наприклад, у звичайному текстовому файлі, Tab перенесе курсор на один крок табуляції, тоді як у багатьох мовах програмування, бажано щоб Tab ключ здійснив зсув вправо відповідно від глибини блоку коду.

Перечислені вище стани називаються основними . Кожний буфер знаходиться у одному з основних станів. Додатково буфер може мати другорядний стан. Другорядний стан може надавати додаткові властивості, корисні для певних завдань під час редагування. Наприклад, після притиску Insert клавіші, виклик стану перезапису. Існує також стан автоматичного заповнення (auto-fill-mode), зручний з text-станом або latex-станом, дозволяє кожній лінї вводу автоматично завертатися на новий рядок після досягнення певної кількості знаків. Без стану автоматичного заповнення, вам довелося б вводити M-q для заповнення параграфу.

Відкриття файлів.

Щоб відкрити файл у Emacs, введіть C-x C-f. Emacs спитає у вас назву файла, заповнюючи шлях за замовчуванням для вас, як правило ~/. Після введення назви файла (можете також використати Tab виповнення) притисніть Enter, Emacs відкриє файл у новому буфері і виведе цей буфер на екран.

• Emacs автоматично сворює нові буфери для файлів а не завантажує файли у поточний буфер.

Щоб створити новий файл, ви не можете просто одразу почати друкувати у любий буфер, ви повинні створити новий і вказати назву файла. Введіть C-x C-f і назву файла, так само як ми це робимо для відкриття вже існуючого файла. Emacs замітить що вказаний вами файл не існує і створить новий буфер з підказкою "New file" у мінібуфері.

Якщо ви виконаєте C-x C-f і введете назву каталогу замість файла, Emacs створить новий буфер у якому ви знайдете перелік всіх файлів із вказаного каталогу. Ви можете направити курсор на потрібний вам файл і притиснути Enter, файл буде завантажено. Насправді, ви можете виконати також додаткові дії, такі як вилучення, зміна назви і перенесення файла у інший каталог. Emacs поводить себе як керівник файлів у таких ситуаціях.

Після введення C-x C-f можна скасувати завантаження якщо ви передумали, для цього введіть C-q (quit). C-q працює майже скрізь де вам необхідно скасувати якусь дію або команду яку ви розпочали але не хочете продовжувати.

Редагування.

Після відкриття файла ви можете пересувати курсор всередині тексту за допомогою стрілок або ключів курсора, наведених нижче. Можете вживати PgUp та PgDn для прокрутки сторінки. Home та End ключі переносять курсор на початок і кінець рядка (на старших версіях Emacs вони переносили курсор на початок і кінець буфера). Існує велика кількість Control і Meta (Alt) комбінацій в Emacs, найважливіші з них переліені у наступній таблиці.

Таблиця 17-1. Основні Emacs команди редагування.

Команда:Дія:
C-bКурсор одним знаком назад.
C-fКурсор одним знаком вперед.
C-nКурсор на один рядок нижче.
C-pКурсор на один рядок вище.
C-aКурсор на початок лінії.
C-eКурсор на кінець лінії.
M-bКурсор на одне слово назад.
M-fКурсор на одне слово вперед.
M-}Курсор на один параграф уперед.
M-{Курсор на один параграф назад.
M-aКурсор на одне речення назад.
M-eКурсор на одне речення вперед.
C-dВидалити знак під курсором.
M-dВидалити всі знаки до кінця слова під курсором.
C-vУниз на одну сторінку (PgDn).
M-vУверх на одну сторінку (PgUp).
M-<На початок буфера.
M->На кінець буфера.
C-_Скасує останню зміну.
C-kВидалить текст до кінця лінії.
C-sПошук вперед.
C-rЗворотній пошук.
Зауважте що Meta (Alt) команди діють паралельно з Control з тією різницею що вони оперують над більшими одиницями, тобто якщо C-f перенесе курсор на один знак вперед, то M-f - на ціле слово, і.т.п. Також зверніть увагу що у випадку M-< і M-> і деяких інших нам необхідно притискати одночасно Shift ключ щоб отримати < й > знаки (хіба у вас відмінна клавіатура, що не підпадає під стандартну схему розміщення клавіш). Команда C-k (kill) видаляє всі знаки до кінця рядка, але не видаляє самий рядок (тобто залишає знак нової лінії). C-k видалить знак нової лінії лише за умови що жодних інших знаків немає на лінії. Тож щоб знищити весь рядок, помістіть курсор на початок лінії і виконайте подвійне C-k.

Збереження файлів.

Для того щоб зберегти файл, введіть C-x C-s. Emacs не питатиме вас назви файла, натомість буфер буде збережено у файл який був попередньо завантажений. Якщо ви хочете зберегти буфер у інший файл, введіть C-x C-w. У випядку коли ви вперше зберігаєте файл у цій сесії, Emacs зробить резервну копію старого файла що матиме ту саму назву із тильдою наприкінці, наприклад, якщо ви працювали над report.txt, оригінал буде збережено як report.txt~.

Резервна копія співпадатиме із файлом що ви вперше відкрили. Під час роботи Emacs регулярно створюватиме також автоматично збережену копію (auto-save copy) змін які ви внесли, ця копія матиме гратки спереду і позад назви файла: #report.txt#. Автоматичну копію буде видалено після виконання вами C-x C-s.

Після закінчення редагування файла і збереження ви можете очистити буфер командою C-x k. Emacs спитає вас який саме буфер очистити, поточний - за замовчуванням. Ви можете притиснути Enter для поточного буферу. У випадку якщо ви не зберегли файла, Emacs попросить підтвердження чи дійсно ви хочете очистити буфер (kill the buffer).

Завершення роботи.

Для завершення роботи введіть C-x C-c. Це припинить роботу Emacs. У випадку не збережених файлів, редактор попередить вас, надаючи можливість зберегти їх по черзі.
Особисті інструменти