When you have a block of text delimitated by brackets or quotes, you can use
ci"
da(
and so on to change that block of text. But is there a way to change or delete from the cursor to the end of that block (in the way cw
does it for words)?
When you have a block of text delimitated by brackets or quotes, you can use
ci"
da(
and so on to change that block of text. But is there a way to change or delete from the cursor to the end of that block (in the way cw
does it for words)?
See the "Text object selection" section of the Vim help. You can define the selection sequences there with delete and change operations. It shows how to select blocks delimited by any of the following (and more):
{}
()
' or "
)For example:
d}
andc}
will delete and change from the cursor to the end of the paragraph.Benoit's answer of using
t f T
andF
is the best way that I know of. When it comes to deleting to the end of a parenthesised block you can use])
. This will take into account any nested parenthesis. There is also a corresponding[(
,]}
and[{
.Use
ct)
to “c
orrectt
ill closing parenthesis”.Vim motions with t, f, T and F are very, very useful.
:help t
,:help f
.Update: If there are nested parentheses where you are:
vi)o``
will select till closing parenthese (will select inside parentheses, then switch to other end of the selection and move it to where you were (``
)vi)``
will select till opening parenthese (same mechanism, but without needingo
)The first one works only because when you are doing
vi)
a cursor jump is remembered, and``
goes to previous cursor location. It seems thato
in visual mode does not affect this.I don't know of a generic way to do what you want but, assuming you are on the
k
in:v2t)
would select:If you don't want to count you can chain
t)
to expand your selection:vt)t)
would first select:then:
vT(
would select: