Depending on what you're trying to do, a viable alternative might be running the system command inside Vim to generate the locations and populating the quickfix list with the result. Here's a Neovim/Lua example for inspiration:
vim.api.nvim_create_user_command('TorgleFlidgets',
function()
vim.cmd.cclose()
print('🐰 torgling the flidgets ...')
local out = vim.fn.systemlist("torgle ./flidgets.txt")
if vim.v.shell_error == 0 then
print('nothing to see here')
return
end
local files = {}
for _, file in pairs(out) do
local parts = {}
for part in string.gmatch(file, "%S+") do
table.insert(parts, part)
end
table.insert(files, {filename = parts[1], lnum = parts[2], col = parts[3]})
end
vim.fn.setqflist(files)
vim.cmd.copen()
end,
{nargs = 0}
)
In this notional example, the output of torgle ./flidgets.txt
looks like:
/path/to/file1.txt 25 19
/path/to/file2.txt 44 37
(In my actual case, I used some combination of awk
and sed
to massage the output of my system command into this format. This particular example won't work if filenames may contain whitespace.)