В этой главе мы описываем команды, которые особенно полезны в тех случаях, когда вы обнаружили в вашем тексте ошибку сразу после того, как вы ее допустили, или если вы изменили ваши намерения во время сочинения текста.
Наиболее фундаментальная команда для исправления ошибочного
редактирования -- это команда отмены, C-x u или C-_. Эта
команда отменяет одну команду (как правило), часть команды (в случае
query-replace
) или несколько самовставляющихся знаков подряд.
Последовательное повторение команд C-_ или C-x u отменяет
все более ранние изменения до конца доступной информации отмены.
Смотрите раздел Отмена сделанных изменений, для получения дальнейших сведений.
delete-backward-char
).
backward-kill-word
).
backward-kill-sentence
).
Символ DEL (delete-backward-char
) -- наиболее важная
команда исправления. Она удаляет знак перед точкой. Когда ее
используют после самовставляющейся знаковой команды, ее можно
рассматривать как отмену этой команды. Но избегайте ошибочной мысли,
что DEL -- это универсальный способ отменить команду!
Когда ваша ошибка длиннее, чем пара знаков, то может оказаться более удобным использовать M-DEL или C-x DEL. M-DEL уничтожает все знаки назад до начала последнего слова, а C-x DEL уничтожает назад до начала последнего предложения. C-x DEL особенно полезна в случае, когда вы меняете свое мнение о формулировке текста, который вы пишите. M-DEL и C-x DEL записывают уничтоженный текст для восстановления с помощью C-y и M-y. Смотрите раздел Восстановление.
M-DEL часто полезна, даже когда вы набрали всего несколько ошибочных знаков, если вы знаете, что запутались и не уверены точно, что именно вы набрали. В этом случае вы не можете исправлять с помощью DEL, не изучая экран, чтобы увидеть, что же вы сделали. Часто уничтожение всего слова и его повторный набор потребует меньших раздумий.
transpose-chars
).
transpose-words
).
transpose-sexps
).
transpose-lines
).
Распространенная ошибка перестановки двух знаков может быть
исправлена, если они являются соседними, с помощью команды C-t
(transpose-chars
). Обычно C-t переставляет два знака,
стоящие по обе стороны от точки. Когда она дается в конце строки, то
вместо того, чтобы поменять местами последний знак символ и перевод
строки, что было бы бесполезно, C-t переставляет последние два
знака на строке. Так, если вы отловили вашу ошибку перестановки сразу,
вы можете исправить ее просто с помощью C-t. Если вы отловили ее
не так быстро, вы должны перевести курсор назад и установить его между
двумя переставленными знаками. Если вы переставили пробел и последний
знак в слове перед ним, то команды движения по словам служат удобным
способом добраться до этого места. Однако, обратный поиск (C-r)
часто бывает самым лучшим способом. Смотрите раздел Поиск и замена.
M-t (transpose-words
) переставляет слово перед точкой со
словом после нее. Она двигает точку вперед через слово, также перемещая
вперед слово, предшествующее точке или содержащее ее. Знаки пунктуации
между словами не двигаются. Например, `FOO, BAR' превращается
в `BAR, FOO', а не в `BAR FOO,'.
C-M-t (transpose-sexps
) -- аналогичная команда для
перестановки двух выражений (смотрите раздел Списки и s-выражения), а C-x C-t
(transpose-lines
) меняет местами строки. Они работают так же,
как M-t, за исключением определения деления текста на
синтаксические единицы.
Числовой аргумент для команд перестановки работает как счетчик повторений: он указывает команде перестановки передвинуть знак (слово, строку, выражение) перед точкой или содержащий ее через несколько других знаков (слов, строк, выражений). Например, C-u 3 C-t передвигает знак перед точкой вперед через три других знака. Это эквивалентно трехкратному повторению C-t. C-u - 4 M-t двигает слово перед точкой назад через четыре слова. C-u - C-M-t отменила бы действие простой C-M-t.
Числовому аргументу, равному нулю, придается специальное значение (так как в противном случае команды с нулевым счетчиком повторов должны были бы ничего не делать): переставить знак (слово, выражение, строку), оканчивающийся после точки, со знаком (словом, выражением, строкой), оканчивающимся после метки.
Набор слова в неправильном регистре -- очень распространенная ошибка. Поэтому команды изменения регистра M-l, M-u и M-c обладают специальным свойством, когда используются с отрицательным аргументом: они не передвигают курсор. Как только вы увидите, что последнее слово набрано неправильно, вы можете просто изменить в нем регистр и продолжать набор. Смотрите раздел Команды преобразования регистра.
Этот раздел описывает команды для проверки правописания отдельного слова или части буфера. Эти команды работают с программой проверки правописания Ispell, которая не является частью Emacs.
ispell-word
).
ispell-complete-word
).
Режим Flyspell предоставляет полностью автоматический способ проверить правописание во время редактирования в Emacs. Он работает путем проверки слов по мере того, как вы изменяете или вставляете их. Когда он находит нераспознанное слово, он выделяет его. Это не влияет на ваше редактирование, но когда вы видите выделенное слово, вы можете переместиться к нему и исправить. Чтобы включить этот режим в текущем буфере, наберите M-x flyspell-mode.
Когда режим Flyspell выделяет неправильно написанное слово, вы можете щелкнуть на этом слове Mouse-2, чтобы получить меню возможных исправлений и действий. Вы также можете исправить слово, отредактировав его вручную любым способом, который вам нравится.
Другие возможности Emacs по проверке правописания проверяют или ищут слова, когда вы даете явную команду для этого. Проверка всего или части буфера полезна, когда у вас есть текст, который был написан не в данном сеансе Emacs и может содержать любое число ошибок.
Для проверки орфографии в слове вокруг точки или после нее и,
возможно, для его исправления, используйте команду M-$
(ispell-word
). Если слово написано неправильно, эта команда
предложит вам несколько вариантов действий.
Чтобы проверить правописание во всем текущем буфере, запустите команду M-x ispell-buffer. Используйте M-x ispell-region для проверки только текущей области. Чтобы проверить орфографию в почтовом сообщении, которое вы пишите, используйте M-x ispell-message; она проверяет весь буфер, но не трогает материал, в котором сделан отступ, или который процитирован из других сообщений.
Каждый раз, когда эти команды встречают неправильно написанное слово, они спрашивают вас о дальнейших действиях. Они показывают список вариантов, обычно включающий несколько "похожих слов" -- которые близки по написанию с проверяемым словом. Затем вы должны напечатать один знак. Вот допустимые варианты ответа:
query-replace
,
чтобы вы могли заменить его во всех других местах буфера, если хотите.
Команда ispell-complete-word
, которая привязана к ключу
M-TAB в режиме Text и родственных с ним режимах, показывает
список завершений, основываясь на исправлении орфографии. Вставьте
начало слова, а затем напечатайте M-TAB; эта команда
отобразит окно со списком завершений. Чтобы выбрать одно из
перечисленных завершений, щелкните на нем Mouse-2 или переместите
к нему курсор и нажмите RET. Смотрите раздел Режим Text.
Однажды будучи запущенным, подпроцесс Ispell продолжает работать (ожидать какой-либо работы), чтобы последующие команды проверки правописания завершались быстрее. Если вы хотите избавиться от процесса Ispell, воспользуйтесь M-x ispell-kill-ispell. Обычно это не так необходимо, поскольку этот процесс не занимает время, когда вы не проводите проверку правописания.
Ispell использует два словаря: стандартный и ваш личный. Переменная
ispell-dictionary
задает имя используемого файла стандартного
словаря. Значение nil
говорит, что нужно использовать словарь по
умолчанию. Команда M-x ispell-change-dictionary устанавливает эту
переменную и затем перезапускает подпроцесс Ispell, чтобы он использовал
другой словарь.