假设我刚刚在终端中运行了 linter,并且有一堆标准格式的 linter 输出:
path/to/some/file.foo:45:23: This is an error message
path/to/some/file.foo:46:12: This is another error message
...
Run Code Online (Sandbox Code Playgroud)
我目前正在 Neovim 中手动打开每个文件,导航到正确的行并修复问题。
相反,我想使用此信息填充 Vim 或 Neovim 中的快速修复或位置列表,以便我可以快速跳转到每个位置并修复错误。
实现这一目标最简单/最快的方法是什么?
这就是:help -q命令行标志的用途:
$ vim -q errorfile\nRun Code Online (Sandbox Code Playgroud)\n您可以将 linter 的输出重定向到一个文件,然后将该文件传递给 Vim 的-q:
$ yourlinter file.foo > errorfile\n$ vim -q errorfile\nRun Code Online (Sandbox Code Playgroud)\n如果您的 shell 允许,您可以使用进程替换来删除中间步骤和 Ghost 文件:
\n$ vim -q <(yourlinter)\nRun Code Online (Sandbox Code Playgroud)\n或者,如果您已经运行了 linter 但忘记将其传递给 Vim,您可以重新运行它并通过进程替换将其传递给 Vim:
\n$ vim -q <(!!)\nRun Code Online (Sandbox Code Playgroud)\n由于这是我经常遇到的情况,因此我bash几年前将此命令添加到我的配置中:
# open Vim with output of last command in quickfix\nvimq() {\n vim -q <($(fc -nl -1))\n}\nRun Code Online (Sandbox Code Playgroud)\n这允许我做:
\n$ yourlinter file.foo\n(output of linter)\n$ vimq\nRun Code Online (Sandbox Code Playgroud)\n注意:fc -nl -1是一种更可移植的\xe2\x80\x94,因此在脚本上下文\xe2\x80\x94 中更可取地调用最后一个命令,而不是!!. 看$ man fc。
注意:您在问题中只提到了快速修复列表,但是,如果您还想要快速修复窗口,则可以在命令中再添加一项::help :cwindow。
$ vim -q <(!!) +cw\nRun Code Online (Sandbox Code Playgroud)\n