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

Операційна система зберігає постійні дані в іменованих файлах Тому велика частина тексту, який ви редагуєте в Emacs, приходить з файлів і зрештою записується у файл

Щоб редагувати файл, ви повинні веліти Emacs вважати його і підготувати буфер, що містить копію тексту файлу Це називається зверненням до файлу Команди редагування застосовуються безпосередньо до тексту в буфері, тобто до копії всередині Emacs Ваші зміни зявляються в самому файлі, тільки коли ви збережете буфер у файлі

Окрім звернення до файлів і їх збереження Emacs може видаляти, копіювати, пере-

іменовивать і додавати у файли і працювати з каталогами файлів

141  Імена файлів

Більшість команд Emacs, які оперують з файлами, вимагають від вас вказівки імені файлу (Запис і відновлення є винятком буферу відомо, яке імя файлу використовується для них) Імена файлів задаються з використанням мінібуфера (див Глава 5 [мінібуфер], с 45) Ви можете використовувати завершення для полегшення написання довгих імен файлів Див Розділ 53 [Завершення], с 47

Для більшості операцій існує імя файлу за замовчуванням, яке буде використано, якщо ви наберете просто hRETi, Вводячи порожній аргумент Зазвичай імя файлу за замовчуванням – це імя файлу, що знаходиться в поточному буфері, що спрощує дії над цим файлом за допомогою будь-яких файлових команд Emacs

Кожен буфер має свій каталог за замовчуванням, звичайно той же самий, що і каталог файлу, до якого звертається цей буфері Коли ви вводите імя файлу, що не вказуючи каталог, він використовує каталог за замовчуванням Якщо ви задасте каталог у відносній формі, за допомогою імені, яка не починається з косою риси, воно інтерпретується по відношенню до каталогу за замовчуванням Каталог за умовчанням зберігається у змінній default-directory, яка має своє власне значення в кожному буфері

Наприклад, якщо за замовчуванням імя файлу – / u / rms / gnu / gnutasks, то каталогом за замовчуванням буде u / rms / gnu /. Якщо ви наберете просто foo, що не описуючи каталог, то це буде скороченням для / u / rms / gnu / foo. .. / login Буде відповідати

‘/ U / rms / login. New / foo позначає файл з імям / u / rms / gnu / new / foo.

Команда Mx pwd друкує каталог за замовчуванням для поточного буфера, а команда Mx cd встановлює його (значення зчитується в мінібуфер) Каталог за замовчуванням в буфері змінюється тільки тоді, коли використовується команда cd Каталог за замовчуванням для буфера, що звертається до файлу, инициализируется по каталогу файлу, до якого він звернувся Якщо буфер створюється довільним чином за допомогою Cx b, його каталог за замовчуванням копіюється з того буфера, який був поточним в той момент

Каталог за замовчуванням фактично зявляється в мінібуфер, коли мінібуфер стає активним для читання імені файлу Це служить двом цілям: щоб показати вам, що мається за замовчуванням, так що ви можете набрати відповідну імя файлу і з певністю дізнатися, що це означатиме, і щоб дозволити вам відредагувати каталог за замовчуванням і задати інший каталог Ця підстановка каталогу за замовчуванням не робиться, якщо змінна insert-default-directory встановлена ​​рівної nil

Зауважимо, що законно набирати повне імя файлу після того, як ви ввійдете в мінібуфер, ігноруючи присутність імені каталогу за замовчуванням як частини тексту Остаточне зміст мінібуфера може здаватися неправильним, але насправді це не так Наприклад, якщо спочатку мінібуфер містив / usr / tmp /, і ви додали / x1/rms/foo,

ви отримаєте / usr / tmp / / x1/rms/foo; але Emacs ігнорує все до того місця, де зустрінуті дві косі риси поспіль в результаті виходить / x1/rms/foo. Див Розділ 51 [мінібуфер Файл], с 45

Літера $ в імені файлу використовується для підстановки змінних середовища Наприклад, якщо ви застосували команду оболчки export FOO = rms / hacks для установки змінної середовища з імям FOO, то ви можете використовувати / U / $ FOO / testc або / u / $ {FOO} / testc як скорочення для / u / rms / hacks / testc. Імя змінної середовища складається з усіх букв і цифр після $; або воно може бути укладена у фігурні дужки після $. Зауважте, що команди оболонки, які встановлюють змінні середовища, вплинуть на Emacs, тільки якщо вони були виконані до запуску Emacs

Щоб отримати доступ до файлу, який містить в імені знак $, надрукуйте $ $. Ця пара перетворюється в один $, в той час як для одиночного $ робиться підстановка змінної Або ви можете скасувати особливий сенс всіх знаків в імені файлу за допомогою послідовності /: (див Розділ 1413 [Буквальні імена файлів], с 134)

Лісповская функція, яка виробляє підстановку, називається substitute-infile-name Підстановка виконується тільки для імен файлів, зчитувальних як такі з використанням мінібуфера

Ви можете включати в імена файлів знаки, що не входять в ASCII, якщо встановите змінну file-name-coding-system в відмінне від nil значення Див Розділ 189 [Завдання кодування], с 168

142  Звернення до файлів

Cx Cf Звернутися до файлу (find-file)

Cx Cr Звернутися до файлу для перегляду, не допускаючи його зміни (find-fileread-only)

Cx Cv Звернутися до іншого файлу, замість останнього відвіданого (findalternate-file)

Cx 4 f Звернутися до файлу в іншому вікні (find-file-other-window) Не міняє те-

кущее вікно

Cx 5 f Звернутися до файлу в іншому фреймі (find-file-other-frame) Не змінює те, що отображет в обраному фреймі

M-x find-file-literally

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

Звернення до файлу означає копіювання його вмісту в буфер Emacs, де ви можете його редагувати Emаcs створює новий буфер для кожного файлу, до якого ви звертаєтеся Ми говоримо, що цей буфер звертається до файлу, для зберігання якого він був створений Emacs створює імя буфера з імені файлу, відкидаючи каталог і зберігаючи просто власне імя Наприклад, файл з імям / usr / rms / emacstex отримає буфер з імям emacstex. Якщо буфер з таким імям вже існує, то створюється унікальне імя шляхом додавання <2>‘, <3>‘ і так далі при цьому використовується найменший номер, що створює ще яке не використовується імя

Рядок режиму кожного вікна показує імя буфера, який відображений в цьому вікні,

таким чином ви завжди можете сказати, який буфер редагуєте

Всі зміни, зроблені за допомогою команд редагування, робляться в буфері Emacs Вони не впливають на файл, до якого ви звернулися, або на будь-яке інше постійне місце, поки ви не зберегли буфер Збереження буфера означає, що Emacs записує поточний вміст цього буфера в файл, до якого він звертався Див Розділ 143 [Збереження], с 108

Якщо буфер містить зміни, які не були збережені, то про буфері говориться, що він змінений (або модифікований) Це важливо, оскільки це має на увазі, що якісь зміни втратить, якщо буфер НЕ буде збережений Якщо буфер змінений, біля лівого краю рядок режиму показуються дві зірочки

Щоб звернутися до файлу, використовуйте команду Cx Cf (find-file) Після неї вве-

дитя імя файлу, який ви хочете відвідати, обмежене hRETi

Файл зчитується з використанням мінібуфера (див Глава 5 [мінібуфер], с 45) з використанням значень за замовчуванням і завершенням стандартним способом (див Розділ 141 [Імена файлів], с 105) Поки ви знаходитесь в мінібуфер, ви можете перервати виконання Cx Cf, набравши Cg

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

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

А що якщо ви захочете створити новий файл Просто зверніться до нього Emacs друкує в луна-області (New File), але в інших відносинах поводиться так само, як, якби ви звернулися б до існуючого пустому файлу Якщо ви зробите будь-які зміни і запишете їх, то файл буде створений

Emacs дізнається з вмісту файлу, яку угоду використовується в ньому для розділення рядків – переклад рядка (використовуваний в GNU / Linux і Unix), повернення каретки і переведення рядка (використовувані в системах Microsoft) або просто повернення каретки (використовуваний на Macintosh) – і автоматично перетворює вміст до звичайного формату Emacs, в якому рядки розділяються знаками перекладу рядка Це частина загального засоби перетворення системи кодування (див Розділ 187 [Системи кодування], с 165), і це дозволяє редагувати файли, перенесені з різних операційних систем з однаковим зручністю Якщо ви змінили текст і зберегли файл, Emacs виробляє зворотне перетворення, замінюючи переклади рядка на повернення каретки і переведення рядка або просто повернення каретки, якщо це необхідно

Якщо зазначений вами файл фактично є каталогом, то Cx Cf викликає Dired, броузер каталогів Emacs, щоб ви могли редагувати вміст цього каталогу (див Глава 28 [Dired], с 291) Dired надає зручний спосіб видалення, перегляду або обробки файлів в каталозі Однак, якщо змінна find-file-run-dired дорівнює nil, спроба звернутися до каталогу вважатиметься помилкою

Джерело: Річард Столмен, Керівництво по 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>

*

*