Команди для природних мов – ЧАСТИНА 2

Точним визначенням меж абзацу управляють дві змінні: paragraph-separate і paragraph-start Значення paragraph-start – це регулярний вираз, яке повинно відповідати будь-якому рядку, яка або починає, або розділяє абзаци Значення paragraph-separate – це ще одне регулярний вираз, яке повинно відповідати тільки рядкам, які поділяють абзац, але не є частиною -якого абзацу (наприклад, порожні рядки) Рядки, які починають новий абзац і містяться в ньому, повинні відповідати тільки paragraph-start, але не paragraphseparate Наприклад, в режимі Fundamental, paragraph-start дорівнює [\ t \ n \ f], а paragraph-separate – це [\ t \ f] * $.

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

нию цих змінних розпізнають звичайний роздільник сторінок

214  Сторінки

Дуже часто файли представляються розділеними на сторінки за допомогою знаків прогону (або переказу) сторінки (ASCII Control-L, вісімковий код 014) Коли ви друкуєте файл, цей знак примусово розбиває сторінку таким чином, кожна сторінка файлу буде починатися на новому аркуші паперу Більшість команд Emacs розглядають знак-роздільник сторінок точно так само, як будь-які інші знаки: ви можете вставити їх за допомогою Cq Cl або видалити за допомогою hDELi Таким чином, ви вільні у виборі, ділити на сторінки ваш файл чи ні Однак, через те, що поділ на сторінки часто є смисловим поділом файлу, то передбачені команди для переміщення по сторінках і для дій над ними

Cx [Змістити точку до попередньої сторінки (backward-page)

Cx] Змістити точку до наступної сторінки (forward-page)

Cx Cp Поставити крапку і мітку по краях цієї (або іншої) сторінки (mark-page)

Cx l Порахувати рядки в цій сторінці (count-lines-page)

Команда Cx [(backward-page) рухає точку до позиції безпосередньо після попереднього роздільник сторінки Якщо точка вже знаходиться відразу після роздільник, то команда пропускає цю сторінку і зупиняється на попередньої їй Числовий аргумент служить в якості лічильника повторів Команда Cx] (forward-page) пересуває точку вперед, пропускаючи наступний роздільник сторінок

Команда Cx Cp (mark-page) ставить крапку на початку поточної сторінки, а мітку в її кінці Роздільник сторінок в кінці включається в область (мітка слід за ним) Роздільник сторінок на початку не включається (Точка слід за ним) Cx Cp Cw дає зручний спосіб знищити сторінку або перемістити її в інше місце Якщо ви зрушимо до роздільника ще однієї сторінки за допомогою Cx [і Cx], а потім відновіть знищену сторінку, всі сторінки будуть знову правильно разгранічіни Cx Cp включає в область тільки роздільник наступної сторінки саме для цього

Числовий аргумент для Cx Cp використовується для вказівки сторінки, до якої необхідно відправитися, щодо поточної Нуль означає поточну сторінку Одиниця означає наступну сторінку, а 1 – попередню

Команда Cx l (count-lines-page) хороша для прийняття рішення, де розірвати сторінку на дві Вона друкує в луна-області загальне число рядків у поточній сторінці і потім ділить її на ті, які передують поточному рядку, і на ті, що йдуть за нею, як у прикладі:

Page has 96 (72+25)  lines2

Зауважте, що значення суми на одиницю менше це вірно, якщо крапка не стоїть на початку рядка

Мінлива page-delimiter каже, де починається сторінка Її значення – це регулярний вираз, відповідне початку рядка, яка розділяє сторінки Звичайне значення цієї змінної одно ^ \ f, що відповідає знаку перекладу сторінки на початку рядка

215  Заповнення тексту

Заповнення тексту означає розбивка його на рядки певної довжини Emacs може робити заповнення двома способами У режимі Auto Fill, вставка тексту за допомогою самовставляющіхся знаків також автоматично заповнює його Є також явні команди для заповнення, які ви можете використовувати, коли редагування тексту залишає його незаповненим Коли ви редагуєте форматований текст, ви можете задати стиль заповнення кожного фрагмента (див Розділ 2111 [Форматований текст], с 198)

2151  Режим Auto Fill

Режим Auto Fill  – Це другорядний режим, в якому рядки обриваються автоматично, коли стають занадто довгими Розрив відбувається тільки тоді, коли ви набираєте hSPCабо hRETi

M-x auto-fill-mode

Включення і виключення режиму Auto Fill

hSPCi

hRETi             У режимі Auto Fill перериває рядок, якщо це потрібно

Mx auto-fill-mode включає режим Auto Fill, якщо він був відключений, або вимикає, якщо він був включений З позитивним аргументом вона завжди включає режим Auto Fill, а негативним – завжди відключає Ви можете бачити, коли режим Auto Fill діє, по присутності слова Fill в рядку режиму всередині круглих дужок Режим Auto Fill – другорядний режим, що включається або виключається для кожного буфера окремо Див Розділ 311 [Другорядні режими], с 341

У режимі Auto Fill рядки автоматично розриваються на прогалинах, коли вони стають довшими бажаної величини Переривання і перерасположеніе рядка відбувається, тільки коли ви набираєте hSPCi  або hRETi Якщо ви хочете вставити пробіл або знак нового рядка із забороною переривання рядка, наберіть Cq hSPCi  або Cq Cj (нагадаємо, що знак нового рядка – це насправді control-J) Co також вставляє новий рядок без переривання рядка

Режим Auto Fill добре працює з режимами для мов програмування, так як він робить в нових рядках відступ за допомогою hTABi Якщо рядок, що закінчується коментарем, вийшла занадто довгою, то текст коментаря розбивається на два рядки Можливо, наприкінці першого рядка і на початку другої вставити нові обмежувачі коментарів, таким чином, щоб кожен рядок стала окремим коментарем цим вибором управляє мінлива comment-multi-line (див Розділ 227 [Коментарі], с 219)

Адаптивне заповнення (дивіться наступний розділ) працює з режимом Auto Fill так само, як з явними командами заповнення Воно автоматично бере префікс заповнення з другої або першого рядка абзацу

2 Сторінка містить 96 (72 +25) рядків(Прим перекладача)

Режим Auto Fill НЕ перезаполнять цілі абзаци він може переривати рядки, але не може їх обєднувати Таким чином, редагування в середині абзацу може привести до створення абзацу, який неправильно заповнений Найпростішим способом зробити абзац знову правильно заповненим зазвичай служить застосування явних команди заповнення

Багато користувачів люблять режим Auto Fill і хочуть використовувати його у всіх текстових файлах Розділ про файлах ініціалізації розповідає, як влаштувати, щоб це було для вас постійним Див Розділ 317 [Файл ініціалізації], с 366

2152  Явні команди заповнення

Mq Заповнити поточний абзац (fill-paragraph)

Cx f Встановити стовпець заповнення (set-fill-column)

M-x fill-region

Заповнити кожен абзац в області (fill-region)

M-x fill-region-as-paragraph

Заповнити область, розглядаючи її як один абзац

Ms відцентрувати рядок

Щоб перенаповнений один абзац, використовуйте команду Mq (fill-paragraph) Вона діє на абзац, в якому знаходиться точка, або на абзац після точки, якщо вона стоїть між абзацами Перезаполненіе працює шляхом видалення всіх розривів рядків і вставки нових у тих місцях, де це потрібно

Щоб перенаповнений багато абзаців, використовуйте Mx fill-region, яка ділить об-

ласть на абзаци і заповнює кожен з них

Команди Mq і fill-region використовують для знаходження меж абзацу той же самий критерій, що й Mh (див Розділ 213 [Абзаци], с 183) Для більшого контролю, ви можете використовувати Mx fill-region-as-paragraph, яка перезаполнять все між точкою і влучною Ця команда видаляє в області всі порожні рядки, тому окремі блоки тексту в результаті обєднуються в один блок

Числовий аргумент для Mq призводить до того, що крім заповнення, текст ще й вирівнюється Це означає, що вставляються додаткові пробіли, щоб правий край рядка потрапляв точно в стовпець заповнення Щоб знищити додаткові пробіли, використовуйте Mq без аргументу (Аналогічно і для fill-region) Інший спосіб керувати вирівнюванням або вибрати інші стилі заповнення полягає в застосуванні властивості тексту justification дивіться Розділ 21117 [Формат Вирівнювання], с 202

Команда Ms (center-line) центрує поточний рядок в межах поточного стовпця заповнення З аргументом n, Вона центрує кілька рядків окремо і переходить через них

Максимальна ширина рядка для заповнення міститься в змінній fill-column Зміна значення fill-column робить її локальної для поточного буфера до цього моменту діє значення за замовчуванням Спочатку воно дорівнює 70 Див Розділ 3124 [Локальні змінні], с 350 Найлегша спосіб встановити fill-column – використовувати команду Cx f (set-fill-column) Запущена з числовим аргументом, вона використовує його як нового стовпця заповнення Просто з Cu як аргумент, вона встановлює fill-column відповідно поточної горизонтальній позиції точки

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

Якщо змінна sentence-end-double-space дорівнює nil, то команди заповнення очікують і залишають наприкінці пропозицій тільки один пробіл Зазвичай ця змінна дорівнює t, тому команди заповнення наполягають на постановці двох прогалинах у кінці речення, як пояснено вище Див Розділ 212 [Пропозиції], с 182

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

*

*