vim search and replace a variable string

2019-09-26 01:17发布

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?

3条回答
Viruses.
2楼-- · 2019-09-26 01:44

This should do it.

:%s/func(\([^,]*\),\s*"\1"/func(\1/g
查看更多
Evening l夕情丶
3楼-- · 2019-09-26 01:47

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/

查看更多
Rolldiameter
4楼-- · 2019-09-26 02:04

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.

查看更多
登录 后发表回答