Vim - select/yank/delete content between brackets including brackets
Solution 1:
Yes. Use a
instead of i
, as
ya{
ya(
See
:help a{
:help a(
and more generally,
:help text-objects
:help 04.8
Solution 2:
Does f{v%
or f(v%
do what you want? It moves your cursor to the next { or (, enters you into visual mode, and then moves your cursor to the corresponding closing } or ). If you're already past the scope you want to select, you can use a capital F
. Works just as well to jump to the closing } or ) first, too -- f}v%
.
Once you have what you want selected, you can y
, d
, x
, etc. it. The %
command works multi-line, too, so you can use this technique on large blocks of code if you wish (although f
and F
do not, so you have to start on either the first or last line).
EDIT: Better answer, seems to be exactly what you're looking for:
ya(
Replacing the i
in your original command with a
does exactly the same thing, except that it includes the '(' character. This is "yanking a block", whereas yi(
is "yanking an inner block".
Solution 3:
One another way would be by following the below steps:
- place the cursor on the opening parenthesis
(
or braces{
- press
esc
key and pressv
to enter into the visual mode - now press the
%
symbol (this will select the whole text between parens inclusive) - press the key
y
to yank (i.e. copy) the text (pressd
if you rather want to cut it.)
Then, you can move the cursor wherever you want the new text to be pasted and then press p
for pasting the text there.