2012-03-01 4 views
9

Я хочу сделать что-то похожее на этот вопрос VI (VIM): delete/change right to left? т.е. удалить из конца строки до последнего экземпляра = в этой строке, что можно сделать с помощью dT= с курсор, расположенный в конце строки.Vi/vim - удалить из конечной строки, включая конечный символ

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

ответ

8

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

F=D 

ой, не заметил, что ОП хочет сохранить «=». затем:

T=D 
+1

T = D будет держать = – BenjaminGolder

+0

@BenjaminGolder да, спасибо за указание, не заметил, что раньше. – Kent

+0

Прекрасное спасибо! –

3

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

set virtualedit=onemore 

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

0

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

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

+1

На самом деле, я думаю, вам нужно '$ l' переместиться в конец строки плюс один символ. – jcollado

+0

Хмм, возможно, да. спасибо за исправление. – Benoit

0

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

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.