12.3. Проверка правописания
12.3. Проверка правописания
Прежде, чем перейти к рассмотрению текстовых редакторов под Linux, необходимо кратко рассмотреть программу проверки правописания ispell. Дело в том, что проверка правописания - это одна из функций, которую должен иметь современный текстовый редактор, и многие из них подключают для выполнения этой функции именно ispell (или aspell). Существует русифицированный вариант этой программы, которой был разработан Владимиром Рогановым и Константином Книжником.
Установка ispell состоит из двух этапов: вначале надо установить саму программу, а затем установить словарь русского языка. Для установки самой программы ispell я воспользовался пакетом ispell-3.1.20-23.i386.rpm, а для его русификации - пакетом ispell-russian-3.1.20-23.i386.rpm. Оба пакета входили в состав дистрибутива Black Cat Linux 6.02. Для установки первого пакета достаточно дать команду
[root]# rpm -i ispell-3.1.20-23.i386.rpm
а для второго - команду
[root]# rpm -i ispell-russian-3.1.20-23.i386.rpm.
После этого в каталоге /usr/lib/ispell появятся файлы русского словаря russian.aff и russian.hash (остальные словари, например, немецкий) можно удалить, если вы не собираетесь производить проверку правописания на этих языках.
Для проверки текста теперь достаточно дать команду следующего вида:
[user]$ ispell -drussian edit.htm
Естественно, имя файла edit.htm здесь взято для примера; вы должны подставить имя того файла, который вы хотите проверить, причем файл должен находиться в текущем каталоге, иначе надо указать полное имя файла с указанием пути.
Рис. 12.6. Проверка правописания с помощью ispell
Принцип работы программы ispell очень прост: каждое встречающееся в файле слово должно иметься в словаре программы. Если слово в словаре не найдено, считается, что найдена ошибка, и на экран выводится сообщение, пример которого можно увидеть на рисунке 12.5. В самой верхней строке выведено обнаруженное ошибочное слово и имя проверяемого файла. Ниже выведено несколько строк (число можно задать) из этого файла, содержащих обнаруженную ошибку. Если в словаре обнаружены слова, похожие на ошибочное, то они выводятся ниже (с порядковыми номерами). Далее следует строка подсказки и командная строка программы.
В командной строке в нижней части можно использовать следующие клавиатурные команды.
Таблица 12.2. Команды замены в программе ispell.
Команда Выполняемое действие ‹R› Заменить ошибочное слово (программа предложит набрать правильное слово в нижней строке экрана) ‹пробел› Пропустить данное вхождение слова ‹A› Пропустить все вхождения данного слова в текущей сессии работы с программой ‹I› Пропустить это слово и включить его в персональный словарь (который хранится в файле .ispell_russian в домашнем каталоге пользователя ‹U› То же самое, только слово записывается в нижнем регистре (маленькими буквами) ‹Q› Немедленный выход из программы (вначале запрашивается подтверждение, а проверяемый файл остается не измененным; сделанные замены не проводятся) ‹X› Прервать проверку, записать проведенные изменения и выйти из программы ‹!› Временный выход в оболочку shellЕсли в качестве команды ввести порядковый номер одного из предложенных программой вариантов замены, то программа заменит ошибочное слово на слово, соответствующее набранному порядковому номеру варианта замены. Только номера надо вводить в точности так, как они предлагаются программой, т. е. с предшествующими значащим цифрам нулями (если они есть). И набирать номер надо, не вводя предварительно команду ‹R›, иначе ошибочное слово будет заменено просто на соответствующую цифру.
Программа ispell, как уже упоминалось, используется в качестве модуля проверки правописания во многих текстовых редакторах, например, в Emacs она обеспечивает проверку правописания непосредственно в процессе подготовки текста.
Если подумать о принципе проверки, заложенном в программу, легко понять, что с ее помощью можно проверить только очень ограниченный класс ошибок, а именно, орфографические ошибки, состоящие в неправильном написании слов. Очевидно, что не будут обнаружены никакие ошибки в грамматических конструкциях, согласовании слов и т. д.
Еще один недостаток программы, с которым я столкнулся, проявляется в тех случаях, когда на текущем диске мало свободного места, меньше, чем необходимо для записи исправленного файла. Программа в таком случае записывает только ту часть файла, которая поместилась, и теряет все остальное. Никаких предупреждений при этом не выдается.
Если недостатка дискового пространства нет, то после внесения исправлений программа записывает исправленную версию файла, а исходный файл сохраняет, добавив к его имени расширение .bak.