Опубликован: 22.06.2005 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 9:

Текстовые редакторы

Режимы

В Vi проблема разделения команд редактору и вводимого текста решена при помощи режимов: в командном режиме нажатие на любую клавишу – это команда редактору, в режиме вставки нажатие на клавишу приводит к вставке соответствующего символа в редактируемый текст. Поэтому при работе с Vi пользователю всегда нужно обращать внимание на то, в каком режиме находится редактор.

Режимы Vi. Состояния редактора Vi, в которых он по-разному обрабатывает нажатия клавиш. Различают три режима Vi: командный (нажатие любой клавиши считается командой и немедленно исполняется), вставки (нажатие клавиши-печатного символа приводит к вставке этого символа в текст) и командной строки (для ввода длинных команд, отображаемых на экране; ввод завершается Enter ).

Редактор Vi всегда начинает работу в командном режиме. В этом режиме есть два способа отдавать команды редактору. Во-первых, нажатие практически на любую клавишу редактор воспринимает как команду. В Vim, даже в режиме Vi-совместимости, командное значение определено для всех латинских букв (в верхнем и нижнем регистрах ), цифр, знаков препинания и большинства других печатных символов. При нажатии на эти клавиши вводимые команды нигде не отображаются – они просто исполняются. 4Не нужно пытаться вводить текст в командном режиме: поскольку у каждой буквы есть командное значение, результат может быть самым неожиданным!

Во-вторых, у Vi есть своя командная строка: чтобы ее вызвать, нужно ввести в командном режиме " :". В результате в начале последней строки экрана появится двоеточие – это приглашение командной строки. Здесь вводятся более сложные команды Vi, которые включают в себя целые слова (например, имена файлов), причем текст набираемой команды, конечно, отображается. Команды передаются Vi клавишей Enter. В современных версиях Vim с командной строкой можно работать так же, как и в shell: редактировать ее, достраивать команды клавишей Tab, пользоваться историей команд.

Главная команда командной строки Vim – вызов подсистемы помощи " :help Enter ". Двоеточие переводит Vim в режим командной строки, " help " – собственно команда, Enter передает команду. help можно вызывать с аргументом: названием команды или настройки Vim. Vim очень хорошо документирован, поэтому по команде " :help объект " можно получить информацию о любом свойстве Vim, например, команда " :help i " выведет сведения о значении клавиши " i " в командном режиме Vi.

Команда " :set имя_настройки " позволяет настраивать Vim прямо в процессе работы с ним. Например, отдав команду " :set wrap " пользователь тем самым включает настройку " wrap ", что заставляет редактор переносить слишком длинные строки, не умещающиеся в ширину терминала. Выключить эту настройку можно командой " :set nowrap ", так что концы длинных строк исчезнут за правым краем экрана.

Наконец, чтобы ввести текст, нужно перейти из командного режима в режим вставки, нажав клавишу " i " (от " i nsert" – "вставка"). В этот момент в последней строке появится сообщение о том, что редактор находится в режиме вставки: " --INSERT-- " или " --ВСТАВКА-- " 5Если используется не Vim, или настройка showmode по умолчанию запрещена, сообщения может и не быть., в зависимости от установленного языка системных сообщений.

В режиме вставки можно вводить текст, завершая строку нажатием Enter. Однако нужно помнить, что в некоторых (ортодоксальных) версиях Vi в режиме ввода не работают никакие команды перемещения по тексту – здесь можно только набирать. Если вы заметили, что ошиблись в наборе – не нужно сразу перемещать курсор и пытаться исправить ошибку: гораздо удобнее будет внести все исправления потом, в командном режиме, где доступно множество специальных команд быстрого перемещения и замены текста. Чтобы перейти из режима вставки обратно в командный режим, нужно нажать ESC. 6Если Vim пришел в непонятное для вас состояние, нажмите ESC, чтобы вернуться в командный режим (иногда требуется нажать ESC дважды).

Мефодий начал упражняться с Vim на файле примеров:

methody@oblomov:~ $ vi textfile
Это файл для примеров.
Пример 1.
~
~
~
~
~
"textfile" 2L, 33C             1,1  Весь
Пример 9.2. Vim в командном режиме

Vim начал работу, как и положено – в командном режиме. В последней строке содержатся некоторые полезные сведения об открытом файле: его имя, общее количество строк (" 2L "), символов (" 33С "), позиция курсора (" 1,1 " – номер_строки,номер_символа). " Весь " обозначает, что все содержимое файла уместилось на экране терминала. Теперь Мефодий нажмет " i " и введет немного текста:

Это файл для примеров.
Пример 1.
Моя первая строка в vi!
~
~
~
~
-- ВСТАВКА --                     3,24 Весь
Пример 9.3. Vim в режиме вставки

Теперь Vim работает в режиме вставки: в последней строке появилось информационное сообщение об этом. Набрав текст, Мефодий может вернуться в командный режим, нажав ESC (подсказка " --ВСТАВКА-- " при этом исчезнет из последней строки).

На самом деле, из командного режима можно перейти в режим ввода несколькими командами. Разница между ними заключается в том, в какой точке начнется ввод символов. Например, по командам " O " и " o " (" o pen") можно вводить текст с новой строки (до или после текущей), по команде " I " – с начала строки, команды " a " и " A " (" a ppend") ведают добавлением символов (после курсора или в конец строки) и т. п.

Аягоз Имансакипова
Аягоз Имансакипова
Тимур Булатов
Тимур Булатов

С момента выхода курса прошло достаточно много времени, и хотелось бы понимать, насколько курс является актуальным на сегодняшний день.