visual-studio-code - 从 Visual Studio Code 中的 grep(或 ack 或编译器或其他)打开结果作为搜索结果或问题?
问题描述
vscode新手:
假设我有运行的输出,或者grep
我已经在文件中的命令行上运行,其中每一行都有标准的 grep/编译器输出格式:如:ack
my-weird-compiler-or-linter
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
从yarn.lock:5322
. 但这并没有真正与 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/whatever 输出。使用“任务:运行任务”运行它CTRL+SHIFT+P
,然后选择“/tmp/ack”。现在的内容/tmp/ack
显示为问题。再次清除问题,echo > /tmp/ack
然后重复。
我得说:我喜欢 vscode!
推荐阅读
- netlogo - Netlogo,在特定多边形的中心创建品种(即 id = 123456)
- php - 如何将我的 PHP 代码连接到 Heroku 的插件“SendGrid”?
- java - 如何对 RecyclerView 中的项目进行排序?
- c++ - 使用初始化列表创建单项向量
- typescript - 如何使用带有 TypeScript 声明的 Webpack 别名
- phpexcel - 使用phpspreadsheet为所有行设置行高
- android - 如何使用 com.glide.slider.library.SliderLayout 更改幻灯片背景颜色
- angular - 映射 Angular 订阅以同步执行
- c# - 如何让多台计算机共享服务器上的单个数据库?
- django - Django:如何在 url 中包含用户名?