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
|