Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Назад Просто о Vim Вперед

Vim : Режимы

Введение

У нас была первая встреча с режимами в предыдущей главе. Теперь, давайте изучим концепцию режимов детальнее и узнаем, что мы можем сделать в каждом режиме.

Типы режимов

Есть три основных режима в Vim - нормальный, вставки и визуальный.

Нормальный режим — это тот, в котором вы можете выполнять команды. Это основной режим, в который переходит Vim после запуска.

Режим вставки — это режим, в котором вы можете набирать нужный текст.

Визуальный режим — это где вы визуально выбираете часть текста, которую нужно обработать командой/операцией.

Нормальный режим

Изначально, вы попадете в нормальный режим. Давайте посмотрим что вы можете делать в этом режиме.

Наберите :echo "hello world" и нажмите enter. Вы увидите знаменитые слова hello world. То, что вы только что сделали, это запустили команду Vim, называемую :echo, и вы добавили текст к ней, который и был успешно выведен.

Наберите /hello и нажмите клавишу enter. Vim будет искать эту фразу и перейдет к первому её вхождению.

Это было только два простых примера команд, доступных в нормальном режиме.

Мы рассмотрим много других команд в последующих главах.

Как использовать помощь

Почти так же важно, как знать о нормальном режиме, это уметь пользоваться командой :help. Здесь вы можете больше узнать о командах, доступных в Vim.

Запомните, вам не нужно знать все команды, доступные в Vim, достаточно просто знать, где найти их, когда они вам понадобятся. Например, смотрим :help usr_toc дает нам оглавление справочного руководства. Вы можете посмотреть :help index для поиска для поиска определенной темы, интересной вам, для примера, запустите /insert mode для просмотра информации относительно режима вставки.

Если вы не можете запомнить эти две темы, нажмите F1 или просто запустите :help.

Режим вставки

Когда Vim запускается, он открывается в нормальном режиме, вы можете использовать i для перехода в режим вставки.

Есть и другие способы переключения из нормального режима в режим вставки, такие как:

Запустите :e dapping.txt

Нажмите i

Введите следующий обзац (включая все опечатки и ошибки, мы исправим их позже): means being determined about being determined and being passionate about being passionate

Нажмите клавишу <Esc> для переключения назад в нормальный режим.

Запустите :w

Упс, мы, кажется, упустили слово в начале строки, а наш курсор находится в конце строки, что нам теперь делать?

Наиболее эффективным способом было бы перейти в начало строки и вставить пропущенное слово? Должны ли мы использовать мышь, чтобы переместить курсор в начало строки? Должны ли мы использовать клавиши со стрелками для перемещения к началу строки? Должны ли мы нажать клавишу home и затем нажать i для переключения снова в режим вставки?

Оказывается, что наиболее эффективным способом будет нажатие I (верхний регистр I):

Нажмите I

Напишите Dappin

Нажмите клавишу <Esc> для переключения назад в нормальный режим.

Обратите внимание, что мы использовали другой ключ для переключения в режим вставки, его особенностью является то, что он перемещает курсор в начало строки, а затем переключает в режим вставки.

Также обратите внимание, это важно, что нужно вернуться в нормальный режим, как только вы закончите вводить текст. Эта привычка будет полезна, потому что большинство ваших работ (после начальной фазы написания статьи) будет проводиться в нормальном режиме - где происходят все важные действия: перезапись, редактирование, полировка.

Теперь, давайте возьмем другой вариант команды i. Обратите внимание, что нажатие i поместит курсор на предыдущую позицию и включит режим вставки. Чтобы разместить курсора после текущей позиции, нажмите a ('a'fter).

Нажмите a

Наберите g (для завершения слова "Dapping")

Нажмите <Esc> для переключения в нормальный режим

Как и в отношениях между i и I ключами, существует связь между ключами a и A - если вы хотите добавить текст в конце строки, нажмите клавишу A.

Нажмите A

Наберите . (поставьте точку для завершения предложения)

Нажмите <Esc> для переключения в нормальный режим

Подведем итог, что мы узнали о четырех клавишах:

Команда

Действие

i

вставить текст до курсора

I

вставить текст с начала строки

a

добавить текст после курсора

A

добавить текст с конца строки

Обратите внимание, как команды в верхнем регистре "больше" версий команд в нижнем регистре.

Теперь, когда мы умеем быстро двигаться в текущей строке, давайте посмотрим, как перейти на новые строки. Если вы хотите создать ('o'pen) новую строку и начать ввод данных, нажмите клавишу о.

Нажмите o

Наберите I'm a rapper.

Нажмите <Esc> для переключения в нормальный режим.

Хм, было бы более интересно, если бы новое предложение мы написали в новом абзаце.

Нажмите O (верхний регистр 'O')

Нажмите <Esc> для переключения в нормальный режим

Подводя итог двум новым ключам мы запоминаем:

Команда

Действие

o

открыть новую строку ниже

O

открыть новую строку выше

Обратите внимание, как верхний и нижний режим команды 'o' противоположны по направлению, в котором они открывают строку.

Было ли что-то не так в тексте, который мы только что написали? А да, это должно быть "Dapper", а не rapper! Один символ мы должны изменить, как эффективно это сделать?

Мы можем нажать i для переключения в режим вставки, нажать клавишу <Del> для удаления r, набрать d и затем нажать <Esc> для переключения и выхода из режима вставки. Но это четыре шага для такого простого изменения! Есть ли что то лучше? Вы можете использовать клавишу s - s для замены ('s'ubstitute).

Перемещаем курсор к символу r (или просто нажимаем b для перехода назад ['b'ack] к началу слова)

Нажимаем s

Набираем d

Нажмите <Esc> для переключения в нормальный режим

Ну, ладно, возможно в данном случае это не сильно нас спасло, но представьте себе что этот процесс повторяется снова и снова в течение всего дня! Создание таких элементарных, максимально быстрых операций, это выгодно, потому что они помогают нам сконцентрировать наши усилия на более творческих и интересных аспектах работы. Как говорит Линус Торвальдс, "это означает не только то, что можно сделать что-то быстро, но поскольку это быстро, метод, которым вы делаете вашу работу, кардинально меняется".

Опять же, есть S, большая версия клавиши s, которая заменяет всю строку, а не текущий символ.

Нажмите S

Наберите Be a sinner.

Нажмите <Esc> для переключения в нормальный режим

Команда

Действие

s

замена текущего символа

S

замена текущей строки

Давайте вернемся к нашему последнему действию... Не могли бы мы сделать его более эффективно, раз мы хотим заменить ('r'eplace) только один символ? Да, мы можем использовать клавишу r.

Двигаем курсор к первому символу слова sinner.

Нажимаем r

Набираем d

Обратите внимание, что мы еще в нормальном режиме и нам не нужно нажимать <Esc>.

Большая версия r называется R, она заменяет последовательно расположенные символы.

Установите курсор на 'i' в sinner.

Нажмите R

Наберите app (слово теперь становится 'dapper')

Нажмите <Esc> для переключения в нормальный режим.

Команда

Действие

r

Заменить текущий символ

R

Заменить несколько последовательно расположенных символов

Текст должен выглядеть так:

Dapping means being determined about being determined and being passionate about being passionate. Be a dapper.

Уф. Мы рассмотрели много в этой главе, но я гарантирую, что это самый трудный шаг. Как только вы усвоите все это, вы поймете сердцем и душой как работает Vim, и все другие функции в Vim - это просто глазурь на торте.

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

Если вы хотите прочитать больше о этих командах, смотри :help inserting и :help replacing.

Режим визуализации

Предположим, что вы хотите выделить несколько слов и заменить их полностью каким-то новым текстом, который вы хотите написать. Что вы будете делаете?

Один из способов заключается в использовании мыши, щелкните в начале текста, который вас интересует, удерживая левую кнопку мыши, перетащите мышь до конца соответствующего текста, а затем отпустите левую кнопку мыши. Но зачем там много работать?

Мы могли бы использовать клавиши <Del> или <Backspace>, чтобы удалить все символы, но кажется это еще хуже по эффективности.

Наиболее эффективным способом было бы поместить курсор в начало текста, нажать v, чтобы начать визуальный режим, используя клавиши со стрелками или какие-либо текстовые команды перейти в конец соответствующего текста (например, нажмите 5e, для перехода к концу пятого слова от текущей позиции курсора), а затем нажмите c, чтобы изменить ("c'hange) текст. Обратите внимание на возросшую эффективность.

В этой конкретной операции (команда с), вы будете переведены в режим вставки, поэтому после его окончания нажмите <Esc>, чтобы вернуться в нормальный режим.

Команда v работает с символами. Если вы хотите работать со строками, используйте верхний регистр V.

Итоги

Это схема отношений между различными режимами:


               +---------+  i,I,a,A,o,O,r,R,s,S  +----------+
               | Normal  +---------->------------+ Insert   |
               | mode    |                       | mode     |
               |         +----------<------------+          |
               +-+---+---+        <Esc>          +----------+
                 |   |
                 |   |
                 |   |
                 |   |
                 |   |
           v,V   V   ^  <Esc>
                 |   |
                 |   |
                 |   |
                 |   |
             +---+---+----+
             | Visual     |
             | mode       |
             +------------+

(Это нарисовано с использованием Vim и плагина Dr.Chip's DrawIt)

Смотри :help vim-modes-intro и :help mode-switching для подробного описания различных режимов и переключение между ними, соответственно.

Если вы все еще не уверены в том, что концепция режимов является основной силой, обеспечивающей мощь и простоту Vim, читайте статьи «Почему Vi» и о модели ввода vi, которые показывают, что это лучший способ редактирования.

Внешние ссылки

http://vim.sourceforge.net/scripts/script.php?script_id=40

http://www.viemu.com/a-why-vi-vim.html

http://blog.ngedit.com/2005/06/03/the-vi-input-model/



Предыдущий раздел: Следующий раздел:
Первые шаги Оглавление Умение печатать