我希望在命令行上进行grepping后自动获取Vim中结果的位置.有这样的功能吗?
要在grep中给出的行上打开的文件:
% grep --colour -n checkWordInFile *
SearchToUser.java:170: public boolean checkWordInFile(String word, File file) {
SearchToUser.java~:17: public boolean checkWordInFile(String word, File file) {
SearchToUser.java~:41: if(checkWordInFile(word, f))
Run Code Online (Sandbox Code Playgroud)
int*_*ted 27
如果管道从输出grep到vim
% grep -n checkWordInFile * | vim -
Run Code Online (Sandbox Code Playgroud)
你可以将光标放在文件名上,然后点击gF跳转到该文件中由该行grep输出引用的行. ^WF将在新窗口中打开它.
从vim内部你可以做同样的事情
:tabedit
:r !grep -n checkWordInFile *
Run Code Online (Sandbox Code Playgroud)
这相当于但不太方便
:lgrep checkWordInFile *
:lopen
Run Code Online (Sandbox Code Playgroud)
它会打开超级快速修复窗口,以便您方便地浏览搜索结果.
您可以通过使用vim的本机grep来获得更慢但在某些方面更灵活的结果:
:lvimgrep checkWordInFile *
:lopen
Run Code Online (Sandbox Code Playgroud)
这个使用vim RE和路径(例如允许**).跑步可能需要2-4倍(可能更多),但你可以使用花式\(\)\@<=和羽毛.
看看" Grep搜索工具与Vim集成 "和" 在Vim中查找文件 ".基本上vim提供了这些搜索文件的命令:
:grep
:lgrep
:vimgrep
:lvimgrep
Run Code Online (Sandbox Code Playgroud)
这些文章提供了有关其用法的更多信息.
你可以这样做:
% vim "+/checkWordInFile" $(grep -l checkWordInFile *)
Run Code Online (Sandbox Code Playgroud)
这将在vim命令行中放入与正则表达式匹配的所有文件的列表."+/..."选项将告诉vim从每个文件的开头搜索,直到找到与正则表达式匹配的第一行.
更正:
+/...选项仅搜索正则表达式的第一个文件.要在每个文件中搜索,您需要:
% vim "-c bufdo /checkWordInFile" $(grep -l checkWordInFile *)
Run Code Online (Sandbox Code Playgroud)
如果这是你经常需要做的事情,你可以写一个bash函数,这样你只需要指定一次正则表达式(假设正则表达式对grep和vim都有效).
我认为这就是你要找的:
http://www.vim.org/scripts/script.php?script_id=2184
当您打开一个 file:line 时,例如从编译器(或 grep 输出)中处理和粘贴错误时,vim 会尝试打开名称中带有冒号的文件。如果冒号后面的内容是一个数字,并且在冒号 vim 将打开这个文件并带你到你想要的行之前,存在一个指定名称的文件,那么在你的插件文件夹中使用这个小脚本。
这绝对是我要找的。
| 归档时间: |
|
| 查看次数: |
12965 次 |
| 最近记录: |