相关疑难解决方法(0)

在Vim中搜索并替换所有项目文件

我正在寻找在Vim中对所有项目文件进行搜索和替换(确认)的最佳方法."项目文件"是指当前目录中的文件,其中一些不必打开.

一种方法是简单地打开当前目录中的所有文件:

:args ./**
Run Code Online (Sandbox Code Playgroud)

然后对所有打开的文件进行搜索和替换:

:argdo %s/Search/Replace/gce
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,Vim的内存使用量从几十MB增加到超过2 GB,这对我来说不起作用.

我也安装了EasyGrep插件,但它几乎不会工作 - 要么它找不到所有的事件,要么只是挂起直到我按下CtrlC.到目前为止,我完成此任务的首选方法是ack-grep搜索术语,使用它的quickfix窗口打开包含该术语的任何文件,之前未打开,最后打开:bufdo %s/Search/Replace/gce.

我正在寻找一个可以用于此的好的,有效的插件,或者一个命令/命令序列,它比我现在使用的那个更容易.

vim replace

111
推荐指数
9
解决办法
4万
查看次数

如何在vim中搜索和替换ack?

我在Vim中使用Ack插件,这有助于我快速搜索项目中的字符串.但是,有时我想替换找到的字符串的全部或部分出现.您可以使用像这样的Vim arglist进行某种全局搜索和替换(源代码):

:args app/views/*/*
:argdo %s/, :expire.*)/)/ge | update
Run Code Online (Sandbox Code Playgroud)

args我不想使用,而是希望通过Ack进行搜索,然后在找到的所有文件中进行替换.有没有办法像argdo命令一样做?

vim search replace ack

51
推荐指数
5
解决办法
2万
查看次数

使用vim重构目录中的类/方法/字符串的有效方法

到目前为止,我一直在使用find-and-replace操作手动重构代码

%s:/stringiwanttoreplace/newstring/g 
Run Code Online (Sandbox Code Playgroud)

在vim.

但是,如果我在特定目录中的许多文件中都有stringiwanttoreplace,那么这是一个缓慢且费力的过程.

我目前/典型的缓慢而费力的过程涉及到一个问题: -

grep -rn "stringiwanttoreplace" .
Run Code Online (Sandbox Code Playgroud)

在我的终端中显示stringiwanttoreplace所在的所有位置/文件名; 现在我知道哪些文件包含stringiwanttoreplace,我将逐个打开每个文件,以在每个文件中执行查找和替换操作.

是否有更高效的工作流程(在vim中)来完成这项工作?

澄清:我更喜欢基于vim的解决方案,而不是bash脚本/单行.

vim refactoring

12
推荐指数
1
解决办法
1605
查看次数

标签 统计

vim ×3

replace ×2

ack ×1

refactoring ×1

search ×1