我编写了简单的jsonview
脚本来查看json文件:
#!/bin/bash
tmp_file=/tmp/jsonview.json
cat "${@}" | python -m json.tool > $tmp_file
[[ -f $tmp_file ]] && vim $tmp_file
我没有使用less
,因为我需要语法突出显示。
无用的cat cat ${@} | ...
是可以将脚本用作过滤器:
jsonview t.json
和
cat t.json | jsonview
如果使用jsonview
作为第二个管道案例 - 尽管vim不是在管道上调用而是在具体文件上调用,我在主题中得到了警告。我可以查看json文件,但退出后,它会弄乱终端。这是警告的原因?为什么vim认为它是从管道读取的?
答案 0 :(得分:3)
当重定向标准输入时,Vim不喜欢它,除非您将其作为vim -
调用。在那种情况下,它知道stdin被重定向并处理它。作为附带好处,它还可以让你摆脱临时文件。
#!/bin/bash
cat "$@" | python -m json.tool | vim +'set syntax=javascript' -R -
始终引用"$@"
以确保带有空格的文件名不会弄乱您的脚本。
-R
摆脱了保存缓冲区的提示。
答案 1 :(得分:0)
您也可以执行vim $tmp_file </dev/tty
来告诉vim输入是来自终端,而不是来自标准输入。