nvim代码格式化插件formatter.nvim

万英武
2023-12-01

大部分lsp都自带代码格式化功能,有少部分是不带的。比如:lua-language-server 就不带格式化功能。平时写lua我就手动格式化代码,或者选择代码后,按=号格式化。虽然也不影响使用,但是总没有自动格式化来的爽快。写代码就是要爽才行。

项目地址:
https://github.com/mhartington/formatter.nvim

安装

根据自己使用的插件管理器,自行调整。

" vim-plug
Plug 'mhartington/formatter.nvim'
" 配置格式化快捷键
nnoremap <silent> <leader>f :Format<CR>

配置

默认安装后是无法使用的,要进行一些配置。我这里以lua语言为例,其他的语言请参照:
https://github.com/mhartington/formatter.nvim/blob/master/CONFIG.md

安装lua-fmt

lua-fmt提供了一个接口来格式化符合单一和一致标准的 Lua 代码。
项目主页:https://github.com/trixnz/lua-fmt

npm i -g lua-fmt

配置formatter.nvim

创建配置文件~/.config/nvim/after/plugin/formatter.lua 我的内容如下:

local status, formatter = pcall(require, "formatter")
if (not status) then
  return
end
formatter.setup(
  {
    filetype = {
      lua = {
        -- luafmt
        function()
          return {
            exe = "luafmt",
            args = {"--indent-count", 2, "--stdin"},
            stdin = true
          }
        end
      }
    }
  }
)

--配置保存文件自动格式化代码
vim.api.nvim_exec(
  [[
augroup FormatAutogroup
  autocmd!
  autocmd BufWritePost *.rs,*.lua FormatWrite
augroup END
]],
  true
)


总结

简单方便,实用!

 类似资料: