Знищення і переміщення тексту – ЧАСТИНА 1

Знищення означає стирання тексту і запис його в список знищень, з якого він може бути отриманий за допомогою відновлення Деякі системи, що стали недавно популярними, використовують для позначення цих операцій терміни вирізка і вставка.

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

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

Щож текст в одному буфері і відновити його в іншому

91  Видалення і знищення

Більшість команд, які стирають текст з буфера, зберігають його в списку знищень, щоб ви могли перенести або скопіювати його в інші частини буфера Ці команди відомі як команди знищення Решта команд, що стирають текст, який не записують його в список знищень вони відомі як команди видалення (Така відмінність робиться тільки для стирання тексту в буфері) Якщо ви знищили або видалили текст помилково, ви можете використовувати команду Cx u (undo) для скасування змін (див Розділ 44 [Скасувати], с 37)

Команди видалення включають Cd (delete-char) і hDELi  (Delete-backward-char), які видаляють тільки один знак за один раз, і ті команди, які видаляють тільки пробіли або обмежувачі нового рядка Команди, які можуть знищити істотну кількість нетривіальних даних, зазвичай є командами знищення Імена команд і їх опису використовують слова kill і delete, щоб пояснювати що вони роблять

911  Видалення

Cd Видалити наступний знак (delete-char)

hDELi              Видалити попередній знак (delete-backward-char)

M-\ Видалити всі прогалини і табуляцію навколо точки (delete-horizontal-space)

M-hSPCi         Видалити прогалини і табуляцію навколо точки, залишаючи один пробіл (just-onespace)

Cx Co Видалити порожні рядки навколо поточного рядка (delete-blank-lines)

M-^ Обєднати два рядки, видаляючи знаходиться між ними обмежувач нового рядка і будь відступ, наступний за ним (delete-indentation)

Самі основні команди видалення – це Cd (delete-char) і hDEL(Delete-backwardchar) Cd видаляє знак після крапки, над яким знаходиться курсор Крапка не пересувається hDELi  видаляє знак перед курсором і пересуває точку тому Обмежувач нового рядка може бути видалений точно також, як і будь-який інший знак в буфері Видалення обмежувача нового рядка обєднує два рядки Фактично C-d і hDELне завжди є командами видалення якщо їм дати аргумент, вони знищують, так як цим способом вони можуть стерти вже більше одного знака

Інші команди видалення – це ті, що видаляють тільки пробільні знаки: прогалини,

табуляцію і обмежувачі нових рядків M-\ (delete-horizontal-space) видаляє всі

пробіли і символи табуляції перед і після точки M-hSPC(Just-one-space) робить те ж саме, але залишає одиночний пробіл після крапки, незалежно від кількості прогалин, що існували раніше (навіть якщо воно дорівнювало нулю)

Cx Co (delete-blank-lines) знищує всі порожні рядки після поточного рядка Якщо поточна рядок порожня, то також знищує всі порожні рядки, попередні поточному рядку (залишаючи один порожній рядок, поточну)

M-^ (delete-indentation) обєднує поточний рядок і попередню їй, видаляючи обмежувач нового рядка і всі навколишні прогалини, зазвичай залишаючи одиночний пробіл Див Глава 20 [Відступи], с 177

912  Знищення рядків

Ck Знищити залишок рядка, або одну чи кілька рядків (kill-line)

Найпростішою командою знищення є Ck Якщо вона дається на початку рядка, то знищує весь текст на рядку, залишаючи її порожньою Якщо команда дана на порожньому рядку, то знищує весь рядок, включаючи її обмежувач Щоб знищити непорожню рядок цілком, перейдіть в її початок і натисніть Ck двічі

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

Якщо Ck буде присвоєно позитивний аргумент, вона знищить рівно стільки рядків разом з наступними за ними обмежувачами (проте, текст на поточному рядку перед точкою зберігається) З негативним аргументом −n вона знищує n рядків, що передують поточної (разом з текстом на поточному рядку перед крапкою) Таким чином, Cu 2 Ck на початку рядка знищує дві попередні рядки

Ck з аргументом, рівним нулю, знищує текст перед точкою на поточному рядку

Якщо змінна kill-whole-line не дорівнює nil, Ck на самому початку рядка знищує всю цю рядок, включаючи наступний переклад рядка Ця змінна зазвичай дорівнює nil

913  Інші команди знищення

Cw Знищити область (від точки до мітки) (kill-region)

Md Знищити слово (kill-word) Див Розділ 211 [Слова], с 181

M-hDELi         Знищити попереднє слово (backward-kill-word)

C-x hDELi     Знищити назад до початку пропозиції (backward-kill-sentence) Див

Розділ 212 [Пропозиції], с 182

Mk Знищити до кінця пропозиції (kill-sentence)

CMk Знищити s-вираз (kill-sexp) Див Розділ 222 [Списки], с 206

Mz знак Знищити аж до наступного появи знака (zap-to-char)

Cw (kill-region) – дуже поширена команда знищення, яка знищує все між точкою і влучною За допомогою цієї команди ви можете знищити будь-яку безперервну послідовність знаків, якщо спочатку встановіть мітку в одному її кінці і підете в інший кінець

Зручний спосіб знищення – це знищення обєднане з пошуком: Mz

(Zap-to-char) зчитує знак і знищує від точки аж до наступного появи

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

Можуть знищуватися інші синтаксичні одиниці: слова, за допомогою M-hDELi  і Md (див Розділ 211 [Слова], с 181) s-вирази, за допомогою CMk (див Розділ 222 [Списки], с 206) та пропозиції, за допомогою C-x hDELі Mk (див Розділ 212 [Пропозиції], с 182)

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

92  Відновлення

Відновлення повертає назад текст, який був раніше знищений Це те ж саме, що в інших системах називається вставкою. Звичайний спосіб копіювання або переміщення тексту – знищити його, а потім відновити один або кілька разів

Cy Відновити останній знищений текст (yank)

My Замінити тільки що відновлений текст попереднім шматком знищити-

женного тексту (yank-pop)

Mw Зберегти область як останній знищений текст без фактичного уні-

чтоженія (kill-ring-save)

CMw Додати наступне знищення до останнього шматка знищеного тексту

(append-next-kill)

921  Список знищень

Весь знищений текст записується в кільцевої список знищень, список блоків тексту, який був знищений Існує тільки один список знищень, що використовується у всіх буферах, таким чином ви можете знищити текст в одному буфері і відновити його в іншому Це звичайний спосіб переміщення тексту з одного файлу в іншій (Див Розділ 93 [Накопичення тексту], с 73, для отримання інформації про інші способи)

Команда Cy (yank) знову вставляє текст, знищений самим останнім Вона залишає курсор в кінці тексту, мітка встановлюється на його початку Див Глава 8 [Позначка], с 63

Cu Cy залишає курсор перед текстом і встановлює мітку після нього Це відбувається, тільки якщо аргумент заданий за допомогою просто Cu Будь-який інший вид аргументу, включаючи Cu і цифри, позначають відновлення знищеного раніше (див Розділ 923 [Раніше знищене], с 72)

Якщо ви хочете скопіювати блок тексту, ви можете використовувати Mw (kill-ringsave), яка копіює область в список знищень без видалення його з буфера Це приблизний еквівалент Cw, за якої слід Cx u, за винятком того, що Mw не змінює історію відновлень і не змінює на час екран

922  Додавання знищень

Зазвичай кожна команда знищення додає новий блок в список знищень Однак, дві або більше команди знищення поспіль обєднують текст в єдиний елемент, так що одиночна Cy візьме весь його назад таким, яким він був перед знищенням

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

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

*

*