I'm trying to add an attribute to a java class, using VIM as the editor. Therefore I thought I could use a command to ease my work with all the boilerplate code. Eg:
All lines containing "atributeA", like this one
this.attributeA=attributeA //basic constructor
should turn into
this.attributeA=attributeA //basic constructor
this.attributeB=attributeB //basic constructor
Is it possible?
Having the solution be a one-liner as a requirement seems a little odd, since you can assign any sequence of keystrokes or any function or command to a keypress in Vim if you like.
That being said, this type of thing is Vi's bread and butter. Try:
:g/attributeA/ copy . | s//attributeB/g
where
:g/pattern/ command1 | command2 | ...
executes commands on each line matching pattern
(see :help :global
),
copy .
copies the current line (see :help :copy
) matched by :g
to after the address .
(meaning the current line), and
s/pattern/replacement/g
then performs a substitution on the current line (see :help :substitute
), i.e. the copy you just made. The g
flag at the end causes the substitution to be performed for all matching patterns in the line, not just the first. Also note that I left the search pattern empty: Vim will remember the last search pattern used in the previous :global
or :substitute
command as a convenience.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With