Рішення частих проблем – ЧАСТИНА 1

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

321  Вихід та аварійне завершення

C-g

C-hBREAK(MS-DOS)

Вихід Скасувати виконувану або частково набрану команду

C-] Перервати найглибший рівень рекурсивного редагування і скасувати команду, яка його запустила (abort-recursive-edit)

hESCi hESCi hESCi

Вихід або переривання, залежно від того, що підходить у цей момент

(keyboard-escape-quit)

M-x top-level

Закінчити всі працюючі в даний момент рівні рекурсивного редагує-

вання

Cx u Скасувати раніше зроблене зміна у вмісті буфера (undo)

Існує два способи скасування команд, виконання яких не закінчилося: вихід за допомогою С-g і переривання за допомогою C-] або Mx top-level Вихід скасовує частково набрану команду або команду, яка вже виконується Переривання виходить з одного рівня рекурсивного редагування і скасовує команду, яка запустила це рекурсивне редагування (Див Розділ 3012 [Рекурсивне редагування], с 338)

Вихід за допомогою Cg використовується для того, щоб звільнитися від частково набраної команди чи числового аргументу, який вам не потрібен Вона також відносно безпечно зупиняє виконання вже працюючої команди, так що ви можете використовувати її, якщо випадково задасте команду, що вимагає багато часу Зокрема, вихід з знищення безпечний або ваш текст повністю залишиться в буфері, або повністю потрапить в список знищень (або буде і там, і там) Вихід з наращиваемого пошуку виконує спеціальні дії, документовані окремо в загальному випадку, щоб вийти з пошуку, може знадобитися два послідовних Cg (див Розділ 121 [нарощуються пошук], с 87)

У MS-DOS клавішею виходу, подібної Cg, служить C-hBREAKi Так зроблено з тієї причини, що в MS-DOS неможливо зареєструвати натискання Cg під час роботи команди між інтеракція з користувачем Навпаки, зареєструвати C-hBREAKможна завжди Див Розділ C1 [Клавіатура і миша в MS-DOS], с 403

Робота Cg полягає в установці змінної quit-flag в значення t, як тільки Cg був набраний Emacs Lisp часто перевіряє цю змінну і виходить, якщо вона не дорівнює nil С-g дійсно виконується як команда, тільки якщо ви набирали її в той час, коли Emacs очікує введення

Якщо ви вийдіть за допомогою С-g другий раз до того, як перша Cg була пізнана, то ви активізуєте засіб аварійного виходу і повертаєтеся в оболонку Див Розділ 3228 [Аварійний вихід], с 374

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

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

Переривання за допомогою C-] (abort-recursive-edit) використовується для того, щоб вийти з одного рівня рекурсивного редагування і скасувати команду, яка його запустила Вихід за допомогою Cg не чинить цього і не може цього робити, тому що він використовується для скасування частково набраної команди всередині поточного рівня рекурсивного редагування Обидві ці операції корисні Наприклад, якщо ви знаходитесь в рекурсивному редагуванні і набираєте Cu 8, щоб ввести числовий аргумент, то ви можете скасувати цей аргумент за допомогою Cg і залишитися в рекурсивному редагуванні

Команда hESCi hESCi hESCi  (Keyboard-escape-quit) може вчинити і вихід, і переривання Цей ключ був визначений, тому що в багатьох програмах для PC для виходу використовується hESCi Він може скасувати числовий аргумент, очистити виділену область або вийти з заміни з підтвердженням, як Cg Він також може перервати роботу мінібуфера або одного рівня рекурсивного редагування, як C-] Він також може скасувати розбивка фрейма на кілька вікон, як Cx 1 Єдине, що він не може зробити – зупинити працюючу команду Причина цього в тому, що цей ключ виконується як звичайна команда, і Emacs не помічає її, поки не буде готовий прийняти нову команду

Команда Mx top-level еквівалентна достатній кількості команд C-], щоб перервати всі рівні рекурсивного редагування, в яких ви перебуваєте C-] дає вам можливість покинути один рівень за один раз, а Mx top-level покидає всі рівні відразу Як C-], так і Mx top-level схожі на всі інші команди і не схожі на Cg тим, що вони діють, тільки коли Emacs готовий для прийому команди C-] – звичайний ключ і має сенс тільки завдяки привязці в таблиці ключів Див Розділ 3012 [Рекурсивне редагування], с 338

Cx u (undo), строго кажучи, не є способом скасування команди, але ви можете представляти її як скасування команди, вже закінчила виконання Див Розділ 44 [Скасувати], с 37

322  Що робити з неполадками в Emacs

Цей розділ описує різні умови, за яких Emacs відмовляється працювати правильно, і розповідає, як розпізнати і виправити проблеми

3221  Якщо hDELi  не видаляти

Якщо ви виявили, що hDELi  видає довідку, як Control-h, а не видаляє знак, це означає, що ваш термінал посилає невірний код для hDELi Ви можете впоратися з цією проблемою, змінивши таблицю перетворення клавіатури (див Розділ 315 [Переклад клавіатури], с 365)

3222  Рівні рекурсивного редагування

Рівні рекурсивного редагування є важливим і корисним засобом Emacs,

але тим користувачам, хто їх не розуміє, вони можуть здатися збоєм в роботі Emacs

Якщо в рядку режиму навколо круглих дужок є квадратні дужки [..], які містять імена головного і другорядних режимів, то це означає, що ви увійшли в рівень рекурсивного редагування Якщо ви не хотіли цього чи не розумієте, що це означає, то ви повинні просто залишити цей рівень рекурсивного редагування Щоб

це зробити, наберіть Mx top-level Це називається поверненням до верхнього рівня Див

Розділ 3012 [Рекурсивне редагування], с 338

3223  Сміття на екрані

Якщо дані на екрані виглядають неправильно, то перше, що треба зробити, – подивитися, чи дійсно текст неправильний Наберіть Cl, щоб весь екран повністю перемалювати Якщо він після цього зявиться в правильному вигляді, то несправність була в попередньому відновленні екрана (Якщо ні, дивіться Розділ 3224 [Сміття у тексті], с 373)

Проблеми з оновленням зображення часто виникають через неправильну записи termcap для використовуваного вами терміналу Файл etc / TERMS в дистрибутиві Emacs містить виправлення для відомих проблем такого роду INSTALL містить в одному зі своїх розділів загальні рекомендації з цих проблем Досить імовірно, що просто недостатньо наповнення деяких операцій відображення Щоб перевірити, чи не цього сорту у вас проблема, спробуйте запустити Emacs на іншому терміналі, зробленому іншим виробником Якщо неполадки зазвичай трапляються на певному виді терміналів, а на інших немає, то це відбувається, ймовірно, через неправильну записи в termcap, хоча це також може бути результатом помилки в Emacs, яка зявляється на терміналах з якимись особливостями або яким не вистачає специфічних засобів

3224  Сміття в тексті

Якщо Cl показує, що текст неправильний, спробуйте скасувати в ньому зміни, використовуючи Cx u до тих пір, поки вона не поверне текст до стану, який ви вважаєте правильним Крім того, спробуйте Ch l, щоб знайти команду, набір якої призвів до поміченим результатами

Якщо здається, що на початку або кінці буфера пропав великий шматок тексту, перевірте наявність слова Narrow в рядку режиму Якщо воно там є, то текст все ще присутній в буфері, але він позначений як виходить за кордону доступності Щоб зробити його знову видимим, наберіть Cx n w Див Розділ 308 [Звуження], с 335

3225  Мимовільний вхід в нарощуваний пошук

Якщо Emacs мимовільно показує I-search: внизу екрану, то це означає, що термінал посилає Cs і Cq через погано розробленого протоколу управління потоком даних типу xon / xoff

Якщо це з вами сталося, кращим виходом буде постаратися встановити термінал в такий режим, де він не буде використовувати керування потоком даних, або даючи йому достатню заповнення, щоб він ніколи Не посилав C-s (Один зі способів збільшити величину заповнення – привласнити змінної baud-rate більшого значення Значення цієї змінної позначає швидкість виведення терміналу, виражену в звичайних одиницях, бодах)

Якщо вам не вдалося вимкнути керування потоком, тоді найкраще буде сказати Emacs впоратися з ним самому Щоб зробити це, викличте функцію enable-flowcontrol

Як правило, зустрічаються певні типи терміналів, на яких ви змушені використовувати керування потоком Використовуючи enable-flow-control-on, ви можете зручно запросити використання управління потоком тільки для цих типів терміналів Наприклад, якщо ви виявили, що повинні використовувати керування потоком на терміналах VT-100 і H19, помістіть в ваш файл . Emacs наступне:

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

*

*