vim search and replace a variable string

2019-09-26 01:49发布

问题:

I have a paatern like this.

func(a, "a");
func(b, "b");
func(abc, "abc");
...

I wish to replace them with

func(a);
func(b);
func(abc);
...

In vim, how can i do it?

回答1:

This should do it.

:%s/func(\([^,]*\),\s*"\1"/func(\1/g


回答2:

This might work but can't say for sure until we can see more of the input:

%s/\v(.*), .*(\);)/\1\2/

Try this subsitution:

:%s/, ".\{-}"//

Explanation:

% - Run on whole file

, " - Matches the comma to first quote literally

.\{-}" - Match zero or more characters, as few as possible till "

// - Replace the matched pattern with nothing.



回答3:

If you're wanting a mass edit of the lines, it can be done using regex. Follow these steps:

  1. Place cursor at top line.
  2. Shift-V to start a line visual selection.
  3. Move cursor to bottom line to select all lines you want to modify.
  4. Type ":" and you'll see ":'<,'>" appear at the bottom.
  5. Type "s/, ".*");/);/" and hit enter. The lines will change.

On #5, it's a regex search and replace. "s" denotes the operation, then the match pattern, then what to replace it with. All delimited by a / key in between them and one at the end.

If you want more info, you can find some here: http://vimregex.com/