我希望(没有任何VIM插件)在我的VIM缓冲区上一步运行black。在Vim中编辑一些Python代码。我只需要两个步骤就能让它工作:第一步:
black
:!black %
步骤2(重新加载缓冲器):
:e
请注意,这是无效的:
:!black % |e
0lvr5msh1#
最简单的一个是
:%!black - -q
8yoxcaq72#
通常,我们会遵循以下工作流程:1.了解如何在shell中使用代码格式化程序作为过滤器。1.弄清楚如何在Vim中使用该过滤器。1.使:help gq使用该筛选器。对于所有这些步骤,必须在浏览器窗口中打开the formatter's doc。
:help gq
黑色可以与标准输入一起工作:
$ black - < filename [...] reformatted - All done! ✨ 🍰 ✨ 1 file reformatted.
但我们能让它闭嘴吗?
$ black -q - < filename [...]
即使在内部错误的情况下?
$ black -q 2>/dev/null - < filename [...]
根据:help filter,我们得到:
:help filter
!<motion> :[range]!black -q 2>/dev/null -<CR>
如果Vim有一个格式化命令,那就太酷了...
gq
事实上,Vim确实有一个格式化命令:gq。:help gq将我们指向:help 'formatprg',从这里(以及链接的部分)我们可以得到以下内容(注意转义的空格):
:help 'formatprg'
set formatprg=black\ -q\ 2>/dev/null\ -
再看一下格式化程序的文档,即使我们使用标准输入,提供一个文件名似乎也是一个好主意:
set formatprg=black\ -q\ 2>/dev/null\ --stdin-filename\ %\ -
最后,因为它只对Python文件有用,所以让我们将它添加到一个自定义Python文件类型插件中:
" in after/ftplugin/python.vim set formatprg=black\ -q\ 2>/dev/null\ --stdin-filename\ %\ -
此时,我们可以在Python缓冲区中使用内置的gq<motion>(缓冲区的一部分)或gggqG(整个缓冲区),而无需发明新的Map或命令来记忆。从这里开始,您可能希望在写入时自动格式化缓冲区,例如,这将需要在请求帮助之前阅读:help autocommands并在您这边做一些工作。
gq<motion>
gggqG
:help autocommands
2条答案
按热度按时间0lvr5msh1#
最简单的一个是
8yoxcaq72#
通常,我们会遵循以下工作流程:
1.了解如何在shell中使用代码格式化程序作为过滤器。
1.弄清楚如何在Vim中使用该过滤器。
1.使
:help gq
使用该筛选器。对于所有这些步骤,必须在浏览器窗口中打开the formatter's doc。
第1步,了解如何在shell中使用代码格式化程序作为过滤器
黑色可以与标准输入一起工作:
但我们能让它闭嘴吗?
即使在内部错误的情况下?
第2步,了解如何在Vim中使用该过滤器
根据
:help filter
,我们得到:如果Vim有一个格式化命令,那就太酷了...
步骤3,使用该筛选器生成
gq
事实上,Vim确实有一个格式化命令:
gq
。:help gq
将我们指向:help 'formatprg'
,从这里(以及链接的部分)我们可以得到以下内容(注意转义的空格):再看一下格式化程序的文档,即使我们使用标准输入,提供一个文件名似乎也是一个好主意:
最后,因为它只对Python文件有用,所以让我们将它添加到一个自定义Python文件类型插件中:
此时,我们可以在Python缓冲区中使用内置的
gq<motion>
(缓冲区的一部分)或gggqG
(整个缓冲区),而无需发明新的Map或命令来记忆。从这里开始,您可能希望在写入时自动格式化缓冲区,例如,这将需要在请求帮助之前阅读
:help autocommands
并在您这边做一些工作。