Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用VIM在一个模式的结尾加上中间的一个词_Vim - Fatal编程技术网

用VIM在一个模式的结尾加上中间的一个词

用VIM在一个模式的结尾加上中间的一个词,vim,Vim,我有一个文件已过期,需要更新。这些名字有些变化,我想用一个替代品把它们全部清理干净 以下是我试图实现的目标: foo.foo_[single word] -> foo_bar.foo_[single word]_bar 其中,单个单词是由n个字符组成的字符串。在文件中,它们的前面总是有下划线,但需要附加“\u bar”。在这些实例之后总是有一个“.”,因此我认为以下方法可能有效: %s/foo\.foo_*\./foo_bar\.foo_*_bar\./g 遗憾的是,第一部分甚至与我想

我有一个文件已过期,需要更新。这些名字有些变化,我想用一个替代品把它们全部清理干净

以下是我试图实现的目标:

foo.foo_[single word] -> foo_bar.foo_[single word]_bar
其中,单个单词是由n个字符组成的字符串。在文件中,它们的前面总是有下划线,但需要附加“\u bar”。在这些实例之后总是有一个“.”,因此我认为以下方法可能有效:

%s/foo\.foo_*\./foo_bar\.foo_*_bar\./g
遗憾的是,第一部分甚至与我想要的不匹配,所以我回到了第一步。

我首先要改变:

foo_[word] -> foo_[word]_bar
然后

foo. -> foo_bar.
i、 e:

我首先要改变:

foo_[word] -> foo_[word]_bar
然后

foo. -> foo_bar.
i、 e:


给猫剥皮的方法有很多,但下面的方法就可以了

%s/\vfoo.foo_(\w+)/foo_bar.foo_\1_bar/gc
大致翻译成什么

\v             Very Magic (:help magic)
foo.foo_       Search for exact string
(\w+)          Search for a "word" and store in a backreference
/foo_bar.foo   Replace search pattern with this exact string
\1             appended with backreference 1
_bar           appended with _bar
或者,如果您不想在替换零件中重复搜索,您可以使用反向引用和

%s/\v(foo)\.foo_(\w+)/\1_bar.\1_\2_bar/gc
你错过的最重要的部分是

  • 使用backreference(:helpgrep backref)
  • 使用字符类(:h\w)
  • 使用重复(*正在搜索0个或更多下划线。您可能是指*)

给猫剥皮的方法有很多种,但下面的方法就可以了

%s/\vfoo.foo_(\w+)/foo_bar.foo_\1_bar/gc
大致翻译成什么

\v             Very Magic (:help magic)
foo.foo_       Search for exact string
(\w+)          Search for a "word" and store in a backreference
/foo_bar.foo   Replace search pattern with this exact string
\1             appended with backreference 1
_bar           appended with _bar
或者,如果您不想在替换零件中重复搜索,您可以使用反向引用和

%s/\v(foo)\.foo_(\w+)/\1_bar.\1_\2_bar/gc
你错过的最重要的部分是

  • 使用backreference(:helpgrep backref)
  • 使用字符类(:h\w)
  • 使用重复(*正在搜索0个或更多下划线。您可能是指*)

谢谢!我从你的帖子中学到了很多。我觉得有些东西可以处理单词,但直到我读到这篇文章,我的词汇表中才出现了“字符类”这个词。反向引用的事情也很巧妙。我真的很感谢你的回复!谢谢我从你的帖子中学到了很多。我觉得有些东西可以处理单词,但直到我读到这篇文章,我的词汇表中才出现了“字符类”这个词。反向引用的事情也很巧妙。我真的很感谢你的回复!