Команды Vim

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
Vim Keymaps

Поиск

/word 	Искать слово "word" сверху вниз
?word 	Искать слово "word" снизу вверх
/jo[ha]n> 	Искать "john" или "joan"
/\< the 	Искать слова, начинающееся на "the"
/the\> 	Искать слова, заканчивающиеся на "the"
/\< the\> 	Искать "the"
/\< .... \> 	Искать слова из четырех символов
/fred\|joe 	Искать "fred" или "joe"
/\<\d\d\d\d\> 	Искать 4 цифры подряд
/^\n\{3} 	Искать 3 пустые строки
:bufdo /searchstr/ 	Искать во всех открытых файлах
/word - по умолчанию ищет регистро-зависимо, /\cword - регистро-независимо.
* - искать слово под курсором (например, если курсор стоит на слове xml, выполнится поиск /\).
# - тоже самое, только backward.

Замена

:%s/old/new/g 	Заменить все вхождения "old" на "new"
:%s/old/new/gw 	Заменить все вхождения "old" на "new" с запросом подтверждения
:2,35s/old/new/g 	Заменить все вхождения "old" на "new" между 2 и 35 строками
:5,$s/old/new/g 	Заменить все вхождения "old" на "new" начиная с 5 строки и до конца файла
:%s/^/hello/g 	Добавить "hello" в начало каждой строки
:%s/$/Harry/g 	Добавить "Harry" в конец каждой строки
:%s/onward/forward/gi 	Заменить "onward" на "forward" с учетом регистра
:%s/ *$//g 	Убрать все пробелы
:g/string/d 	Удалить все строки, содержащие "string"
:v/string/d 	Удалить все строки, не содержащие "string"
:s/Bill/Steve/ 	Заменить первое вхождение "Bill" на "Steve" в текущей строке
:s/Bill/Steve/g 	Заменить все вхождения "Bill" на "Steve" в текущей строке
:%s/\r//g 	Убрать символ возврата каретки (Такие тексты обычно приходят от windows-пользователей)
:%s#>[^<]\+>##g 	Очистить текст от HTML-тегов
:%s/^\(.*\)\n\1$/\1/ 	Удалить строки, повторяющиеся дважды
Ctrl+a 	Увеличить число под курсором на единицу
Ctrl+x 	Уменьшить число под курсором на единицу
ggVGg? 	Преобразовать текст в Rot13

Регистр

Vu 	Перевести строку в нижний регистр
VU 	Перевести строку в верхний регистр
g~~ 	Инвертировать регистр
vEU 	Перевести слово под курсором в верхний регистр
vE~ 	Инвертировать регистр слова
ggguG 	Перевести весь текст в нижний регистр
:set ignorecase 	Регистронезависимый поиск
:set smartcase 	Игнорировать регистр при поиске, если в искомом выражении нет символов верхнего регистра
:%s/\<./\u&/g 	Перевести первую букву каждого слова в верхний регистр
:%s/\<./\l&/g 	Перевести первую букву каждого слова в нижний регистр
:%s/.*/\u& 	Перевести первую букву первого слова в каждой строке в верхний регистр
:%s/.*/\l& 	Перевести первую букву первого слова в каждой строке в нижний регистр

Чтение/запись файлов

:1,10 w outfile 	Записать в outfile с первой по десятую строки
:1,10 w >> outfile 	Добавить в outfile с первой по десятую строки
:r infile 	Вставить содержимое файла infile
:23r infile 	Вставить содержимое файла infile после 23 строки

Навигация по ФС

:e . 	Открыть встроенный файл-менеджер
:Sex 	Разбить окно и открыть встроенный файл менеджер
:browse e 	Графический файл-менеджер
:ls 	Список буферов
:cd .. 	Перейти в родительскую директорию
:args 	Список открытых файлов
:args *.php 	Открыть все файлы с расширением *.php
:grep expression *.php 	Показать список файлов с расширением php, содержащих в имени expression
gf 	Открыть файл с именем, равным слову, находящемуся под курсором

Взаимодействие с ОС

:!pwd 	Выполнить команду pwd и вернуться
!!pwd 	Выполнить команду pwd и вставить результат в редактор
:sh 	Открыть шелл
$exit 	Вернуться в редактор из шелла
:. w !sh Выполнить текущую строку как команду оболочки (#n строку, если '.' заменить на n)
:r!command  Выполнить команду и вставить результат после текущей строки

Выравнивание

:%!fmt 	Выровнять все строки
!}fmt 	Выровнять все строки в текущей позиции
5!!fmt 	Выровнять следующие 5 строк

Вкладки

:tabnew 	Создать новую вкладку
gt 	Перейти на следующую вкладку
:tabfirst 	Перейти на первую вкладку
:tablast 	Перейти на последнюю вкладку
:tabm n(position) 	Изменить порядок вкладок
:tabdo %s/foo/bar/g 	Выполнить команду во всех вкладках
:tab ball 	Поместить все открытые файлы во вкладки

Разделение окна

:e filename 	Редактировать filename в текущем окне
:split filename 	Разделить окно и открыть filename
ctrl-w + стрелка ВВЕРХ 	Переместить курсор в верхнее окно
ctrl-w ctrl-w 	Переместить курсор в следующее окно
ctrl-w_ 	Максимизировать текущее окно
ctrl-w= 	Подогнать окна по размеру
10 ctrl-w+ 	Увеличить текущее окно на 10 строк
:vsplit file 	Вертикально разделить окно
:sview file 	Разделить окно и открыть file только для чтения
:hide 	Закрыть текущее окно
:only 	Закрыть все окна, кроме текущего
:b 2 	Открыть #2 в текущем окне

Автодополнение

Ctrl+n Ctrl+p (в режиме вставки) 	Дополнить слово
Ctrl+x Ctrl+l 	Дополнить строку
:set dictionary=dict 	Установить словарь
Ctrl+x Ctrl+k 	Дополнение из словаря

Метки

mk 	Пометить текущую позиция как k
'k 	Перейти к метке k
d'k 	Удалить все до метки k

Сокращения

:ab mail mail@provider.org 	Определить mail как сокращение от mail@provider.org
q1 - начать запись макроса, который будет помещён в 1; q - закончить запись макроса; @1 - выполнить макрос из 1.

Отступы

:set autoindent 	Включить автоматическую расстановку отступов
:set smartindent 	Включить "умную" расстановку отступов
:set shiftwidth=4 	Установить отступ равный 4 пробелам
ctrl-t, ctrl-d 	Убрать/добавить отступ в режиме вставки
<< 	Добавить отступ
>> 	Убрать отступ

Подсветка синтаксиса

:syntax on 	Включить подсветку
:syntax off 	Выключить подсветку
:set syntax=perl 	Установить режим подсветки

Ссылки

Андрей Синицын

Best of Vim Tips