
Vim / Vi IMproved (Улучшенный Vi) — расширяемый, режимный, консольный текстовый редактор с полной свободой настройки и автоматизации.
Vim очень мощный текстовый редактор, с огромным набором функций. Эта статья охватывает основные команды для использования текстового редактора, которых достаточно для того, чтобы начать работу в vim-е.
Очень важно не просто читать статью, а параллельно пробовать все действия на каком-нибудь тестовом текстовом файле. Для этого создайте текстовый файл и откройте его с помощью редактора vim:
$ cd /tmp cp /etc/passwd /tmp/test vi ./test
Два режима
Есть два режима работы редактора: режим редактирования и нормальный режим. Переход в режим редактирования осуществляется различными командами, речь о которых пойдёт дальше. Выход из режима редактирования - кнопка <Esc>
Команды перемещения курсора
Команды перемещения работают в нормальном режиме. Нажмите
Курсор можно перемещать стрелками на клавиатуре или, что гораздо быстрее, клавишами h, j, k, l:
h - влево
j - вниз
k - вверх
l - вправо
другие команды перемещения:
0 - Перейти к началу строки
$ - Перейти к концу строки
w - перейти к началу следующего слова
e - перейти к концу слова
gg - перейти в начало документа
G - перейти в конец документа
номер G - перейти на строку с номером <номер>
Можно использовать связку <номер><команда перемещения>
3w - перейти к началу четвёртого слова, считая с текущей позиции
4e - перейти к концу четвёртого слова, считая с текущей позиции
Команды удаления
x - удалить букву под курсором
число x - удалить "число" букв, начиная с той что под курсором
dd - удалить строку
число dd или d число d - удалить "число>" строк, начиная с той где находится курсор
Можно комбинировать команды удаления и перемещения:
dw - удалить 3 слова начиная с текущей позиции
d5w - удалить 5 слов
d$ - удалить строку с текущего положения курсора до конца строки
d0 - удалить строку с текущего положения курсора до начала строки
Сохранение изменений
Для того чтобы сохранить отредактированный файл нужно:
перейти в нормальный режим, нажав "Esc"
ввести команду :write "имя_файла" "ENTER"
или её сокращённый вариант :w "имя_файла" "ENTER"
Если имя_файла отсутствует, то сохраняется текущий файл
Чтобы выйти из редактора введите :quit "ENTER" или просто :q "ENTER"
Выйти не сохранив изменения - :q! "ENTER"
:wq - сохранить изменения в текущем файле и выйти
Вставка текста
Для перехода в режим вставки нажмите "i"
A - переход к концу строки и начало режима вставки
a - переход к следующему символу и начало режима вставки
o - начать вставку под текущей строкой
O - начать вставку над текущей строкой
esc - переход к нормальному режиму
Отмена последних изменений
u - отмена последнего изменения
U - отмена изменений во всей строке
"ctrl-r" - отмена отмены
Копирование и вставка
yy - скопировать всю строку в буфер обмена
p - вставить содержимое буфера обмена после курсора
y5y или 5yy - скопировать 5 строк
yw - скопировать слово
В буфер обмена попадают и только что удалённый текст. Например если удалить строку dd, то сразу же после этого её можно вставить с помощью p
Замена
r - заменить символ под курсором
R - заменять символы, начиная с текущего положения
c - "число" "команда перемещения" - ещё одна команда замены.
cw - поменять слово.
c$ - поменять строку, начиная с положения курсора и до конца.
cc - поменять всю строку.
Поиск
/ - поиск в прямом направлении
? - поиск в обратном направлении
n - перейти к следующему найденному элементу
p - перейти к предыдущему найденному элементу
Поиск соответствующей скобки ], ), }
Наведите курсор в нормальном режиме на открывающуюся/закрывающуюся скобку и нажмите %. Курсор перейдёт к соответствующей закрывающейся/открывающейся скобке, если таковая есть.
Определение положения в файле
Чтобы определить текущее положение нажмите "ctrl-g" в нормальном режиме. В нижней части терминала появится строка, содержащая информацию о количестве строк, текущем положении, имя файла.
Автоматическая замена
:s/old/new/g - заменить все сочетания 'old' в текущей строке на 'new'
:10,20s/old/new/g - тоже самое, но для строк с 10й по 20ю
Вызов справки
:help "команда" "ENTER" - вызов справки по команде редактора.
Исполнение shell-команд
:!"команда"
Например:
:!ls - исполнить команду ls в текущей директории
Чтение файла
:r "filename" - вставить содержимое filename после курсора
Команда set
Некоторые настройки редактора можно менять не выходя из самого редактора с помощью команды set. Например:
:set ic - ignore case - игнорировать регистр букв (например при поиске)
:set hls - highlighting search - подсвечивать найденное при поиске совпадение
:set nohls - не подсвечивать найденное при поиске совпадение
Файл настроек
Скрипт, который исполняется при запуске редактора vim находится в домашней директории пользователя и называется .vimrc. В нём можно задать некоторые дополнительные настройки, например:
colo evening filetype plugin on set grepprg="grep -nH $*" filetype indent on
Примеры этого файла поставляются вместе с Vim.
Вы можете войти под своим логином или зарегистрироваться на сайте.