Подтвердить что ты не робот

Как удалить, включая текущий символ?

Скажем, я набрал "abcdefg", с курсором в конце. Я хочу удалить обратно в c, так что у меня осталось только "abc".

Есть ли команда типа d, которая включает текущий символ? Я знаю, что могу сделать dTcx, но x чувствует себя как обход, и я полагаю, что есть лучшее решение.

4b9b3361

Ответ 1

Нет. Обратные движения всегда начинаются слева от текущего символа для c, y и d, что как-то логично, но также и нервирует.

Единственные "чистые" решения, о которых я мог думать, либо подразумевают переход к char после c сначала, а затем выполнение прямого удаления:

Tcde

или используя визуальный режим:

vTcd
v3hd

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

Как насчет того, чтобы оставаться в режиме вставки и просто делать ?

Ответ 2

попробуйте следующее:

TcD

это оставит abc для вашего примера... ну, если abcdefg является последним словом строки.

если это не последнее слово в этой строке, вы можете:

ldTc

или игра в гольф, сделайте это в течение 3 ключевых секунд:

3Xx or l4X

Ответ 3

Посмотрите этот ответ на аналогичный вопрос: есть возможность выйти за пределы строки

Из документа:

Виртуальное редактирование означает, что курсор может быть расположен там, где есть     нет фактического характера. Это может быть на полпути на вкладку или за ее пределами     линии. Полезно для выбора прямоугольника в визуальном режиме и     редактирование таблицы.      "onemore" не то же самое, он позволит перемещать курсор только     после последнего символа строки. Это делает некоторые команды более     последовательны. Раньше курсор всегда находился за концом строки     если строка пуста. Но это далеко не совместимо с Vi. Он также может     сломать некоторые плагины или скрипты Vim. Например, поскольку | l | может двигаться     курсор после последнего символа. Используйте с осторожностью!     Использование команды $ переместится к последнему символу в строке, а не     мимо него. Это может привести к перемещению курсора влево!     Команда g$ переместится в конец строки экрана.     Не имеет смысла комбинировать "все" с "onemore", но вы будете     не получите предупреждение для него.

Короче говоря, вы можете попробовать :set virtualedit=onemore и посмотреть, стабильна ли ваша среда или нет.

Ответ 4

Используйте d?c Это запустит режим d, вернитесь к 'c', а затем удалите до положения курсора.

Изменить: нет, это не включает текущую позицию...

Ответ 5

Возможно, я ошибаюсь в вашем запросе, но делает ли это 3hd$?