json.tool shell返回1,我丢失了我的vim缓冲区

问题描述 投票:-1回答:3

所以我很乐意使用vim在命令行中“黑客”。我正在研究一些JSON文本,我正在删除对象,修剪API响应以隔离片段以更紧密地工作。

在某些时候,我很高兴我从JSON中删除了所有的垃圾,我只得到了我需要继续工作的东西......

所以我继续输入:%!python -m json.tool和繁荣。

因此,在我使用它之后,我的JSON文本不是有效的JSON文本,看起来我在某个地方忘记了一个逗号。

:%!python -m json.tool
shell returned 1
Press ENTER or type command to continue

所以我点击输入或任何其他键,然后我的缓冲区被一个很好的错误消息替换...

Expecting , delimiter: line 3 column 5 (char 20)

哦,所以我忘了逗号,在第3行,谢谢!

哦,但我的JSON文字去了哪里?女士们,先生们是我寻求帮助的人。这通常是我:q!并重新打开JSON文件并尝试这次正确的地方。但是我必须能够恢复我的缓冲区,直到我有胆量试图使用python json工具来格式化一堆非JSON文本!

python json vim vi
3个回答
0
投票

看起来我所要做的就是当我收到错误消息时键入u以“撤消”。 Vim真棒!


0
投票

如果你喜欢撤消那么你会喜欢这个。较早的命令。键入:ea,然后输入您想要返回的秒数并按Enter键。与此相反的是后来的命令:lat

但是我必须警告你,这个时间只是近似值,建议你尽可能经常地使用插入模式。通常使用undo和redo更容易。

Vim 'earlier' and 'later' commands are not working as expected


0
投票

你可以设置'makeprg''errorformat',这样你就可以运行:make来做linting

autocmd FileType json setlocal makeprg=python\ -mjson.tool\ 2>&1\ %\ >\ /dev/null
                     \| setlocal errorformat=%m:\ line\ %l\ column\ %c\ %.%#

但是,如果你像我一样,你的json缓冲区通常是临时缓冲区,那么使用setqflist()来填充quickfix列表。

call setqflist([], ' ', {'efm':'%m: line %l column %c %.%#', 'lines': systemlist('python -mjson.tool', getline(1, '$'))})

有关更多帮助请参阅:

:h 'makeprg'
:h 'errorformat'
:h setqflist()
:h systemlist()
© www.soinside.com 2019 - 2024. All rights reserved.