Редагування програм – ЧАСТИНА 8

Emacs зберігає в кожен момент одну обрану таблицю тегів, і всі команди для роботи з таблицями тегів використовують цю обрану таблицю Щоб вибрати таблицю тегів, наберіть Mx visit-tags-table, яка вважає імя файлу таблиці тегів як аргумент Імя TAGS в каталозі за замовчуванням використовується як імя файлу за замовчуванням

Все, що робить ця команда, – зберігає імя файлу в змінній tags-file-name Emacs практично не зчитує вміст таблиці тегів до тих пір, поки ви не спробуєте використовувати його Самостійна установка цієї змінної так само хороша, як і використання visit-tags-table Початкове значення змінної одно nil це значення повідомляє всім командам для роботи з таблицями тегів, що вони повинні запитувати, яке імя файлу таблиці тегів треба використовувати

Використання visit-tags-table, коли таблиця тегів вже завантажена, дає вам вибір: ви можете додати нову таблицю тегів до поточного списку таких таблиць або почати новий список Команди роботи з тегами використовують всі таблиці тегів в поточному списку Якщо ви починаєте новий список, нова таблиця тегів використовується замість інших Якщо ви додаєте нову таблицю тегів до поточного списку, вона використовується разом з іншими Коли команди роботи з тегами сканують список таблиць тегів, вони не завжди починають з початку списку вони починають з першої таблиці, яка описує поточний файл (якщо така є), проходять далі до кінця списку і потім дивляться список з початку доти, поки в ньому не будуть перевірені всі таблиці

Ви можете явно задати список таблиць тегів, встановивши змінну tags-table-list в значення списку рядків, як показано:

(setq tags-table-list

’(&quot~/emacs&quot  &quot/usr/local/lib/emacs/src&quot))

Це змушує команди, що працюють з тегами, переглядати файли TAGS в каталогах

‘~ / Emacs і / usr / local / lib / emacs / src. Порядок залежить від того, в якому файлі ви зараз знаходитеся і яка таблиця тегів згадує цей файл, як обясни вище

Чи не ставив змінні tags-file-name і tags-table-list одночасно

22134  Пошук визначення тега

Найважливіша річ, яку вам дозволяють робити таблиці тегів, – це пошук визна-

ділення конкретного тега

M- тег hRETi

Знайти перше визначення тега (find-tag)

C-u M- Знайти наступне по черзі визначення останнього заданого тега

C-u M- Повернутися до попереднього знайденому тегу

C-M- зразок hRETi

Знайти тег, чиє імя збігається із зразком (find-tag-regexp)

C-u C-M- Знайти наступного тег, чиє імя збігається з останнім використаним образ-

цом

C-x 4 тег hRETi

Знайти перше визначення тега, але показати його в іншому вікні (find-tagother-window)

C-x 5 тег hRETi

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

(find-tag-other-frame)

M-* Повернутися до того місця, де ви раніше викликали M- і товаришів

M- (Find-tag) – це команда для пошуку визначення заданого тега Вона шукає його по таблиці тегів як рядок і потім використовує цю інформацію з таблиці тегів для того, щоб визначити файл, в якому перебуває визначення, і приблизну положення визначення у файлі Потім find-tag звертається до цього файлу, пересуває точку в приблизну позицію і починає пошук визначення на постійно зростаючому відстані

Якщо задається порожній аргумент (просто hRETi), То в якості імені тега, який треба знайти, використовується s-вираз, що знаходиться в буфері перед або навколо точки Для отримання інформації про s-виразах дивіться Розділ 222 [Списки], с 206,

Аргумент для M- не зобовязаний бути повним імям тега досить частини Це можливо, тому що M- знаходить в таблиці теги, які містять тег як построк Однак, вона вважає за краще точний збіг збігом лише построк Щоб знайти інші теги, які відповідають тій же підрядку, слід дати find-tag числовий аргумент, як в Cu M-; ця команда не счітиваает імя тега, але продовжує пошук по тексту таблиці тегів іншого тега, що містить саму останню використану підрядок Якщо у вас є справжня клавіша hMETAi, То M-0 M- може служити більш простий альтернативою Cu M-.

Подібно більшості команд, які можуть перемикати буфери, find-tag має варіант, який показує новий буфер в іншому вікні, і ще один, який створює новий фрейм Перша команда – це C-x 4 , Яка викликає функцію find-tag-otherwindow Друга, Cx 5, Викликає find-tag-other-frame

Щоб повернутися до місць, де ви недавно знаходили теги, використовуйте Cu M-; в більш загальному вигляді, M- з негативним числовим аргументом Ця команда може перенести вас в інший буфер C-x 4 з негативним аргументом знаходить попереднє положення тега в іншому вікні

Так само, як ви можете повернутися до місць, де ви недавно знаходили теги, ви можете повернутися до місць, звідки ви їх знайшли Використовуйте для цього M-*, що викликає команду pop-tag-mark Типове застосування цих команд – знайти і вивчити визначення чогось за допомогою M- і потім повернутися до того місця, де ви були, за допомогою M-*

І Cu M-, І M-* дозволяють вам покроково проходити назад до глибини, яка визначається змінної find-tag-marker-ring-length

Команда C-M- (Find-tag-regexp) звертається до тегам, відповідним заданому регулярному виразу Вона схожа на M-, Але виробляє зіставлення з регулярним виразом, а не з рядком

22135  Пошук і заміна за допомогою таблиць тегів

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

M-x tags-search hRETi regexp hRETi

Пошук regexp у всіх файлах в обраній таблиці тегів

M-x tags-query-replace hRETi regexp hRETзаміна hRETi

Здійснити query-replace-regexp в кожному файлі в обраній таблиці ті-

гов

M-, Перезапустити одну з вищезгаданих команд з поточного положення точки

(tags-loop-continue)

Mx tags-search зчитує регулярний вираз, використовуючи мінібуфер, потім шукає це регулярний вираз по черзі в кожному файлі з обраної таблиці тегів Вона показує імя файлу, який в даний момент проглядається, таким чином, ви можете слідкувати за ходом пошуку Як тільки визначається місцезнаходження, tags-search повертається

Знайшовши одне відповідність, ви, ймовірно, захочете знайти всі інші Щоб знайти ще одне відповідність, наберіть M-, (tags-loop-continue), це відновить tags-search Ця команда переглядає залишок поточного буфера і потім залишилися файли таблиці тегів

Mx tags-query-replace здійснює у всіх файлах в таблиці тегів єдину заміну регулярного виразу з підтвердженням Вона зчитує регулярний вираз, яке слід шукати, і рядок для заміни, точно так само, як звичайна Mx query-replace-regexp Вона шукає дуже схоже на Mx tags-search, але з повторами, обробляючи збіги згідно з вашим вводу Див Розділ 127 [Заміна], с 95, більш детальну інформацію про заміну з підтвердженням

Можна пройти по всіх файлів в таблиці тегів за допомогою едіственная виклику Mx tags-query-replace Але іноді буває корисно тимчасово вийти, що ви можете зробити за допомогою будь-якої події введення, що не має особливого сенсу при заміні з підтвердженням Ви можете згодом відновити заміну з підтвердженням, набравши M-, ця команда поновлює останню зроблену вами команду пошуку або заміни тегів

Команди цього розділу призводять до набагато більш широкому пошуку, ніж сімейство find-tag Команди find-tag шукають тільки визначення тегів, співпадаючих з вашою підрядком або регулярним виразом Команди tags-search і tags-query-replace знаходять кожне входження регулярного вираження, як роблять в поточному буфері звичайні команди пошуку і заміни

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

Вас, можливо, вразило, що tags-search дуже схожа на grep Ви можете також запустити саму grep як підпорядковану Emacs, і Emacs покаже вам збігаються рядки одну за одною Це працює в чому схоже на запуск компіляції звернення до тих позицій у вихідних файлах, де grep знайшла збіги, працює як звернення до помилок компіляції Див Розділ 231 [Компіляція], с 247

22136  Запити до таблиці тегів

M-x list-tags hRETфайл hRETi

Показати список тегів, визначених у заданому файлі з текстом програми

M-x tags-apropos hRETi regexp hRETi

Показати список всіх тегів, відповідних регулярному виразу regexp

Mx list-tags зчитує імя одного з файлів, описаних в обраній таблиці тегів, і показує список всіх тегів, визначених у цьому файлі Аргумент імя файлу фактично є просто рядком для порівняння з іменами, записаними в таблиці тегів він зчитується як рядок, а не як імя файлу Тому завершення і значення за замовчуванням неможливі, і ви повинні вводити імя файлу в тому ж самому вигляді, в якому

воно зявляється в таблиці тегів Не вмикайте каталог як частина імені файлу, якщо імя файлу, записаного в таблиці тегів, не включає каталог

Mx tags-apropos схожа на apropos для тегів (див Розділ 73 [Контекстна довідка], с 57) Вона зчитує регулярний вираз, потім знаходить все теги в обраній таблиці тегів, чиї входження відповідають цього регулярному виразу, і показує знайдені імена тегів

Ви також можете виробляти в буфері завершення в просторі імен, складеному з імен тегів поточних таблиць Див Розділ 229 [Завершення символів], с 222

2214  Обєднання файлів за допомогою Emerge

Нерідко програмісти перебігають один одному дорогу і змінюють одну і ту ж програму у двох різних напрямках Щоб справитися з цією плутаниною, вам необхідно обєднати дві ці версії Emerge спрощує це Дивіться також Розділ 149 [Порівняння файлів], с 132, про команди для порівняння файлів більш ручним методом, і розділ Emerge в The Ediff Manual

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

*

*