Emacs - це, мабуть, найпотужніший текстовий редактор з усіх існуючих. Він може робити все, і необмежено розширюється, завдяки своїй вбудованій мови програмування на базі lisp. З допомогою Emacs ви можете бродити по вебу, читати пошту, примати участь у групах новин Usenet, готувати каву та тощо. Це не означає, що з цієї глави ви дізнаєтеся, як усі це робиться, проте ви отримаєте добрі початкові знання про те, як запустити Emacs, відредагувати один чи декілька файлів, зберегти їх і вийти з Emacs.
Якщо після прочитання цього, ви захочете докладніше вивчити Emacs, ви можете зазирнути сюди: Tutorial Introduction to GNU Emacs.
Запускається Emacs з командного рядку наступним чином:
emacs [файл1] [файл2...]
Emacs відкриє кожен файл, зазначений як аргумент, в окремому буфері. Якщо в рядку були вказані два файла, вікно буде автоматично розподілено на два, в першому з яких буде відображено останній з зазначених файлів, а у другому - список доступних буферів. Якщо ви запустите Emacs, не зазначивши в рядку жодного файла, ви опинитесь в буфері під назвою *scratch*
. Якщо ви працюєте в X, будуть доступні меню за допомогою миші, а якщо ви в текстовому режимі, ви також можете отримати доступ до меню з допомогою клавіші F10, але в цій главі ми сконцентруємось на роботі з клавіатурою без усяких меню.
А тепер настав час зайнятися практикою. Наприклад, давайте почнемо з відкриття двох файлів: file1
і file2
. Якщо ці файли не існують, їх буде створено після того, як ви щось в них запишите:
$ emacs file1 file2
Після виконання цієї команди, буде показано наступне вікно:
Як ви можете бачити, було створено два буфера. Також у нижній частині екрана (де ви бачите (New file)
) знаходиться третій буфер. Це міні-буфер. Ви не можете отримати до цього буферу безпосередній доступ. Вас має бути запрошено до нього Emacs'ом під час інтерактивних операцій. Для зміни поточного буфера, введіть Ctrl-X-O. Ви можете набирати текст як у “звичайному” редакторі, видаляючи символи за допомогою клавіш Del чи Backspace.
Для переміщення курсору ви можете використовувати клавіші зі стрілками, або такі комбінації клавіш: Ctrl-A для переходу на початок рядки, Ctrl-E для переходу в кінець рядки, Alt-< чи Ctrl-Home для переходу до початку буфера й Alt-> чи Ctrl-End для переходу в кінець буфера. Існує багато інших комбінацій, навіть комбінації для клавіш зі стрілками [19].
Щойно ви готові зберегти свої зміни на диск, наберіть Ctrl-XCtrl-S, чи, якщо потрібно зберегти вміст буфера в інший файл, наберіть Ctrl-XCtrl-W. Emacs запитає у вас ім'я файла, в який має бути записано вміст буфера. При цьому ви можете скористатися завершенням, скориставшись для цього клавішею Tab як у bash.
При необхідності ви можете залишити на екрані один буфер. Для цього є два способи:
Для відновлення буфера назад на екран є два способи:
наберіть Ctrl-XCtrl-B. При цьому буде відкрито новий буфер з ім'ям *Buffer List*
(список буферів). Ви можете переміщатися по цьому буферу за допомогою послідовності Ctrl-XO, потім виберіть потрібний вам буфер і натисніть клавішу Enter
, або введіть у міні-буфері ім'я потрібного буфера. Після того, як ви зробите вибір, буфер *Buffer List*
повернеться в фоновий режим.
Якщо ви закінчили роботу з файлом і хочете позбутися пов'язаного з ним буфера, наберіть Ctrl-XK. Після цього Emacs запитає у вас, який із буферів він має закрити. За умовчанням це буде буфер, якому ви в даний момент перебуваєте. Якщо ви хочете позбутися іншого буфера, введіть його ім'я чи натисніть TAB
: Emacs відкриє ще один буфер з ім'ям *Completions*
(завершення), пропонуючи список можливих варіантів. Підтвердить свій вибір клавішею Enter
.
Ви також у будь-який час можете відновити на екрані два видимих буфера. Для цього наберіть Ctrl-X2. За умовчанням новий створений буфер буде копією поточного буфера (який, наприклад, дозволяє вам редагувати великий файл в різних місцях “одночасно”). Для переміщення між буферами використовуйте описані вище команди.
Ви в будь-який час можете відкривати нові файли за допомогою Ctrl-XCtrl-F. Emacs спитає у вас ім'я файла, і ви знову можете скористатися автозавершенням, якщо знайдете це більш зручнішим.
Припустимо, що ви перебуваєте в такій ситуації: Рисунок 8.2, “Emacs, перед копіюванням текстового блоку”.
Спочатку потрібно виділити блок, який ви хочете скопіювати. У цьому прикладі ми хочемо скопіювати ціле речення. Першим кроком буде установка курсору на початок області для копіювання. За умови, що курсор знаходиться в тієї ж позиції, що й на Рисунок 8.2, “Emacs, перед копіюванням текстового блоку”, послідовність команд буде наступною: Ctrl-Space (Control
+ клавіша пробіл). Emacs виведе в міні-буфері повідомлення Mark set
(Мітку встановлено). Потім перейдіть на початок рядки, натиснувши Ctrl-A. Область, виділена для копіювання чи вирізання - це вся область між міткою і поточним положенням курсору, отже, в даному випадку це буде цілий рядок тексту. Доступні дві послідовності команд: Alt-W (для копіювання) чи Ctrl-W (для вирізання). Якщо ви виконуєте копіювання, Emacs відразу поверне курсор на позицію мітки, щоб ви могли бачити виділену область.
І на завершення, перейдіть в буфер, в який ви хочете скопіювати текст, і натисніть Ctrl-Y. При цьому ви отримаєте наступний результат:
Насправді те, що ви нині зробили, називається копіюванням тексту в kill ring. Цей kill ring містить області, скопійовані чи вирізані з моменту запуску Emacs. Будь-яка щойно скопійована чи вирізана область поміщається у початок kill ring. Послідовність Ctrl-Y лише “вставляє” область на початок. Якщо ви хочете отримати доступ до будь-якої іншої області, натисніть Ctrl-Y, потім натискайте Alt-Y доти, доки, поки не отримаєте потрібний текст.
Для пошуку тексту перейдіть в потрібний буфер і натисніть Ctrl-S. Emacs запитає, який рядок необхідно знайти. Для продовження пошуку в поточному буфері цього рядка просто жміть знову Ctrl-S. Коли Emacs досягне кінця буфера і не знайде більше збігів, ви можете натиснути Ctrl-S ще раз, щоб знову розпочати пошук від початку буфера. Натискання на Enter
закінчує пошук.
Для пошуку і заміни натисніть Alt-%. Emacs запитає, який рядок треба знайти, на що його замінити, і буде вимагати підтвердження для кожного знайденого збігу.
Для скасування дії натисніть Ctrl-XU чи Ctrl-Shift--, що виконає відкат назад на попередню операцію. Ви можете скасувати стільки операцій, скільки потрібно.
Комбінація клавіш для цього - Ctrl-XCtrl-C. Якщо ви не зберегли зроблені зміни, Emacs запитає у вас, хочете ви зберегти буфери чи ні.
[19] Emacs було розроблено для роботи на самих різноманітних машинах, деякі з яких оснащені клавіатурами без клавіш зі стрілками. Це ще більш справедливим для Vi.