Язык редактирования документов

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