Операционная система Linux



              

Изменение текста


В командном режиме нельзя вводить символы в текст с клавиатуры, но изменить текст при этом можно, например, удаляя символы. Чтобы удалить отдельный символ (тот, на котором стоит курсор), достаточно нажать "x" в командном режиме, а чтобы удалить сразу целую строку (естественно, текущую, то есть ту, в которой находится курсор) – "dd". "d" – это сокращение от "delete", удалить, а "dd" – характерный прием Vi: удвоение команды означает, что ее нужно применить к текущей строке.

Из командной строки Vi можно выполнить операцию поиска и замены: для простой строки или для регулярного выражения. Причем синтаксис команды поиска и замены полностью воспроизводит синтаксис потокового редактора sed, о котором уже шла речь в лекции 7:

Это файл для примеров. Пример 1. Моя первая строка в vi... ~ ~ ~ :s/.$/.../

Пример 9.5. Замена по шаблону в Vi (html, txt)

Мефодий хотел заменить в своем файле точки в концах строки многоточиями. Для этого в командном режиме он нажал ":" (вызов командной строки Vi), где набрал команду "s" (сокращение от "substitute", заменить), за которой следует уже знакомое по "sed" выражение "/что_заменить/на_что_заменить/". Только результат получился совсем не тот, какого ожидал Мефодий: заменился на многоточие восклицательный знак последней строки. Не учел он следующего: по умолчанию шаблоны для поиска и замены – это регулярные выражения, то есть "." означает вовсе не точку, а "любой символ". Имея в виду точку, следовало написать "\.". "$", как и ожидал Мефодий, это конец строки. В момент выполнения команды поиска курсор находился в последней строке, в первом совпадении после курсора и была произведена замена.

Форматирование текста – это расстановка символов конца строки, пробелов и табуляций таким образом, чтобы текст хорошо смотрелся на экране терминала. Форматирование вручную крайне неэффективно. В Vim автоматическое форматирование текста (если редактируется программа на каком-либо языке программирования, то с учетом правил этого языка) может происходить прямо в режиме вставки, в режиме вставки же можно изменять отступ текущей строки (по командам "^D" и "^T"). Для выравнивания текста по центру, правому или левому краю команды ":center", ":left" и ":right" соответственно. Эти команды, как и большинство команд командной строки, можно применять к диапазону строк способом, описанным ниже.

Режим ввода не богат специальными командами изменения текста, что и понятно: он предназначен для ввода. Однако в Vim (но не в Vi!) есть некоторые удобства, упрощающие и сам процесс набора. Если слово, которое нужно ввести, уже встречалось в тексте, можно набрать только первые буквы и нажать "^P" ("previous") – Vim попробует сам завершить его. Если Vim не угадал и предложил не то слово, можно продолжить перебирать варианты. Команда "^N" ("next") подставляет слова, которые встречаются ниже по тексту. Подробнее об этой функции можно узнать из руководства по команде ":help ins-completion".

Иногда пользователь, изменив текст, тут же хочет вернуть все обратно. Для этого в Vi предусмотрена команда отмены последнего изменения: "u" в командном режиме (от "undo", отменить). Каким бы сложным, масштабным (и разрушительным) ни было изменение, совершенное последней командой, "u" вернет текст в исходное состояние. Впрочем, саму отмену тоже можно отменить. В классическом Vi доступна отмена только последней выполненной команды, а в Vim отменить можно сколько угодно последних команд, а также повторить их командой "^R".




Содержание  Назад  Вперед