Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Вы тратите минуты на то, что можно сделать за секунды? Забудьте о медленном редактировании и постоянном переключении между мышью и клавиатурой. Редактор Vim — это легенда среди разработчиков не просто так. Его мощь скрыта в так называемом командном режиме, и именно она делает работу со скоростью мысли реальностью.

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

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

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

В этом материале мы собрали для вас самые важные и полезные команды. От `:wq` для сохранения и выхода до таких монстров, как `:global` для поиска и `:substitute` для умной замены. Вы узнаете, как работать с метками, буферами и переменными редактора. Мы разберем синтаксис, который на первый взгляд кажется сложным, но на деле открывает безграничные возможности.

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


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

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


Содержание статьи

Что такое команды Vim

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

Чтобы активировать расширенный режим редактора (Ex), его нужно запустить с опцией -e. Или для выполнения одной команды нужно ввести двоеточие. Синтаксис команд расширенного режима такой:

[адрес] [команда] [!] [параметры]

Все части команды необязательны, в определенной команде может использоваться только одна или несколько из них. Чтобы перечислить несколько команд подряд используйте символ "|". А теперь рассмотрим детальнее что означает каждый из этих пунктов:

  • Адрес - указывает набор данных, над которыми будет выполнять операции команда. Можно указать адрес начала и конца фрагмента, адресовать только внутри строки и многое другое;
  • Команда - сама команда, которая сообщает программе что ей нужно сделать;
  • ! - в некоторых командах список аргументов отделен восклицательным знаком;
  • Параметры - команда может принимать различные параметры, чтобы определить что нужно делать с теми или иными данными, например, файл, флаги, регулярные выражения и так далее.

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

Команды редактора Vim

А теперь давайте рассмотрим команды vi в расширенном режиме. Все команды отсортированы в алфавитном режиме.

abbreviate

:abbreviate - команда позволяет создавать аббревиатуры. Это очень удобно. Вы набираете сокращенное слово, а затем программа автоматически заменяет его на полный вариант.

ab без параметров показывает все созданные аббревиатуры:

:ab

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Создадим аббревиатуру, которая будет заменять tst на test:

:ab tst test

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Дальше просто вводите текст в режиме редактирования.

append

Позволяет перейти в режим редактирования, аналогично клавише a. Просто наберите команду и продолжайте набирать текст:

:append

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Также можно добавить знак восклицания, он заставит команду начать вставку с новой строки:

:append!

Перед командной можно указать адрес строки, после которой нужно начать добавлять текст, например, после первой:

:1append

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

args

Позволяет отобразить список файлов, которые сейчас редактируются:

:ar

 

 

buffers

Отображает список активных буферов (открытых файлов):

:buffers

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

buffer

Переключает в указанный буфер, например, чтобы переключиться в первый буфер выполните:

:buffer 1

Если текущий буфер не сохранен, для перехода нужно добавить восклицательный знак.

cd

Команда cd позволяет изменить текущий каталог программы. В параметрах ей нужно передать путь:

:cd /tmp

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Если файл не сохранен, команда не будет выполнена, чтобы это обойти используйте восклицательный знак.

copy

Команда позволяет скопировать диапазон строк. Ей нужно передать адрес строк, которые нужно скопировать и адрес для вставки. Если адрес для вставки не передать, то строки будут вставлены в начало файла. Синтаксис:

[адрес]copy адрес_вставки

Например, скопируем первых четыре строки, нумерация начинается с нуля, и вставим их после четвертой:

:0,3copy3

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Чтобы указать адрес диапазона используйте запятую.

edit

Открывает новый файл для редактирования. Старый файл не закрывается, а для нового открывается новый буфер, который сразу выводится на экран. Команде можно передать номер строки, с которой нужно начать, и имя файла. Имя может быть задано в виде регулярного выражения.

:edit file
:buffers

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

file

Команда позволяет переименовать файл. Если файл уже существует, то необходимо добавить восклицательный знак.

:file tutor

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

global

Команда global позволяет выполнять поиск по регулярному выражению в документе. Ей можно передать диапазон строк, в которых нужно искать. Синтаксис:

:[адрес] global /выражение/параметры

Например, такая команда выведет все вхождения слова Vim во всем документе:

:g/Vim/

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

А эта только в первых пяти строчках:

:0,5g/Vim/

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

join

Команда позволяет объединить несколько строк. Команде нужно передать адрес и количество строк, которые нужно объединить. Перевод строки будет заменен пробелом.

:0,10join

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Или

:0join10

list

Отображает все символы текущей или указанной в адресе строки визуально недвусмысленным образом. Табуляции отображаются в виде ^I, конец строки - $. Флаг # позволяет включить нумерацию строк.

:list

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

map

Команда похожа на ab, но вместо аббревиатур создает макросы. Когда вы набираете указанное сочетания выполняется команда или действие. Если указан восклицательный знак - применяется в режиме вставки, иначе - в командном.

Например, создадим макрос для отображения номеров строк:

:map sn :set number<Enter>

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

После этого достаточно набрать sn.

mark

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

:mark x

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

 

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

ʼx

move

Команда позволяет переместить часть текста по указанному адресу. Если адрес не указать, то текст перемещается в начало. Например, переместим строки 4, 5 и 6 в начало:

:4,6move0

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

 

next

Перейти к редактированию следующего файла в списке аргументов:

:next

number

Позволяет отобразить нужное количество строк, начиная с текущей, вместе с их номерами:

:number 5

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

put

Вставка скопированного или удаленного участка текста в буфер. Если буфер не указан, то будет использован, недавно измененный.

:put

read

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

:read file

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

rewind

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

:rewind

set

Это одна из самых часто используемых команд. Она позволяет установить значение переменных, которые во многом определяют поведение редактора. Если параметров не задать, то будут выведены все существующие переменные. Синтаксис команды:

:set имя_переменной=значение

Чтобы получить все возможные переменные наберите:

:set all

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Например, сообщаем редактору, что нужно показывать номера строк:

:set number

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

 

Или отключаем показ номеров строк:

:set nonumber

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

shell

Эта команда позволяет получить доступ к командной оболочке системы, например, bash, прямо из редактора.

:shell

source

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

:source ~/vimrc

substitute

Это команда для поиска строки по всему документу или в заданном диапазоне и замены ее на нужную. Вот ее синтаксис:

:[адрес]s/шаблон_поиска/на_что_заменить/опции

По умолчанию будет заменено только первое вхождение.

:s/Vim/vi/i

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

Чтобы заменить все найденные нужно добавить опцию g:

:s/Vim/vi/gi

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

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

unabbreviate

Удаляет все ранее созданные сокращения с помощью команды ab. Например, удалим аббревиатуру tst:

:unabbreviate tst

undo

Отменяет последнее изменение или несколько изменений. Нельзя только отменять команду edit и системные команды.

:undo

unmap

Удаляет созданный ранее макрос или все макросы.

:unmap sn

write

Эта команда используется для сохранения изменений. Если у файла еще нет имени, его нужно задать в этой команде. Если перед именем файла указать !, то будет вызвана системная команда, а данные переданы ей на ввод. Чтобы сохранить файл, доступный только для чтения нужно добавить восклицательный знак после команды.

:w

Vim: Секретные команды, которые превратят вас в гуру текстового редактора

wq

Аналогично команде write, только после записи завершает сеанс работы с редактором.

:wq

quit

Закрывает редактор, если изменения не были сохранены, а редактор нужно закрыть, то добавьте восклицательный знак:

:q!

Выводы

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

На завершение видео со сравнением Emacs, Vim и IDE:

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив