100 команд vim, которые должен знать каждый программист
Небольшая подсказка по vim, будет полезна всем, я думаю. Это не руководство
для начинающих (т.е. команд типа :wq здесь нет) Комментарии
приветствуются :)
Поиск
/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/ |
Искать во всех открытых файлах |
Замена
:%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 |
Вернуться в редактор из шелла |
Выравнивание
:%!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 |
Отступы
:set autoindent |
Включить автоматическую расстановку отступов |
:set smartindent |
Включить "умную" расстановку отступов |
:set shiftwidth=4 |
Установить отступ равный 4 пробелам |
ctrl-t, ctrl-d |
Убрать/добавить отступ в режиме вставки |
<< |
Добавить отступ |
>> |
Убрать отступ |
Подсветка синтаксиса
:syntax on |
Включить подсветку |
:syntax off |
Выключить подсветку |
:set syntax=perl |
Установить режим подсветки |
Источник: http://boombick.org/blog/posts/84, 29.IX.2009
|