Vi / vim - удалить из конца строки, включая последний символ - PullRequest
9 голосов
/ 01 марта 2012

Я хочу сделать что-то похожее на этот вопрос VI (VIM): удалить / изменить справа налево? т.е. удалить с конца строки до последнего экземпляра = в этой строке, что может сделать это, используя dT= с курсором в конце строки.

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

Ответы [ 5 ]

8 голосов
/ 01 марта 2012

если ваш курсор находится в конце строки, вы можете попробовать

F=D

о, не заметил, что ОП хочет оставить '='. то:

T=D
3 голосов
/ 01 марта 2012

В качестве альтернативы вы можете:

set virtualedit=onemore

Это позволит вам переместить курсор на один символ через конец строки.С этой позиции dT= будет работать так, как вы ожидаете.

0 голосов
/ 19 июня 2014

Немного более запутанный, но более мощный - я не уверен, собираетесь ли вы делать одну строку за раз или много ... использовать регулярное выражение для замены.

single line:
^               # go to beginning of line
:s/=[^=]*$/=/   # remove everything after =

whole file:
:%s/=[^=]*$/=/gc   # replace every instance in file, with prompts. remove c for no prompt.
0 голосов
/ 01 марта 2012

Альтернативой является :set virtualedit=onemore, поэтому вы можете сделать: $dT=.

Ссылка на :help 've'.

0 голосов
/ 01 марта 2012

Как насчет использования T=d$? это будет работать?

...