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

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

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

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

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

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

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

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

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

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

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

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

abbreviate

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

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

:ab

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

:ab tst test

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

append

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

:append

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

:append!

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

:1append

args

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

:ar

 

 

buffers

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

:buffers

buffer

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

:buffer 1

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

cd

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

:cd /tmp

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

copy

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

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

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

:0,3copy3

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

edit

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

:edit file
:buffers

file

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

:file tutor

global

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

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

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

:g/Vim/

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

:0,5g/Vim/

join

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

:0,10join

Или

:0join10

list

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

:list

map

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

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

:map sn :set number<Enter>

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

mark

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

:mark x

 

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

ʼx

move

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

:4,6move0

 

next

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

:next

number

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

:number 5

put

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

:put

read

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

:read file

rewind

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

:rewind

set

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

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

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

:set all

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

:set number

 

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

:set nonumber

shell

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

:shell

source

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

:source ~/vimrc

substitute

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

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

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

:s/Vim/vi/i

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

:s/Vim/vi/gi

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

unabbreviate

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

:unabbreviate tst

undo

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

:undo

unmap

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

:unmap sn

write

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

:w

wq

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

:wq

quit

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

:q!

Выводы

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

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

Creative Commons License
Статья Команды редактора Vim распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Ваше имя тоже может быть здесь. Начните писать статьи для Losst. Это просто! Смотрите подробнее как начать писать статьи - Пишите для нас

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (8 оценок, среднее: 5,00 из 5)
Загрузка...

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: