Vim: необходимый минимум знаний






Пользуетесь gEdit? Прекрасный редактор. Но что вы будете делать, когда понадобится изменить пару конфигурационных файлов не сервере, расположенном в соседней области? Когда речь заходит о системном администрировании, все дороги ведут обратно к Vim! Никогда им не пользовались или, ещё хуже, вообще пугаетесь, когда слышите его имя? На самом деле, не так уж он страшен и непонятен, как полагают некоторые. И потом, чтобы решать задачи вроде редактирования файлов конфигурации, совсем не нужно изучать всю бесконечную тучу возможностей этого поистине мощного редактора. Вам понадобится знать совсем немного команд, чтобы быстро и без проблем сделать свою работу. Конечно, человек, хорошо знающий Vim, сделает это ещё быстрее и эффективнее, но ведь все же с чего-то начинали, правда?


Вообще, когда вы работаете на сервере с Vim (который по сути является клоном редактора Vi), скорее всего, вы будете иметь дело в «vim-tiny» — урезанной версией Vim, в которой оставлен только  набор функций «классического» редактора Vi.

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

Первая вещь, на которую вы должны обратить внимание — это то, что Vim может работать в различных режимах:  командном режиме, режиме вставки режиме «последней строки» (известном ещё как «ex mode»). Непосредственно после запуска, Vim находится в командном режиме. В этом режиме весь ввод с клавиатуры будет воспринят как команды редактору, а не редактирование текста. Чтобы переключиться в режим вставки, нажмите 'i', после чего вы получите возможность редактировать текст. При помощи нажатия на Esc вы можете затем вернуться в командный режим, а введя ':' в командном режиме, вы попадаете в ex-режим.

Командный режим

Команды, которые могут использоваться в командном режиме, можно перечислять очень долго. Но пока что мы ограничимся лишь самым необходимым. Давайте начнём с перемещения по тексту:

  • 'h' — перемещение на один символ влево;
  • 'l' — перемещение на один символ вправо;
  • 'j' — перемещение на один символ вниз;
  • 'k' — перемещение на один символ вверх;

Можно смещать курсор не на один символ, а на слово целиком: 'w' перемещает на слово вперёд, а 'b' — на слово назад. Словом в Vim считается любая последовательность алфавитно-цифровых символов. Например, «word» — это слово, а «one-year» — это уже два слова, поскольку они разделены дефисом.

Удаление выполняется при помощи команд 'd' или 'x'. Если вам нужно удалить один символ, поставьте курсор над этим символом и нажмите 'x'. Для удаления слова под курсором используйте 'dw', а для удаления предыдущего слова — 'db'.

Если требуется удалить целую строку, используйте команду 'dd'. При помощи команды 'd$' можно удалить часть строки от позиции курсора до конца строки, а командой 'd^' (или 'd0') — от текущей позиции курсора до начала строки.

Копирование и вставка

Копирование и вставку текста в Vim можно выполнять невероятно быстро. Чтобы переключиться в режим выделения текста, используйте команду 'v', 'V' или 'Ctrl+v'. После переключения в режим выделения вы можете выделять текст, перемещая курсор клавишами h, l, j, k или же клавишами со стрелками. В режиме 'v' — будет происходить «обычное» выделение, в режиме 'V' — выделение целых строк, а в режиме 'Ctrl+v' — блочное выделение, с его помощью можно выделять вертикальные блоки.

После того, как вы выделите нужный текст, используйте команду 'y' для того, чтобы скопировать выделенный фрагмент в буфер.

Далее, при помощи команды 'p' или 'P' можно вставить скопированный текст из буфера. 'p' вставит текст после курсора, а 'P' — перед ним.

Поиск и замена

Чтобы переключиться в режим поиска используйте команду '/' — для поиска в прямом направлении, или команду '?' — в обратном; затем введите шаблон поиска.

Поиск и замена в тексте выполняется при помощи команды ':s' с заданной областью поиска и замены. Например, чтобы найти «old» и заменить на «new», используйте следующую команду:

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

Имейте ввиду, что указанные выше команды заменяют только первое найденное вхождение. Часто бывает нужно найти и заменить все найденные вхождения в тексте. Для этого можно воспользоваться «глобальной» заменой, добавив к команде букву 'g':

Приведённая выше команда заменит все найденные «old» на «new». Дополнительно вы можете заставить Vim запрашивать у вас подтверждение перед выполнением замены:

Откат действий

Что делать, если вы внесли изменения, которые не нужно было вносить? Воспользуйтесь командой 'u', которая отменит последнее изменение, сделанное вами. Если же после отката на действие назад вы снова передумали и решили «отменить отмену», вам поможет команда 'Ctrl+r', которая делает откат в обратную сторону.

Имейте ввиду, что если ваш Vim работает в режиме совместимости с Vi, то вы не можете откатиться более, чем на один шаг назад. В своём же «родном» режиме Vim «помнит» и позволяет откатываться на большое количество шагов.

Сохранение и выход

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

Если вы хотите сохранить внесённые в файл изменения, используйте команду ':w', а чтобы сохранить изменения и покинуть редактор — команду ':wq'. Не хотите сохранять внесённые исправления? Бывает и такое. При помощи команды ':q!' можно выйти из Vim, при этом не сохраняя текущий файл.

Также, если нужно, вы можете сохранить редактируемый текст в другой файл при помощи команды ':w имя_файла'.

Что дальше

Такое вот кратенькое руководство получилось. Надеюсь, оно поможет многим начать работу с Vim и приобщиться к этому мощному инструменту, зачастую незаменимому в некоторых ситуациях. Если у вас возникнет желание дальше изучать возможности, предлагаемые этим редактором, обязательно почитайте руководство Vim, которое можно запустить из командной строки вызовом vimtutor. Ко всему прочему, документацию по Vim можно почитать из самого редактора, воспользовавшись командой ':help'.




Vim: необходимый минимум знаний: 4 комментария

  1. Непонятно, как выделить все и удалить ?

    Вот в шиндосе все просто, даже на клавишах написано Ctrl +A -все, Ctrl+C -копировать, Ctrl+V -вставить. А здесь хуита какая-то получается.

Комментарии запрещены.