Почему p вставляет скопированную строку после текущей строки, а не после текущего слова?

12

Предположим, у меня есть следующие четыре строки:

line1
line2
line3
line4

Теперь, если я пойду line1и сделаю a, yyкоторый копирует строку, а затем пойду к началу line3и сделаю вставку, используя 'p', я получу

...
line3
line1
line4
....

Почему он вставил line1после line3в новой строке?

Сначала я был потому, что символ новой строки $ был присоединен к строке 3, и когда я нажимал pvim, он считался line3$одним словом, поэтому он вставлялся после line3$. Однако, похоже, мое понимание было неверным. Потому что, если я сделаю это, line3 $а затем сделаю pв начале строки, я получу тот же результат.

Почему после pсоздания новой строки вставьте новую строку line3?

Джеймс Франко
источник

Ответы:

21

Когда вы удалили строку, используя dd, вы выполнили удаление линии .

Команда pвставляется после позиции курсора. Поскольку регистр по умолчанию был заполнен содержимым, аналогичным образом, это означает, что он будет вставлен после строки, в которой находится курсор.

Если бы вы вместо этого удалили содержимое строки символьным способом (например, 0D), то регистр был бы символьным и поэтому вставлялся бы после символа, на котором был курсор.

В целом, поведение должно соответствовать ожидаемому при удалении / вставке и вставке. Тем не менее, можно изменить -wiseрегистр, используя getreg () / setreg () .

Будьте осторожны при этом. Исходя из вашего первоначального примера, простое изменение регистра на символьное не приводит к удалению новой строки, которая была частью удаления. Это просто меняет, как происходит вставка.


Рекомендации по конкретному сценарию удаления всей строки, но вставки ее по символам см. В этом посте .

jamessan
источник