Небольшая подсказка по 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