100 команд vim, которые должен знать каждый программист

Источник: http://boombick.org/blog/posts/84

Небольшая подсказка по 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 Установить режим подсветки
Запись опубликована в рубрике Linux с метками . Добавьте в закладки постоянную ссылку.

8 комментариев на «100 команд vim, которые должен знать каждый программист»

  1. Stanislav говорит:

    Абсолютно все вышеизложенное можно узнать выполнив в vim’е команду :help.
    Лучше бы привести образцы .vimrc с комментариями и пояснениями для разных задач.
    P.S. Капча на сайте отвратительна. Собирать картинку, что бы написать комментарий — издевательство.

    • sergey говорит:

      А вы зарегистрируйтесь, и поместите свой материал на эту тему. Тогда и капча вам не будет мешать. Права для создания материала я вам дам.

    • sergey говорит:

      Да, в Vim помощь не переведена на Русский язык. Так, что этот материал не помешает.

  2. dmitry говорит:

    Не работает регулярка

    :%s/^\(.*\)\n\1$/\1/

    у вас как?

    • sergey говорит:

      Дмитрий, а пример над чем вы работаете и где вы делаете замену есть?
      Да, а зачем единичку терминируете в замене? «\1»

    • Иван говорит:

      Дык она и не будет работать.

  3. Евгений говорит:

    Спасибо за статью. Конечно, все есть в хелпе вима, но не все же в курсе, что такие вещи вообще есть в этом чудесном редакторе.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Анти-спам: выполните заданиеWordPress CAPTCHA