NB Это не дубликат Как работает команда "d3fg"? Пожалуйста, прочитайте это перед голосованием, чтобы закрыть!
Я попал в тупик в своем стремлении заставить маленькие удаления работать как большие . Проблема в том, что я не могу понять, как переназначить команды, как d3d. На самом деле, я даже не могу понять, как они работают в первую очередь, и не нахожу упоминания о них в помощи Vim. *
d3jэто просто: он применяет d
оператор к 3j
движению,
3ddтакже прост: он запускает dd
команду с «счетом» 3.
d3d Похоже, это должно быть просто, это относится к d
оператору ... но что это 3d
? Это не движение. Если вы печатаете 3dсамостоятельно, Vim обрабатывает его как счет, за которым следует оператор, и терпеливо ждет дальнейшего ввода.
И вы не можете применять операторы к другим операторам. ddне описывается в справке как последовательность двух операторов. Это отдельная команда, состоящая из двух клавиш. (ср. dc, который ничего не делает.)
Также не похоже, что положение счетчика является гибким для команд, требующих двух нажатий клавиш: 2gjперемещает курсор вниз на две строки экрана, но полностью g2jотбрасывает первые два нажатия клавиш и перемещает курсор вниз на одну строку.
Итак, как это работает? Это особый случай во внутреннем коде Vim? Есть ли способ, которым я могу создать d[count]d
отображение?
РЕДАКТИРОВАТЬ : это текстовый объект? :h text-objects
не включить его в список «текстовых команд выбора объектов», но тогда он действительно включает дд в списке удалений «сгруппированных от маленьких до больших объектов». И d2awдействительно удаляет слово под курсором и следующее. С другой стороны, c2dничего не делает.
* Я уверен, что некоторые упоминания о них должны существовать, но я не могу их найти. Я прочитал :help deleting
, :help motion.txt
и пытался :helpgrep dNd
при всех значениях N от 1-9 .
dd
идентичен d_
. _
переводит курсор к первому [count]
непустому в ( -1)-й строке вниз, но это также происходит, поэтому в паре с оператором он работает на целых строках. По этой причине, имеет смысл, что счет может появиться между двумя d
s.
d
действует как подтверждение; Так что это так же, какd3<CR>
.y3y
иc3c
также работают так же ... Я не могу найти никаких документов по этому вопросу, хотя в Vim: help, vi (1), nvi (1), или в спецификации POSIX ... Он ведет себя одинаково вvi
иnvi
кстати ,