提问人:mw007 提问时间:11/12/2023 更新时间:11/12/2023 访问量:246
如何在保存时自动格式化
How to automatically format on save
问:
我正在尝试使用 neovim 设置保存时的自动格式化。我不想使用 lsp 插件来执行此操作。
下面的示例是我尝试为 python 文件调用黑色格式化程序的尝试。
vim.api.nvim_create_augroup("AutoFormat", {})
vim.api.nvim_create_autocmd(
"BufWritePre",
{
pattern = "*.py",
group = "AutoFormat",
callback = function()
vim.cmd("!black --quiet %")
-- vim.cmd("write!")
end,
}
)
回调函数按预期运行,但代码未格式化。这是我在 nvim 输出区域看到的。
:!black --quiet test.py
"test.py" 5L, 86B written
Press ENTER or type command to continue
我还尝试添加在上面的示例中注释的额外内容,因为它似乎没有影响。vim.cmd("write!")
当我手动格式化带有缓冲区的命令时,我认为我有正确的命令。!black --quiet %
我希望发生的事情是我用 写入文件,代码被格式化并保存。这可能吗?:w
注意:我计划添加其他语言(Go、Rust、SQL),所以我计划在脚本中添加更多的 autocmds。
答:
1赞
mw007
11/12/2023
#1
花了更多的时间,弄清楚了如何获得我想要的功能。
vim.api.nvim_create_augroup("AutoFormat", {})
vim.api.nvim_create_autocmd(
"BufWritePost",
{
pattern = "*.py",
group = "AutoFormat",
callback = function()
vim.cmd("silent !black --quiet %")
vim.cmd("edit")
end,
}
)
切换到以确保文件已先保存,然后允许黑色格式化文件并使用命令重新加载似乎有效。BufWritePost
:edit
评论