如何无需Vim插件一步完成Vim缓冲区的Black格式化?
一步完成Vim缓冲区Python代码的Black格式化(无插件)
你遇到的问题是:!black % |e不生效,原因是Vim里的|用来分隔Vim内置命令,而!后的内容会交给shell执行,shell无法识别Vim的:e命令,所以这种写法行不通。
推荐两种无插件的一步实现方式:
方法一:直接过滤缓冲区内容(推荐)
使用Vim的%!命令,它会把当前缓冲区的所有内容通过管道传给外部命令处理,处理后的结果直接替换原缓冲区内容,无需重新加载文件:
:%!black -
如果不想看到命令执行的输出,可以加上silent参数:
:silent %!black -
方法二:执行shell格式化后重新加载文件
如果习惯先修改磁盘文件再重新加载,可以用Vim的execute命令串联shell操作和Vim命令,确保!black %执行完成后再触发重新加载:
:execute '!black %' | edit
同样可以加silent屏蔽输出:
:silent execute '!black %' | edit
两种方法都能一步完成格式化,方法一更高效,因为它直接在缓冲区操作,不需要重新读取磁盘文件。
内容的提问来源于stack exchange,提问作者user3313834
相关产品推荐
相关产品推荐

