在Visual Studio代码中打开grep(或ack或编译器或其他)的结果作为搜索结果或问题



vscode:新手

假设我在文件的命令行上运行了grepackmy-weird-compiler-or-linter,其中每行都有标准的grep/编译器输出格式:file:linenumber:text,如中所示

» ack -w root | egrep -v '(public|build)/' > file; cat file
yarn.lock:5322:is-root@2.1.0:
yarn.lock:5324:  resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
yarn.lock:8244:    is-root "2.1.0"
src/apiCalls.js:11:let root = 'https://my.server/api/';
src/apiCalls.js:20:        return `${root}${name}?${usp}`;
src/apiCalls.js:44:window.setRoot = (r) => { root = r };
src/index.js:37:    ), document.getElementById('root'));

我可以以某种方式在vscode中加载/导入该文件,并将其显示为搜索结果(或问题(吗?这样我就可以很好地查看格式良好的列表,并允许我用热键跳到下一个匹配项,同时允许我查看我在列表中的排名?

我已经意识到,我可以从vscode中打开一个终端,然后打开cat file。然后我可以CTRL-点击每个结果行以打开例如yarn.lock:5322第5322行的yarn.lock。但这并没有真正与vscode集成,如果我有411条结果行,我就不知道在喝了一杯咖啡之后我在列表中走了多远。

我意识到我可能可以找到一些东西,让我从vscode中运行外部grep,并看到的输出,但我已经有了输出,只想以某种方式加载它。。。

在写这个问题时,我发现了答案:通过任务与外部工具集成。创建包含的$workspace/.vscode/tasks.json

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "/tmp/ack",
"type": "shell",
"command": "cat /tmp/ack",
"problemMatcher": {
"owner": "ack",
"fileLocation": [
"relative",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^(.*):(\d+):\s+(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
}
]
}

宾果!现在,/tmp/ack文件用于保存所有的grep/ack/anything输出。使用CTRL+SHIFT+P"Tasks:Run Task"运行它,然后选择"/tmp/ack"。现在/tmp/ack的内容显示为问题。要再次清除问题,请使用echo > /tmp/ack并重复。

我得说:我爱vscode!

最新更新