Эксперимент 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
Почему поведение трех команд непоследовательно?