Эксперимент 1
-
Откройте Vim и вставьте в буфер только следующую строку текста.
hello world
Другими словами, нажмите i, введите
hello world
и нажмите Esc. -
Нажмите 0, чтобы поместить курсор в первый символ первой строки.
- Нажмите e. Курсор перемещается в
o
. - Нажмите 0, чтобы снова поместить курсор в первый символ первой строки.
-
Нажмите d e. Вы увидите, что символы от
h
доo
были удалены. Остается только следующий текст.world
Эксперимент 2
-
Откройте Vim и вставьте в буфер только следующую строку текста.
hello world
Другими словами, нажмите i, введите
hello world
и нажмите Esc. -
Нажмите 0, чтобы поместить курсор в первый символ первой строки.
- Нажмите w. Курсор перемещается в
w
. - Нажмите 0, чтобы снова поместить курсор в первый символ первой строки.
-
Нажмите d w. Вы увидите, что символы от
h
добыли удалены. Остается только следующий текст.
world
Однако я ожидал, что все от
h
доw
будет удалено, и останется только следующий текст.orld
Вопрос
Сначала позвольте мне процитировать :help d
ниже.
*d*
["x]d{motion} Delete text that {motion} moves over [into register
x]. See below for exceptions.
В эксперименте 1 движение из-за e переместилось с h
на o
и, конечно же, было удалено все: от h
до o
(включая h
и o
).
В эксперименте 2 движение из-за w переместилось от h
в w
, но все от h
до w
(включая h
и w
) не было удалено. Почему?
Ниже описывается поведение d w, d e и d b.
Command Deletes character under the Deletes character under the
initial cursor position? final cursor position?
------- --------------------------- ---------------------------
dw Yes No
de Yes Yes
db No Yes
Почему поведение трех команд непоследовательно?