Язык редактирования документов
Большая часть команд Vim состоят из глагола (требуемого действия) и существительного (аргумента; того, над чем должно быть совершено действие). Также эти существительные называют движениями (movements).
Глаголы
d=> delete - удалитьc=> change - заменить (удалить и перейти в режим вставки)>=> indent - увеличить отступv=> visually select - переход в режим визуального выделенияy=> yank - копировать в буфер обмена
Существительные
Могут использоваться с модификатором количества, число должно быть указано перед существительным.
Текстовые объекты:
w=> word - слово (с позиции курсора и до конца слова)iw=> inner word - слово (целиком, вне зависимости от положения курсора)b=> back a word - слово вправо от курсораit=> inner tag - содержимое html-тегаi"=> inner quotes - содержимое кавычек (не включая кавычки)ip=> inner paragraph - весь абзацas=> a sentence - текущее предложение{или}=> begin paragraph, end paragraph - перемещение на строку перед началом или после конца параграфа (в IDE удобно для навигации по методам).
Параметризованные текстовые объекты:
f, F=> find - действует до первого указанного символа, включая егоt, T=> find - действует до первого указанного символа, не включая его/=> search - действует до первого найденного совпадения, не включая его?=> backward search - действует до первого предыдущего совпадения, включая его.
Буферы и метки
ma- установить меткуa'a- перейти в начало строки, в которой установлена меткаa(backtick)a- перейти на точное место, в котором установлена меткаa"a- работа с буферомa
Профессиональные советы
Использование регулярных выражений
Команда замены (substitute) может быть использована для подсчета количества значений в файле, общий вид команды:
:%s/<Regex>/<Regex>/<Flags> ^ ^ ^ | | +---- - флаги, детализирующие команду | +------------ - регулярка, описывающая требуемый текст +-------------------- - регулярка, описывающая искомый текст
Для подсчета значений команда должна выглядеть так:
:%s/<Regex>//gn
Флаг g говорит о необходимости выполнять поиск по всему файлу, а флаг n
указывает на то, что реальную операцию замены проводить не нужно (no-op флаг).
В общем и целом, команды : могут содержать диапазоны строк:
:10,20 <Command>=> применить команду к строкам с 10 по 20:%=> применить команду ко всему файлу:.,$=> применить команду от текущей строки (.) до конца файла ($):.,+21=> применить команду к 21 строке, начиная с текущей строки