2012-03-01 16 views
9

私はこの質問に似た何かをしたいと思っていますVI (VIM): delete/change right to left?つまり、行の最後から行の最後まで削除してください。その行には、dT=カーソルは行末に置かれます。Vi/vim - 最後の文字を含む最後の行から削除

しかし、このようなコマンドは行の最後の文字を削除しないので、そのコマンドにxを追加する必要があります。私はこれをやっても構いませんが、vimが現在の文字から削除するコマンドを持っていないのは驚くべきことです。私が見つけられなかったものはありますか?

答えて

8

カーソルが行末にある場合、あなたは

F=D 

を試みることができるああ、OPは「=」を維持するために望んでいることに気づきませんでした。次に:

T=D 
+1

Tは= Dは= – BenjaminGolder

+0

@BenjaminGolderうん、指摘しておかげで、その前に気づかなかった続けるだろう。 – Kent

+0

完璧なおかげで! –

0

T=d$をどうすればいいですか?それは働くだろうか?

3

代わりに、次のことができます。

set virtualedit=onemore 

これは、あなたがラインの端部を越えてカーソルを1 characerを移動させます。その位置から、dT=が期待どおりに動作します。

0

代替手段は:set virtualedit=onemoreです。これを行うことができます:$dT=

:help 've'を参照してください。

+1

実際には、行頭に1文字を加えて '$ l 'を必要とすると思います。 – jcollado

+0

ええと、おそらくはい。修正のおかげで。 – Benoit

0

もう少し畳み込まれていますが、より強力です。一度に1行、複数の行を使用するかどうかはわかりません。

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. 
関連する問題