Библиотека сайта rus-linux.net
Назад | Просто о 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):
• Напишите Dappin
• Нажмите клавишу <Esc> для переключения назад в нормальный режим.
Обратите внимание, что мы использовали другой ключ для переключения в режим вставки, его особенностью является то, что он перемещает курсор в начало строки, а затем переключает в режим вставки.
Также обратите внимание, это важно, что нужно вернуться в нормальный режим, как только вы закончите вводить текст. Эта привычка будет полезна, потому что большинство ваших работ (после начальной фазы написания статьи) будет проводиться в нормальном режиме - где происходят все важные действия: перезапись, редактирование, полировка.
Теперь, давайте возьмем другой вариант команды i. Обратите внимание, что нажатие i поместит курсор на предыдущую позицию и включит режим вставки. Чтобы разместить курсора после текущей позиции, нажмите a ('a'fter).
• Наберите g (для завершения слова "Dapping")
• Нажмите <Esc> для переключения в нормальный режим
Как и в отношениях между i и I ключами, существует связь между ключами a и A - если вы хотите добавить текст в конце строки, нажмите клавишу A.
• Наберите . (поставьте точку для завершения предложения)
• Нажмите <Esc> для переключения в нормальный режим
Подведем итог, что мы узнали о четырех клавишах:
Команда |
Действие |
i |
вставить текст до курсора |
I |
вставить текст с начала строки |
a |
добавить текст после курсора |
A |
добавить текст с конца строки |
Обратите внимание, как команды в верхнем регистре "больше" версий команд в нижнем регистре.
Теперь, когда мы умеем быстро двигаться в текущей строке, давайте посмотрим, как перейти на новые строки. Если вы хотите создать ('o'pen) новую строку и начать ввод данных, нажмите клавишу о.
• Наберите 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, которая заменяет всю строку, а не текущий символ.
• Наберите Be a sinner.
• Нажмите <Esc> для переключения в нормальный режим
Команда |
Действие |
s |
замена текущего символа |
S |
замена текущей строки |
Давайте вернемся к нашему последнему действию... Не могли бы мы сделать его более эффективно, раз мы хотим заменить ('r'eplace) только один символ? Да, мы можем использовать клавишу r.
• Двигаем курсор к первому символу слова sinner.
• Набираем 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/
Предыдущий раздел: | Следующий раздел: | |
Первые шаги | Оглавление | Умение печатать |