将符合特定条件的文件加载到vim中的隐藏缓冲区中
Loading files that meet certain criteria into hidden buffers in vim
我想在vim中做一些代码重构。我找到了下面的gem来将转换应用到所有缓冲区。
:dobuf %s/match/replace/gc
我的代码布局与根目录有一个目录的依赖关系和构建目录。我想从。/src ./include和。/tests加载所有。cc、。h和。proto文件。但不是从依赖和构建目录,到后台/隐藏缓冲区。我想这样做是为了使用上面的命令进行重构。
如果有人知道执行用例的更简洁的方法,请展示出来。
注意:我知道你可以把find
和sed
串在一起从shell中做到这一点,但是我更喜欢在vim中这样做,如果可能的话。我上面提供的模式中的/gc前缀用于确认每个匹配的替换,我需要这个功能,因为我经常不想替换某些匹配,find
和sed
解决方案在尝试我的用例时过于严格和挑剔,在进行就地替换时也很容易破坏文件。
参考使用sed和查找:
列出候选替换:
find src include tests -name *.h -or -name *.cc -or -name *.proto|
xargs sed -n 's/ListServices/list_services/p'
执行替换:
`find src include tests -name *.h -or -name *.cc -or -name *.proto|
xargs sed -i 's/ListServices/list_services`'
您可以使用:argadd
将所需的文件添加到vim的参数列表中。这将把它们加载为非活动缓冲区(您可以随后使用:ls
看到它们)。在您的示例中,它可能看起来像这样:
argadd src/**/*.cc
argadd src/**/*.h
argadd src/**/*.proto
对于include
和tests
目录,依次类推。您可能需要为此创建一个命令,或者尝试使用glob模式使其更简单一些。之后,您的命令应该可以工作,尽管我建议使用:argdo
来运行它:
argdo %s/match/replace/gc
这将只对您显式指定的缓冲区执行它,而不是对您当时可能打开的任何其他缓冲区执行它。查看:help argadd
和:help argdo
获取更多信息
相关文章:
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 无法去函数实现 vim
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 如何将默认代码添加到我在 vim 中打开的每个 cpp 文件?
- 在C++中隐藏键盘记录器的控制台窗口
- 从静态库使用时隐藏不透明结构的内容
- 在 vim 中C++文件中的输入
- 如何在 vim (windows) 中编译和运行 c++ 代码
- 隐藏用于聚合初始化的空基类
- Vim标签文件隐藏
- 将符合特定条件的文件加载到vim中的隐藏缓冲区中