Язык редактирования документов
Большая часть команд 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 строке, начиная с текущей строки