Vim for beginners

Изучение Vim — это инвестирование.

Редакторы командной строки могут быть страшной вещью для обучения и использования новичками и Vim возможно найстрашнейший из них– хотя на самом деле не должен. В нём много чего скрыто (гораздо больше, чем будет сказано в этом руководстве) и здесь рассмотрим основы настолько, что мы могли бы по крайней мере удобно редактировать файлы.
Это руководство разбито на 2 части : Самые основы и более детальную секцию, с лучшим объяснением.
Введение
Редакторы командной строки в действительность похожи на то, как они называются, они дают возможность редактировать файлы из командной строки. Их целое множество, особо распространённые:
• Pico
• Nano
• Emacs
• Vi
• Vim
• Neovim
Nano (который по сути клон Pico) возможно наиболее «обычный» из них. Это простой редактор и большинство людей обычно могут понять как его использовать сразу же после его открытия. Vim напротив – требует обучения. Vim это клон vi, но улучшенный (Vi IMproved). Он имеет функционал Vi, а также дополнительные возможности, плагины и прочее.
Vim также крайне широко применим. Вы можете использовать его как основной редактор или как обычный редактор для изменения файлов через SSH на сервере (обычно то, чем мы занимаемся). Цель этого руководства заставить вас чувствовать себя комфортно редактируя файлы на сервере с Vim. Хотя насколько вы захотите его использовать – зависит от вас.
Изучение Vim — это инвестирование. По мере того как вы изучаете его, вы будете становиться лучше в нём и будете находить всё большое и больше вещей, которые повысят вашу производительность. Люди, которые действительно хороши в Vim заявят, что это как расширение пальцев, позволяющее редактировать файлы быстрее и умнее чем вы можете даже с таким крутым редактором как Sublime Text.

I. Самые основы.

Для того, что бы создать или отредактировать уже существующий файл, в командной строке необходимо набрать:
$ vim filename.txt

Help! I do not know how to exit from this bus. Any idea?

Теперь, когда мы находимся в редакторе нужно объяснить, что у него есть два режима Command Mode (Режим Команд) и Insert Mode (Режим Вставки).
Что бы войти в режим вставки (Insert Mode) достаточно набрать:
i
Теперь можно печатать что угодно. Когда закончим, давайте сохраним файл. Для начала нам нужно выйти из Insert Mode в Command Mode нажатием ESC.
Когда мы вернулись в Command Mode нам нужно сохранить файл и выйти из Vim. Для ввода команды необходимо ввести двоеточие
:
Вот команда сохранения изменений (write, quit)
:wq
Вот и всё. Альтернативно, если хотите выйти из Vim не сохраняя изменения, просто наберите
:q!
Знак восклицания означает отмену изменений. То есть буквально – quit and !discard changes (выйти и не применять изменения).
На этом основы основ заканчиваются.

II. Учимся говорить на языке Vim.

Vim всегда слушает инструкции от вас. От вас зависит, какие команды давать. Вам нужно говорить редактору, что делать. Vim следует системе синтаксиса и модели этих команд. Когда вы изучите «язык» Vim, всё что нужно делать, это продолжать изучать больше команд – словарный запас.
Пока нет возможности охватить все команды, мы начнём с самых обыденных и попробуем их использовать. Со временем вы будете узнавать их больше и больше. Даже когда вы будете считать себя экспертом в Vim, вы будете узнавать новые команды и трюки, которые сохранят ваше время.

Передвижение курсора
В раннем примере, вы возможно использовали стрелки на вашей клавиатуре для перемещения по тексту. Это совершенно нормально, но рекомендуется использовать другой способ навигации. Хотя он может показаться довольно непривычным в начале.
• h — влево
• k — вверх
• l — вправо
• j – вниз

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

Выход из Vim
Что бы выйти, войдите в Режим Команд нажав ESC , затем наберите :q
Выйти не сохраняя изменения :q!
Выйти и сохранить изменения, наберите :wq

Редактирование текста – Удаление
Одно дело удалять текст из Режима Вставки, и другое – из Режима Команд. В примере ниже, нужно выйти в Режим Команд нажав ESC, перейти курсором на символ который необходимо удалить и нажать
x
Возможно, вы зададите вопрос – почему просто не удалять символы из Режима Вставки? Вы конечно можете это делать, но вы увидите в будущих примерах, что удаление текста из Режима Команд более мощное и быстрое. Лучше начать привыкать к этому сейчас.

Редактирование текста – Вставка
Редактирование текста требует, что бы мы использовали Режим Вставки. Мы уже рассмотрели как это сделать, но существует ещё несколько таких методов которые позволят нам увеличить скорость и избавиться от лишних нажатий клавиш:

Вставка (Inserting)
Устанавливает курсор перед текущей позицией.
i
Прибавление (Appending)
Устанавливает курсор после текущей позиции.
a
Добавление строк (Open Commands)
Добавляет новую строку и устанавливает курсор ниже текущей позиции
o
Добавляет новую строку и устанавливает курсор выше текущей позиции
O

Операторы, движение, счётчики и их комбинации.
Команды — это то место, где Vim проявляет свою истинную силу и эффективность. Потребуется некоторое время, чтобы начать их использовать, но все они следуют единому шаблону. Хорошая идея выучить как работают команды, на запоминая конкретные команды. Команды делятся на три составляющие части:
• Оператор
• Число
• Движение
Когда эти части команды Vim вместе, они выглядят примерно так:
[ ОПЕРАТОР ] [ ЧИСЛО ] [ ДВИЖЕНИЕ ]

Операторы
Операторы – это действия. Это как глаголы в предложении, когда мы говорим языком Vim.
Вот список обычных операторов:
• d – Delete / Удалить
• c – Change / Изменить
• y – Yank / Скопировать
• p – Put/Paste / Вставить (вставляет последний удалённый текст после курсора)
• r – Replace / Заменить

Движения
Движения обеспечивают содержание нашим операторам. Они выполняют действия в различных направлениях.
Вот список обычных движений:
• w – до старта следующего слова, исключая его первый символ (word);
• e – до конца текущего слова, включая его последний символ (end);
• $ — до конца строки, включая последний символ.
И несколько дополнительных:
• w – вперёд на слово (word);
• b – назад на слово (backward);
• ) – начало следующего предложения;
• ( — начало текущего предложения;
• } – начало следующего абзаца;
• { — начало текущего абзаца;
• ] – начало следующей секции;
• [ — начало текущей секции;
• H – верхняя строка экрана (High);
• L – нижняя строка экрана (Low).

Счётчик/Числа
Счётчик опционален и нужен просто для того, чтобы добавить множитель нашей команде и движению. Вы увидите как это работает в примерах ниже.
Со временем вы узнаете всё больше и больше и будете работать быстрее и быстрее. Довольно удобно иметь подсказку под рукой, когда только начинаешь работать с Vim.
Давайте вернёмся к некоторым примерам и продемонстрируем, как всё это работает вместе. Как только вы определите для себя, что это модель (шаблон) и язык, вы можете начать понимать и тестировать новые вещи сами.

Удаление слова
Перейдите к началу слова в редакторе и введите эту команду
dw
Если вы перешли в середину слова, команда отработает до его конца.
Удаление до конца строки
Эта команда удалит нам всё до конца строки. Перейдите к началу строки и наберите
d$
Теперь пример со счётчиком. Эта же команда выполнится дважды, удалит две линии после позиции курсора
d2$
Удаление строки это супер обыденная задача. Vim имеет встроенное сокращение для неё – для быстрого удаления строки вы всегда можете просто нажать dd .
Удаление четырёх слов
Вот команда для удаления 4х слов (delete 4 words):
d4w

Отмена команд
Со всеми этими командами, мы имеем достаточно великий шанс напортачить. Это нормально. Мы можем быстро выполнить отмену вместе с командой (Undo):
u

Быстрая навигация по странице
Прокрутка в действительности не существует в терминале, и если мы имеем достаточно большой файл, то может занять довольно много времени, чтобы добраться до нужного места используя только «h,j,k,l» управление. Вот несколько подсказок:
Перейти к концу файла
G
Перейти к началу файла
gg
Перейти к определённой строке
Вы можете определить сколько строк у вас в файле командой
Ctrl+g
Теперь можете перейти к определённой строке:
123+G

Поиск
Возможно, к этому моменту вы уже поняли, что всё – это команда действия.
Поиск после позиции курсора:
:/cats
Поиск перед позицией курсора
:?dogs

Перейти к следующему или предыдущему совпадению
Для перемещения по результатам поиска в том направлении, в котором проводился поиск введите:
n
в противоположную сторону
N

Найти и заменить (substitute)
Найдёт и заменить только первое совпадение в текущей строке
:s/cat/dog
Найти и заменить все совпадения в строке
Нужно добавить ключ глобализации (global) после
:s/cat/dog/g
Найти и заменить все совпадения в файле
:%s/cat/dog/g
для обработка специального ‘/’ символа, перед ним нужно поставить ‘\’
:%s/\/mboradata01\/buxamb\//\/srboradata02\/buxmbhf\//g
:%s/\/mboradata02\/buxamb\//\/caoradata02\/buxmbhf\//g

Эту конструкцию можно усложнять бесконечно — используя регулярные выражения можно находить и заменять, находить и проводить замены в определённых строках, секциях, и многое другое.

Выполнение внешней команды
В Vim можно выполнять внешние команды, как если бы мы работали в командной строке, а не в редакторе. Всё что нужно, это просто начать команду с восклицательного знака!
:!df –k|grep oradiag

Удалить строки в которых есть совпадения
Например, при восстановлении с исключением файлов из ТП BINARYDATA можно использовать такую команду
:g/BINARYDATA/d

Добавить «#» коммент с 66 по 77 строку
:66,70s/^/#

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *