该配置由ChatGPT完成,经笔者修改测试后完全可用(注释可以不看)
Lightweight yet powerful formatter plugin for Neovim
(轻量但强大的Neovim代码格式化插件)
—— GitHub描述
开始使用
首先,先安装conform.nvim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
return {
{
"stevearc/conform.nvim" , -- 安装插件
config = function ()
-- 配置conform,使用black和isort格式化Python
require ( "conform" ). setup ({
formatters_by_ft = {
-- python = { "black" },
python = { "black" },
lua = { 'lua-ls' },
},
})
-- 自动格式化配置
-- vim.api.nvim_create_autocmd("BufWritePre", {
-- pattern = "*.py",
-- callback = function(args)
-- require("conform").format({ bufnr = args.buf })
-- end,
-- })
end ,
}
}
然后保存,重新进入Neovim就可以看见lazy.nvim正在安装了。
安装代码格式化工具
以Python为例
1
2
# Arch Linux
sudo pacman -S python-black
来安装black。你也可以用isort等formatters_by_ft是一个列表,你可以添加你所用编程语言的格式化工具,如
1
2
3
formatters_by_ft = {
bash = { 'beautysh' },
}
关于格式化工具,你可以查看:Conform文档 或通过在Neovim中使用:help conform-formatters来查看
格式化代码
你只需要使用:lua require("conform").format()的命令来进行代码格式化。
使用none-ls.nvim
null-ls.nvim reloaded / Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
(继承null-ls.nvim/通过Lua使用Neovim作为一个语言服务器来注入LSP诊断,代码动作等等)
—— GitHub描述
开始使用
首先,安装none-ls.nvim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
return {
{
"nvimtools/none-ls.nvim" , -- 安装none-ls.nvim插件
dependencies = { "nvim-lua/plenary.nvim" }, -- 依赖plenary.nvim
config = function ()
local none_ls = require ( "null-ls" )
-- 配置none-ls,集成black
none_ls.setup ({
sources = {
none_ls.builtins . formatting.black ,
},
})
-- 自动格式化配置
vim.cmd [[
augroup LspFormatting
autocmd! * <buffer>
autocmd BufWritePre *.py lua vim.lsp.buf.format()
augroup END
]]
end ,
}
}
然后保存,重新进入Neovim就可以看见lazy.nvim正在安装了。
安装代码格式化工具
以Python为例
1
2
# Arch Linux
sudo pacman -S python-black
来安装black。你也可以用isort等sources是一个列表,你可以添加你所用编程语言的格式化工具,如
1
2
3
sources = {
null_ls.builtins . formatting.stylua ,
}
关于格式化工具,你可以查看:none-ls文档-内置源
格式化代码
你只需要使用:lua vim.lsp.buf.format()的命令来进行代码格式化。
保存时自动格式化代码
使用该代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
return {
{
"stevearc/conform.nvim" , -- 安装插件
config = function ()
-- 配置conform,使用black和isort格式化Python
require ( "conform" ). setup ({
formatters_by_ft = {
-- python = { "black" },
python = { "black" },
lua = { 'lua-ls' },
},
})
-- 自动格式化配置
vim.api . nvim_create_autocmd ( "BufWritePre" , {
pattern = "*.py" ,
callback = function ( args )
require ( "conform" ). format ({ bufnr = args.buf })
end ,
})
end ,
}
}
none-ls.nvim
使用以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
return {
{
"nvimtools/none-ls.nvim" , -- 安装none-ls.nvim插件
dependencies = { "nvim-lua/plenary.nvim" }, -- 依赖plenary.nvim
config = function ()
local none_ls = require ( "null-ls" )
-- 配置none-ls,集成black
none_ls.setup ({
sources = {
none_ls.builtins . formatting.black ,
},
})
-- 自动格式化配置
vim.cmd [[
augroup LspFormatting
autocmd! * <buffer>
autocmd BufWritePre *.py lua vim.lsp.buf.format()
augroup END
]]
end ,
}
}
两个切记不能同时开启!因为可能会返回不同的结果(当然使用相同的格式化工具就不会)。但是会增加占用(富哥当我没说:()。所以建议二选一即可