Vim在整个项目中查找和替换多行。

问题描述 投票:0回答:1

我有这样的代码。

        item = QStandardItem(self.list.icon, name)
        self.list.model.appendRow(item)
        self.list.model.sort(0)

我想用这个来代替它

        add_database(self.list, name)

我想在我的整个项目中(即它的目录)进行替换。我使用了 fzfferret vim插件,他们能帮我吗?

search vim replace multiline multifile
1个回答
3
投票
  1. 在vim中用args命令打开所需文件。

    在vim中用args命令打开所需的文件:args project_dir***.py

  2. 在所有打开的文件上执行替换。

argdo %s;\(\s*\)item = QStandardItem(self.list.icon, name)\n\1self.list.model.appendRow(item)\n\1self.list.model.sort(0);\1add_database(self.list, name);g

它保留了在 Python 中很重要的缩进,正如 Kent 所说的那样。

\n 这里是新行符号。

\1 是分组调用。

更多信息请参见帮助主题。

:h :args
:h :argdo

0
投票

如果你使用 ripgrep,你可以在命令行中进行。rg -l 'my_search' | xargs sed -i '' -e 's/my_search/my_new_value/'

或者如果你想要一个in-vim解决方案,这也可以。:cfdo %s/my_search/replacement/gc:cdo update 来更新。

© www.soinside.com 2019 - 2024. All rights reserved.