前几天我正在寻找一种在 Vim 中自动格式化/漂亮打印 JSON 的快速方法,并在 Stack Overflow 上找到了这个很棒的小命令::%!python -m json.tool
这让我开始搜索其他 Python 工具的列表来漂亮地打印常见的 Web 文件,但我找不到太多。是否有一个很好的 Python 工具资源/列表,他们发现它们对于清理 Vim 中格式不佳的 Web 内容(例如 HTML、XML、JavaScript 等)特别有用?
前几天我正在寻找一种在 Vim 中自动格式化/漂亮打印 JSON 的快速方法,并在 Stack Overflow 上找到了这个很棒的小命令::%!python -m json.tool
这让我开始搜索其他 Python 工具的列表来漂亮地打印常见的 Web 文件,但我找不到太多。是否有一个很好的 Python 工具资源/列表,他们发现它们对于清理 Vim 中格式不佳的 Web 内容(例如 HTML、XML、JavaScript 等)特别有用?
对于 XHTML 和 XML 文件,您可以使用 tidy。
:%!tidy -i -asxhtml -utf8
:`<,`>!tidy -i -xml -utf8
最后一个适用于视觉选择。
Python
您只是在寻找 Python 单行代码的资源吗?您可以浏览Python 标准库文档以找到更多灵感。
或者简单地谷歌“python one-liners json.tool”来查找其他资源。例如,这篇 Reddit 帖子:给 Python 博主的建议:弄清楚 stdlib 的所有主要功能是什么,并记录下来
命令行
Vim 不仅支持 Python(例如,Keith 建议的HTML Tidy )。任何可以接受管道/标准输入的工具都可以很好地与 Vim 集成。
该%
命令仅选择包含整个文件的范围,并!
通过外部程序过滤该范围。
见:help :%
和:help :!
Vim 有一个命令来执行它,=
(等于),就像 inggvG=
将重新缩进整个文件。尝试:help =
获取有关如何使用函数和外部程序的更多信息=
。默认配置使用适用于大多数文件类型的内部缩进规则。
!autopep8 -i %
似乎在vim
. 开关是在-i
原地覆盖现有文件。使用more @ autopep8 --help
.
vim
如果您真的想成为高级用户,那么有一个插件。在您之外vim
可以使用autopep8 -diff {filename} or autopep8 {filename}
.
有很多很好的工具可以在两种格式之间转换文本:
par:用于硬换行。
pandoc:用于 HTML、LaTeX、rst 和 Markdown
autopep8:用于将 Python 代码解析为AST并将其输出为符合 pep8 标准。
...
Vim 旨在通过强大的formatprg
设置来使用这些实用程序。默认情况下,它映射到 gq 运算符。它适用于 Vim 动作、Vim 文本对象、选择等。
例如,我对我的 Python 文件使用以下设置
au FileType python setlocal formatprg=autopep8\ --indent-size\ 0\ -
John MacFarlne has a good article about creating a specialised script using pandoc which you could stick in your vimrc.