Підтримка різних мов – ЧАСТИНА 2

Іноді корисно зупинити дію методу введення, щоб тільки що введені вами знаки не зливалися з подальшими Наприклад, у методі введення latin-1-postfix послідовність e комбінується в e з акцентом Що якщо ви хотіли ввести їх як роздільні знаки

Один спосіб – набрати акцент двічі це спеціальний засіб для введення букви і акценту роздільно Наприклад, e ‘ дає два знаки e’. Інший спосіб – набрати після

‘E ще одну букву, що не скомбінуйте з нею, і відразу видалити її Наприклад, ви могли б набрати ee hDEL, Щоб отримати роздільні e і”.

Ще один спосіб, більш загальний, але не такий легкий для набору, – використовувати між двома знаками C-\ C-\, щоб запобігти їх комбінування Це команда C-\ (toggle-input-method), застосована двічі

C-\ C-\ особливо корисна в нарощуються пошуку, оскільки вона зупиняє сподівання-

ня подальших знаків упорядкування і починає пошук того, що ви вже набрали

Змінні input-method-highlight-flag і input-method-verbose-flag керують тим, як методи введення пояснюють, що відбувається Якщо input-method-highlight-flag не дорівнює nil, часткова послідовність підсвічується в буфері Якщо input-methodverbose-flag не дорівнює nil, в луна-області показується список можливих наступних знаків (але не в тому випадку, коли ви знаходитесь в мінібуфер)

185  Вибір методу введення

C-\ Включає або вимикає використання обраного методу введення

C-x hRETC-\ метод hRETi

Вибирає новий метод введення для поточного буфера

C-h I метод hRETi

C-h C-\ метод hRETi

Описує метод введення метод (describe-input-method) За замовчуванням, вона описує поточний метод введення (якщо він є) Такий опис має давати вам усі подробиці про те, як використовувати будь-який конкретний метод введення

M-x list-input-methods

Виводить перелік всіх підтримуваних методів вводу

Щоб вибрати метод введення для поточного буфера, використовуйте Cx hRETC-\ (setinput-method) Ця команда зчитує імя методу введення з мінібуфера імя зазвичай починається з мовного середовища, для якої цей метод призначався У змінній current-input-method записується, який метод введення був вибраний

Методи введення використовують для позначення знаків, що не входять в ASCII, різні послідовності ASCII-знаків Іноді буває корисно тимчасово вимкнути метод введення Щоб зробити це, наберіть C-\ (toggle-input-method) Щоб знову задіяти метод введення, наберіть C-\ знову

Якщо ви надрукуєте C-\, але метод введення поки не обраний, вас попросять вказати його

Це має той же ефект, що і використання Cx hRETC-\ для завдання методу введення

Вибір мовного середовища визначає метод введення, використовуваний за замовчуванням Тоді ви можете вибрати його в поточному буфері, набираючи C-\ Мінлива default-input-method задає метод введення, який приймається за замовчуванням (nil означає, що такого немає)

Деякі методи введення для алфавітних систем письма працюють шляхом відображення клавіатури для емуляції різних розкладок, часто використовуваних для цих систем письма Як правильно зробити це відображення, залежить від дійсної розкладки вашої клавіатури Щоб вказати її, використовуйте команду Mx quail-set-keyboard-layout

Щоб переглянути перелік всіх підтримуваних методів введення, наберіть Mx list-input-methods Перелік повідомляє відомості про кожен метод введення, включаючи рядок, що позначає цей метод введення в рядку режиму

186  Однобайтние і багатобайтові НЕ-ASCII-знаки

Коли включені багатобайтові знаки, знаки з кодами від 0240 (вісімкове) до 0377 (вісімкове) насправді неприпустимі в буфері Допустимі друковані знаки, що не входять в ASCII, мають коди, що починаються від 0400

Якщо ви набираєте самовставляющійся знак в неприпустимому діапазоні від 0240 до 0377, Emacs припускає, що ви мали намір використовувати один з наборів знаків Latin-n, І

перетворює його в код Emacs, що представляє цей знак Latin-n Ви вказуєте, який набір знаків ISO потрібно для цього застосовувати, своїм вибором мовного середовища (дивіться вище) Якщо ви не вказали свій вибір, за замовчуванням використовується Latin-1

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

187  Системи кодування

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

Emacs присвоює кожній системі кодування своє імя Більшість систем кодування використовуються для однієї мови, і імя такої системи кодування починається з імені мови Деякі системи кодування використовуються для декількох мов їх імена зазвичай починаються з iso. Є також спеціальні системи кодування noconversion, raw-text і emacs-mule, які не роблять перетворення друкованих знаків взагалі

Крім перетворень між різними уявленнями НЕ-ASCII-знаків, система кодування може виробляти перетворення послідовності кінець-рядки. Emacs працює з трьома різними угодами про те, як розділяти рядки у файлі: перекладом рядки, поверненням каретки і перекладом рядки і просто поверненням каретки

C-h C кодування hRETi

Описує систему кодування кодування

C-h C hRETi

Описує систему кодування, яка використовується в даний момент

M-x list-coding-systems

Виводить перелік всіх підтримуваних систем кодування

Команда Ch C (describe-coding-system) виводить відомості про конкретну систему кодування Ви можете задати імя системи кодування як аргумент інакше, з порожнім аргументом, вона опише системи кодування, вибрані в даний момент для різних цілей як у поточному буфері, так і прийняті за умовчанням, а також перелік пріоритетів для розпізнавання систем кодування (див Розділ 188 [Розпізнавання кодування], с 166)

Щоб вивести перелік всіх підтримуваних систем кодування, наберіть Mx list-coding-systems Цей перелік дає інформацію про кожній системі кодування, включаючи букву, що позначає її в рядку режиму (Див Розділ 13 [Рядок режиму], с 25)

Кожна система кодування з перерахованих у цьому списку – окрім no-conversion, що означає не робити ніяких перетворень – вказує, як перетворювати друковані знаки і чи потрібно це робити, але залишає вибір перетворення кінця-рядки до рішення, заснованому на вмісті файлу Наприклад, якщо виявилося, що у файлі для розділення рядків використовується послідовність повернення каретки-переклад рядка, буде використано перетворення з кінця-рядки DOS

Кожна з перерахованих систем кодування має три варіанти, які точно ука-

зують, що робити для перетворення кінця-рядки:

…-Unix Не проводити перетворення кінця-рядки передбачається, що у файлі для розділення рядків використовується переклад рядка (Ця угода зазвичай використовується в системах Unix і GNU)

…-Dos Припускати, що у файлі для розділення рядків використовується повернення каретки-переклад рядка, і робити відповідне перетворення (Ця угода зазвичай використовується в системах Microsoft2 )

…-Mac Припускати, що у файлі для розділення рядків використовується повернення каретки, і робити відповідне перетворення (Ця угода зазвичай використовується в системі Macintosh)

Ці варіанти систем кодування опускаються для стислості у виведенні list-codingsystems, оскільки вони повністю передбачувані Наприклад, система кодування isolatin-1 має варіанти iso-latin-1-unix, iso-latin-1-dos і iso-latin-1-mac

Система кодування raw-text хороша для файлів, які містять в основному ASCII-текст, але можуть включати байти зі значеннями вище 127, які не призначалися для кодування не-ASCII-знаків З raw-text, Emacs копіює ці байти без змін і, щоб вони інтерпретувалися правильно, встановлює в поточному буфері enable-multibyte-characters рівний nil raw-text обробляє перетворення кінця-рядки звичайним способом, грунтуючись на побачених даних, і має три звичайних варіанту для вказівки потрібного перетворення кінця-рядки

На противагу цьому, система кодування no-conversion не ставить ніякого перетворення кодів знаків взагалі – ні для значень байт, що виходять за межі ASCII, ні для кінця-рядки Це корисно для зчитування і запису двійкових файлів, tar-файлів та інших, які потрібно переглядати буквально Вона теж встановлює enable-multibyte-characters в значення nil

Найпростіший спосіб відредагувати файл без будь-яких перетворень – скористатися командою Mx find-file-literally Вона використовує no-conversion, а також пригнічує інші засоби Emacs, які могли б перетворити вміст файлу до того, як ви його побачите Див Розділ 142 [Звернення], с 106

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

188  Розпізнавання систем кодування

Найчастіше Emacs може розпізнати, яку систему кодування він повинен вико-

вать для будь-якого даного файлу, – якщо ви вказали свої переваги

Деякі системи кодування можуть бути розпізнані або виділені по тому, які послідовності знаків зявляються серед даних Однак, є системи кодування, які не можуть бути розрізнені, навіть потенційно Наприклад, немає способу відрізнити Latin-1 від Latin-2 вони використовують одні й ті ж значення байт з різними смислами

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

*

*