Разница между: d [количество] и d [количество] - PullRequest
5 голосов
/ 04 февраля 2011

Как начинающий пользователь vim, я использовал d[count]<Enter> для удаления строк.
Мне показалось странным, что всегда было удалено count + 1 строк.
Если я хотел удалить 2 строки, я набрал d1, 3 строки заняли d2, ...

Я наконец нашел время, пытаясь понять, почему, и, похоже, мне следовало использовать :d<count>.

Хотя и возникает вопрос, почему :d1<Enter> <> d1<Enter>

Ответы [ 2 ]

11 голосов
/ 04 февраля 2011

d<count> в обычном режиме ничего не делает, потому что отсчет не сопровождается движением. Предположительно, вы нажали d<count><Enter>, и в этом случае движение, связанное с d, равно <count><Enter>, что перемещает <count> линий вниз. Так как <Enter> является движением по линии, d также будет по линии, удаляя все строки от текущей до строки <count> вниз, включительно.

Команда, которую вы на самом деле хотели получить, - <count>dd.

4 голосов
/ 04 февраля 2011

d{motion} удаляет текст, над которым перемещается {motion}.Когда вы набираете 3<ENTER>, курсор перемещается на 3 строки ниже текущего, и поэтому d3<ENTER> удаляет эту область.

:d[count] просто удаляет [count] строки.

Разница в том, что {motion} - это не то же самое, что count.

Чтобы обойти это, вы можете использовать режим visual и выбрать то, что вы собираетесьчтобы удалить, а затем просто нажмите d.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...