因此,我很高兴使用vim在命令行中“破解”。我正在处理一些JSON文本,正在删除对象,修剪API响应以隔离摘要以更紧密地使用。
在某个时候,我很高兴从JSON中清除了所有垃圾,只剩下了我需要进行的工作...
所以我继续输入:%!python -m json.tool
,然后开始繁荣。
所以我戳了一下之后,我的JSON文本不是有效的JSON文本,好像我忘记了某个地方的逗号。
:%!python -m json.tool
shell returned 1
Press ENTER or type command to continue
所以我按Enter键或其他任何键,然后我的缓冲区被一个很好的错误消息替换...
Expecting , delimiter: line 3 column 5 (char 20)
哦,所以我确实忘记了第3行的逗号,谢谢!
哦,但是我的JSON文本哪里去了?女士们,先生们,正是我寻求帮助的地方。通常在这里:q!
中,然后重新打开JSON文件,然后尝试使其正确。但可以肯定的是,在我敢于尝试并使用python json工具设置非JSON文本格式之前,我一定能够从缓冲区中恢复缓冲区!
答案 0 :(得分:0)
当我收到该错误消息时,看来我要做的就是键入u
来“撤消”。 Vim很棒!
答案 1 :(得分:0)
如果您喜欢撤消操作,那么您会喜欢上它。较早的命令。键入:ea
,然后输入要返回的秒数,然后按Enter。相反的是后面的命令:lat
。
但是我必须警告您,这次只是近似,建议您尽可能多地退出插入模式。通常,使用撤消和重做会更容易。
Vim 'earlier' and 'later' commands are not working as expected
答案 2 :(得分: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()
来填充快速修复列表。
call setqflist([], ' ', {'efm':'%m: line %l column %c %.%#', 'lines': systemlist('python -mjson.tool', getline(1, '$'))})
有关更多帮助,请参见:
:h 'makeprg'
:h 'errorformat'
:h setqflist()
:h systemlist()