Редагування малюнків

Щоб створити малюнок, складений з текстових знаків (наприклад зображення ділення регістру на поля як коментар в програмі), використовуйте команду Mx edit-picture для входу в режим Picture

У режимі Picture редагування грунтується на квадрантной моделі тексту, згідно з якою текстові знаки розсипані в області, що тягнеться необмежена вправо і вниз Поняття кінця рядка не існує в цій моделі найбільше, що ви можете сказати, – це де знаходиться останній непорожній знак на рядку

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

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

Один з цих ключів, Cc Cc, досить важливий Часто малюнок – це частина більшого файлу, який зазвичай редагується в якому-небудь іншому основному режимі Команда Mx edit-picture записує імя попереднього основного режиму, і потім ви можете використовувати команду Cc Cc (picture-mode-exit), щоб повернутися в цей режим Якщо Cc Cc не має числового аргументу, вона також знищує прогалини в кінцях рядків

Всі команди, які використовуються в режимі Picture, працюють і в інших режимах (якщо тільки завантажена бібліотека picture), але привязані до ключів тільки в режимі Picture Подальші описи говорять про русі на один стовпчик і так далі, але всі команди режиму Picture звертаються з числовими аргументами так само, як і їх звичайні еквіваленти

Включення режиму Picture викликає пастку picture-mode-hook (див Розділ 3123 [Пастки], с 349)

251  Основи редагування в режимі Picture

Більшість ключів роблять в режимі Picture те ж саме, що вони роблять зазвичай, але в квадрантной стилі Наприклад, Cf перепрівязивается на запуск команди pictureforward-column, яка пересуває точку на один стовпець вправо, вставляючи, якщо це необхідно, пробіл, так що дійсний кінець рядка не грає ролі Cb перепрівязивается для запуску picture-backward-column, яка завжди рухає точку вліво на один стовпець, перетворюючи знак табуляції в кілька прогалин, якщо це необхідно Cn і Cp перепрівязиваются для запуску picture-move-down і picture-move-up, які можуть або вставити прогалини, або перетворити знаки табуляції в прогалини, як необхідно, щоб гарантувати, що точка залишається в тому ж самому стовпці Ce запускає pictureend-of-line, яка пересувається за останній непорожній знак на рядку Тут не треба міняти Ca, так як вибір моделі екрану не впливає на початку рядків

Вставка тексту пристосовується до квадрантной моделі екрану за допомогою використання режиму Overwrite (див Розділ 311 [Другорядні режими], с 341) Самовставляющіеся знаки замінюють існуючий текст, стовпець за стовпцем, а не виштовхують його вправо hRETi  запускає picture-newline, яка просто зрушує на початок наступного рядка, так що новий текст замінить цю рядок

Режим Picture надає стирання тексту замість видалення і знищенняhDELi

(Picture-backward-clear-column) замінює попередній знак пропуском, а не видаляє його

це зміщує точку тому Cd (picture-clear-column) замінює наступний знак або знаки пробілами, але не зрушує точку (Якщо ви хочете перетворити знаки в прогалини і просунутися через них, використовуйте  hSPCi) Ck (picture-clear-line) дійсно знищує вміст рядка, але ніколи не видаляє з буфера знаки перекладу рядка

Щоб зробити дійсну вставку, ви повинні використовувати спеціальні команди Co (picture-open-line) створює порожній рядок після поточної вона ніколи не розбиває рядок C-M-o (split-line) має сенс в режимі Picture, тому вона не змінюється Cj (picture-duplicate-line) вставляє нижче поточного рядка інший рядок з тим же самим вмістом

Щоб зробити в режимі Picture дійсне видалення, використовуйте Cw або Cc Cd (яка визначається для запуску delete-char, як Cd в інших режимах), або за допомогою однієї з команд прямокутника для малюнків (див Розділ 254 [Прямокутники в малюнку], с 265)

252  Управління рухом після вставки

Так як самовставляющіеся знаки в режимі Picture перезаписують і пересувають точку, то немає істотного обмеження на те, як точка буде пересуватися Зазвичай точка переміщається вправо, але ви можете визначити будь-яке з восьми ортогональних або діагональних напрямків для руху після самовставляющегося знака Це зручно для малювання ліній у буфері

C-c < Зрушитися після вставки вліво (picture-movement-left).

C-c> Зрушитися після вставки вправо (picture-movement-right)

Cc ^ Зрушитися після вставки вгору (picture-movement-up)

C-c Cдвінуться після вставки вниз (picture-movement-down)

Cc Зрушитися після вставки вгору і вліво (на північний захід) (picturemovement-nw)

Cc Зрушитися після вставки вгору і вправо (на північний схід) (picturemovement-ne)

Cc / Зрушитися після вставки вниз і вліво (на південний захід) (picture-movement-sw)

Cc \ Зрушитися після вставки вниз і вправо (на південний схід) (picture-movement-se)

Дві команди руху пересувають, грунтуючись на поточному напрямку вставки Команда Cc Cf (picture-motion) пересуває в тому ж самому напрямку, в якому виконується рух після поточної вставки, тоді як Cc Cb (picture-motionreverse) рухає в протилежному напрямку

253  Знаки табуляції в режимі Picture

У режимі Picture передбачено два види дій, подібних табуляції Для табуляції, заснованої на контексті, використовуйте M-hTABi  (Picture-tab-search) Без аргумент вона пересуває в точку під наступний цікавий знак, який слідує за незначущим знаком у попередній непорожній рядку Наступний означає тут зявляється в більш далекій горизонтальній позиції, ніж та, з якою точка відправлялася . З аргументом, як в C-u M-hTABi, Ця команда переходить до наступного такого цікавого знаку в поточному рядку M-hTABi  не змінює текст, вона тільки рухає точку Цікаві знаки визначаються змінної picture-tab-chars, яка повинна задавати набір

знаків Синтаксис цієї змінної схожий на синтаксис, використовуваний всередині [..] в регулярному виразі, але без [ і ]. Її значення за замовчуванням дорівнює ! – ~.

Сама hTABi  запускає picture-tab, яка діє, грунтуючись на встановлених поточних позиціях табуляції це еквівалент tab-to-tab-stop у режимі Picture Зазвичай вона просто рухає точку, але з числовим аргументом вона стирає текст, через який пересунулася

Форми табуляції, засновані на контексті і на позиціях табуляції, обєднуються разом командою Cc hTABi, Picture-set-tab-stops Ця команда встановлює позиції табуляції, які M-hTABвважала б значущими в поточному рядку Використання цієї команди разом з hTABможе дати ефект табуляції, заснованої на контексті Але M-hTABi більш зручна в тих випадках, коли її достатньо

Може виявитися зручним заборонити використання справжніх знаків табуляції в малюнках Наприклад, це перешкодить C-x hTABi  зіпсувати малюнок Ви можете зробити так, встановивши змінну indent-tabs-mode в значення nil Див Розділ 203 [Тільки прогалини], с 179

254  Команди прямокутника в режимі Picture

Режим Picture визначає команди для роботи з прямокутними шматками тексту таким способом, який підходить для квадрантной моделі Стандартні команди для прямокутників також можуть бути корисні (див Розділ 94 [Прямокутники], с 74)

Cc Ck Очистити поточну область-прямокутник (picture-clear-rectangle) З ар-

гументом – видалити її

C-c C-w r    Те ж саме, але спочатку зберегти вміст прямокутника в регістрі r

(picture-clear-rectangle-to-register)

Cc Cy Скопіювати останній знищений прямокутник в буфер шляхом перезапису, при цьому лівий верхній кут знаходиться в точці (picture-yank-rectangle) З аргументом – вставка замість перезапису

C-c C-x r    Те ж саме, але використовувати прямокутник з регістра r  (picture-yankrectangle-from-register)

Команди роботи з прямокутниками для малюнків, це Cc Ck (picture-clearrectangle) і Cc Cw (picture-clear-rectangle-to-register), відрізняються від стандартних команд прямокутника тим, що вони зазвичай очищають прямокутник замість його видалення це аналогічно тому, як в режимі Picture змінюється Cd

Однак, видалення прямокутників може бути зручним і в режимі Picture, тому ці команди видаляють прямокутник, якщо їм переданий числовий аргумент Cc Ck з числовим аргументом або без нього зберігає прямокутник для C-c C-y

Команди режиму Picture для відновлення прямокутників відрізняються від стандартних тим, що вони перезаписують, а не вставляють Точно так же вставка іншого тексту в режимі Picture відрізняється від вставки в інших режимах Cc Cy (picture-yankrectangle) вставляє (за допомогою перезапису) прямокутник, який був знищений самим останнім, в той час як Cc Cx (picture-yank-rectangle-from-register) робить те ж саме для прямокутника, що знаходиться в зазначеному регістрі

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

*

*