Робота з файлами – ЧАСТИНА 2

Якщо задане вами імя файлу містить символи підстановки, Emacs звертається до всіх файлів, відповідним цьому імені Див Розділ 1413 [Буквальні імена файлів], с 134, якщо ви хочете звернутися до файлу, чиє імя справді містить символи підстановки

Якщо операційна система не дозволяє вам змінювати файл, до якого ви звертаєтеся, Emacs робить буфер доступним тільки для читання, так що у вас не вийде внести зміни, які буде проблематично згодом зберегти Ви можете зробити буфер доступним для запису за допомогою Cx Cq (vc-toggle-read-only) Див Розділ 153 [Інші операції з буферами], с 136

Іноді ви можете захотіти звернутися до файлу в режимі тільки читання, щоб захиститися від випадкового внесення змін робіть це, звертаючись до файлу за допомогою команди Cx Cr (find-file-read-only)

Якщо ви звернулися до неіснуючого файлу ненавмисно (так як ви набрали неправильне імя файлу), використовуйте команду Cx Cv (find-alternate-file), щоб звернутися до файлу, який вам потрібен насправді Cx Cv подібна Cx Cf, але знищує поточний буфер (після того, як спочатку запропонує записати його, якщо він змінений) При зчитуванні нового імені файлу вона вставляє повне імя поточного файлу, залишаючи точку відразу після імені каталогу це зручно, якщо ви зробили невелику помилку, коли вводили імя файлу

Якщо ви звертаєтеся до файлу, який існує, але не може бути прочитаний, Cx

C-f видає помилку

Cx 4 f (find-file-other-window) схожа на Cx Cf, але буфер, що містить описаний файл, вибирається в іншому вікні Вікно, яке було обрано до виклику Cx 4 f, продовжує показувати той же буфер, який вже показувався Якщо ця команда використовується, коли існує тільки одне вікно, то це вікно ділиться на два, одне з яких продовжує показувати те ж, що й колись, а інше показує новий викликана файл Див Глава 16 [Вікна], с 141

Cx 5 f (find-file-other-frame) аналогічна цій команді, але відкриває новий фрейм або робить видимим будь-який існуючий фрейм, що показує шуканий файл Це можливо, тільки якщо ви користуєтеся віконної системою Див Глава 17 [Фрейми], с 147

Якщо ви хочете відредагувати файл як послідовність знаків без особливої ​​перекодування або перетворення, використовуйте команду Mx find-file-literally Вона звертається до файлу, як Cx Cf, але не чинить перетворення формату (див Розділ 2111 [Форматований текст], с 198), перетворення знакових кодів (див Розділ 187 [Системи кодування], с 165) або автоматичною розпакування (див Розділ 1411 [Стислі файли], с 133) Якщо ви вже звертаєтеся до цього ж файлу звичайним способом (НЕ буквально), ця команда запитає вас, чи звернутися до нього в цей раз буквально

Дві змінні-пастки дозволяють розширень змінювати спосіб звернення до файлів Звернення до несуществуещему файлу запускає функції в списку find-file-notfound-hooks значення цієї змінної – список функцій, і ці функції викликаються одна за одною до тих пір, поки одна з них не поверне відмінне від nil значення Будь-яке звернення до файлу, існуючому чи ні, припускає, що find-file-hooks містить список функцій, і викликає їх все одну за одною В обох випадках функції викликаються без аргументів Першою застосовується змінна find-file-not-found-hooks Ці змінні не нормальні пастки, і для позначення цього їх імена закінчуються на

‘-Hooks, а не на -hook. Див Розділ 3123 [Пастки], с 349

Є кілька способів автоматично вказати основний режим для редагування файлу (див Розділ 191 [Вибір режиму], с 175) і встановити локальні змінні, визначені для цього файлу (див Розділ 3125 [Змінні файлу], с 351)

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

Збереження буфера в Emacs означає запис його вмісту назад в файл, до кото-

рому цей буфер звертається

Cx Cs Зберегти поточний буфер у файлі, до якого цей буфер звертається (savebuffer)

Cx s Зберегти деякі або всі буфери в їх відповідних файлах (savesome-buffers)

M-~ Забути, що поточний буфер був змінений (not-modified)

Cx Cw Зберегти поточний буфер в заданий файл (write-file)

M-x set-visited-file-name

Змінити імя файлу, під яким поточний буфер буде зберігатися

Якщо ви хочете зберегти файл і зробити його зміни постійними, наберіть Cx Cs (save-buffer) Після того, як запис закінчиться, Cx Cs друкує повідомлення подібне цьому:

Wrote /u/rms/gnu/gnutasks

Якщо ж обраний буфер немодифікована (у ньому не було зроблено змін відтоді, як він був створений або останній раз записаний), його запис не робиться, так як це не має сенсу Замість цього, C-x Cs друкує таке повідомлення в луна-області:

(No changes need to  be saved)

Команда Cx s (save-some-buffers) пропонує записати будь-які або всі змінені буфери Вона запитує вас, що потрібно зробити з кожним буфером Можливі варіанти відповіді аналогічні варіантам для query-replace:

y Зберегти цей буфер і питати про інших

n не зберігати цей буфер, але питати про інших

! Зберегти цей буфер і всі інші без подальших питань

hRETi             Перервати save-some-buffers і більше нічого не записувати

. Зберегти цей буфер і вийти з save-some-buffers, не питаючи про Залишився-

вих буферах

Cr Переглянути буфер, про який вас запитали в даний момент Коли ви вийдіть з режиму View, ви знову потрапляєте в save-some-buffers, яка продовжує задавати вам запитання

Ch Показати довідкове повідомлення про цих варіантах відповіді

Cx Cc, послідовність ключів для виходу з Emacs, викликає save-somebuffers і, отже, задає ці ж питання

Якщо ви змінили буфер, але не хочете записувати зміни, ви повинні зробити деякі дії, щоб запобігти цьому Інакше кожен раз, коли ви використовуєте Cx s або Cx Cc, ви можете помилково його записати З одного боку, ви можете набрати M-~ (not-modified), що скидає показник измененности буфера Якщо ви зробите так, то жодна з команд записи не думатиме, що буфер потрібно зберігати (~ Часто використовується як математичний символ для позначення заперечення, таким чином, послідовність M-~ – це мета-заперечення) Ви могли б також використовувати set-visited-file-name (Дивіться нижче), щоб позначити буфер, як звернувся до файлу з іншим імям, яка не використовувався для чогось важливого З іншого боку, ви можете скасувати всі зміни, зроблені з тих пір, коли до файлу звернулися, або він був записаний, за допомогою повторного зчитування тексту з файлу Це називається поверненням до колишнього стану Див Розділ 144 [Повернення], с 113 Ви могли б також скасувати всі зміни, повторюючи команду скасування Cx u досить довго але повернення простіше

Mx set-visited-file-name замінює імя файлу, до якого звертається поточний буфер Вона зчитує нове імя файлу, використовуючи мінібуфер Потім відповідно змінюється імя буфера (якщо нове імя вже не використовується) set-visited-file-name не записує буфер в новий викликаний файл, вона просто змінює записи всередині Emacs на випадок подальшого збереження Вона так само позначає буфер як змінений, так що Cx Cs буде його зберігати

Якщо ви хочете помітити буфер як звертається до іншого файлу і відразу його записати, використовуйте Cx Cw (write-file) Це абсолютно точний еквівалент setvisited-file-name, за яким слід C-x C-s Використання Cx Cs в буфері, який не звертався до файлу, має те ж саме діяння, що і Cx Cw тобто, вона зчитує імя файлу, мітить буфер як звертається до цього файлу і записує його

туди За замовчуванням імя файлу в буфері, який не звертався до файлу, складається з імені буфера та каталогу за замовчуванням для цього буфера

Якщо нове імя файлу увазі основний режим, то Cx Cw в більшості випадків перемикає в цей режим Команда set-visited-file-name поводиться так само Див Розділ 191 [Вибір режиму], с 175

Якщо Emacs збирається записати файл і бачить, що дата останньої версії на диску не відповідає тому, що він останній раз читав або записував, то він ставить вас до відома про цей факт, так як це, можливо, виявляє проблему, викликану одночасним редагуванням, і вимагає вашої негайної уваги Див Розділ 1432 [Захист від одночасного редагування], с 112

Якщо змінна require-final-newline не дорівнює nil, Emacs ставить обмежувач рядка в кінець кожного файлу, який не закончівается їм, кожен раз, коли файл зберігається або записується За замовчуванням ця змінна дорівнює nil

1431  Резервні файли

У більшості операційних систем переписування файлу автоматично руйнує всі відомості про те, що цей файл містив раніше Таким чином, запис файлу з Emacs відкидає старе вміст файлу – Або може відкинути, якщо перед фактичної записом Emacs завбачливо не скопіює старе вміст в інший файл, званий резервним

Для більшості файлів рішення про створення резервних копій визначається змінної make-backup-files На більшості операційних систем її значення за замовчуванням дорівнює t, що велить Emacs створювати резервні файли

Для файлів, що знаходяться під контролем системи управління версіями (див Розділ 147 [Управління версіями], с 116), це визначається змінної vc-make-backup-files За умовчанням вона дорівнює nil, так як резервні копії зайві, раз ви записуєте всі попередні версії в системі управління версіями Див Розділ 14792 [Обробка робочих файлів в VC], с 130

Існуюче за замовчуванням значення змінної backup-enable-predicate заборонних

ет записувати резервні копії для файлів з каталогу / tmp.

За вашим вибором Emacs може зберігати або тільки один резервний файл, або декілька нумерованих резервних файлів для кожного файлу, який ви редагували

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*