I have a command-line tool that can print search results in a format that works with vimgrep. The example output looks like this:

foo/path/lib/usdviewq/appController.py:3795:22:        index = prim.GetPrimIndex()
foo/bar/lib/testenv/testUsdSpecializes.py:104:28:            refNode = prim.GetPrimIndex().rootNode.children[0]
foo/bar/lib/testenv/testUsdInherits.py:108:28:            refNode = prim.GetPrimIndex().rootNode.children[0]
foo/bar/lib/testenv/testUsdPrims.py:720:14:    def test_GetPrimIndex(self):
foo/bar/lib/testenv/testUsdPrims.py:722:43:            s = Usd.Stage.CreateInMemory('GetPrimIndex.'+fmt)
foo/bar/lib/testenv/testUsdPrims.py:739:34:            self.assertTrue(prim.GetPrimIndex().IsValid())
foo/bar/lib/testenv/testUsdPrims.py:740:34:            self.assertTrue(prim.GetPrimIndex().DumpToString())
foo/bar/lib/testenv/testUsdPrims.py:745:35:            self.assertFalse(prim.GetPrimIndex().IsValid())
foo/bar/lib/testenv/testUsdPrims.py:746:35:            self.assertFalse(prim.GetPrimIndex().DumpToString())
foo/bar/lib/testenv/testUsdInstancing.py:101:18:        s = prim.GetPrimIndex().DumpToString()
foo/bar/lib/testenv/testUsdEditTarget.py:40:26:        primIndex = prim.GetPrimIndex()
foo/bar/lib/testenv/testUsdReferences.py:275:28:            refNode = prim.GetPrimIndex().rootNode.children[0]
foo/bar/lib/testenv/testUsdTimeOffsets.py:288:27:            refNode = foo.GetPrimIndex().rootNode.children[0]
foo/bar/lib/testenv/testUsdTimeOffsets.py:306:31:            payloadNode = foo.GetPrimIndex().rootNode.children[1]

Is there any way to feed that as input into Vim as a quickfix window?

I tried doing

command_that_makes_these_lines | vim -

But that only adds that given text to a Vim buffer.

  • Perhaps vim -c will help you.
    – Alex Kroll
    Commented Aug 31, 2019 at 7:31
  • 3
    vim -q [filename] Unfortunately, stdin is not supported.
    – Matt
    Commented Aug 31, 2019 at 11:27

2 Answers 2


Vim has a startup option -q to read a quickfix file. So we have options (depending on your shell):

cmd > results
vim -q results

Or my favorite

vim -q <(cmd)
  • 1
    And vim +cw -q <filename> to make quickfix window visible on start.
    – umi
    Commented Feb 2, 2021 at 12:53

If you'd like to invoke the command from inside Vim and populate the quickfix window with its output, you can use :cexpr together with system() or systemlist().

:cexpr system('command_that_makes_these_lines')

See also :cgetexpr for a version that doesn't jump to the first result (you might want to combine that with |copen to show the quickfix window with the results.)

Also, :lexpr and :lgetexpr can be used, to use the location window instead.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.