2

Допустим, у меня есть эта строка в Vim, и я нажимаю $ чтобы перейти к EOL.

Hello Worl*d

Звездочкой обозначено место курсора, т.е.

Допустим теперь, что я хотел удалить назад до пробела, поэтому я использую dT<Space> . Это оставляет меня с:

Hello *d

Проблема в том, что курсор находится на самом деле между l и d .

Другой вариант в этом случае - « diw (или « diW если слово содержит дефисы и т.д.), Но мне нравится, когда я могу использовать движение, которое впервые появляется в моей голове, и иногда более очевидно делать движение до персонажа.

Есть ли обходной путь здесь? Одна идея состоит в том, чтобы переместить курсор вправо от блока курсора, а не влево. Я не нашел ничего по этому поводу.

2 ответа2

1
  • С помощью :set virtualedit=onemore вы можете переместить курсор вправо от последнего символа, и ваша команда будет работать: $ldT<Space>
  • Как вы уже упоминалось, естественное движение будет iw в этом случае.
  • Вместо T<Space> вы также можете использовать b здесь.
  • Я, вероятно, использовал бы здесь bD .
  • Если сначала вам приходит в голову dT<Space> , вы можете исправить пропущенный символ с помощью x . Пока вы не используете удаленное содержимое или отмените, это не имеет значения.
1

Я понимаю, что проблема заключается в удалении последнего слова в строке, когда символ EOL следует сразу за этим словом, когда предпочитаемый вами ярлык оставляет последний символ, не удаляя его.

Проблема может быть в том, что Vim делает различие между включающими и исключительными движениями. Использование v переключает "включенность" или "исключительность" движения.

Таким образом, вы можете использовать эту комбинацию:d+v+T+пробел

Смотрите :help inclusive для объяснения.

Если это слишком долго, вы можете записать макрос для него.

Вы также можете использовать следующие ярлыки:

daw : delete the word under the cursor (includes spaces before the next word)
caw : same and puts you in insert mode 
diw : delete entire word without touching whitespace around it
daW : delete all characters between two whitespaces

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .