VimCommands
Материал из OpenWiki
Содержание
Полезные команды Vim
Автор подборки: Андрей Синицын (http://boombick.org/blog/posts/84)
Поиск
/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 Установить режим подсветки