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 | Зворотній пошук. |