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

Режимы


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

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

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

Во-вторых, у 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" (от "insert" – "вставка"). В этот момент в последней строке появится сообщение о том, что редактор находится в режиме вставки: "--INSERT--" или "--ВСТАВКА--"2), в зависимости от установленного языка системных сообщений.

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

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


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

Пример 9.2. Vim в командном режиме (html, txt)

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

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

Пример 9.3. Vim в режиме вставки (html, txt)

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

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


Содержание раздела