Neovim中如何阻止lspconfig的HTML LSP自动换行标签?
解决Neovim中HTML LSP自动换行标签的问题
你遇到的自动换行不是编辑器本身的换行设置导致的,而是HTML LSP(vscode-html-language-server)自带的格式化功能在生效,所以你之前用的:set nowrap这类编辑器层面的命令才会无效。
直接调整LSP的配置就能解决,给你两种方案:
方案一:直接禁用HTML LSP的格式化功能
在你的lspconfig配置代码里,给HTML LSP添加格式化禁用的设置:
require('lspconfig').html.setup({ settings = { html = { format = { enable = false -- 关闭LSP自带的HTML格式化 } } } })
方案二:保留格式化但禁用标签换行
如果你还想保留LSP的其他格式化功能,只是不想让标签自动换行,可以调整格式化的具体参数:
require('lspconfig').html.setup({ settings = { html = { format = { wrapLineLength = 0, -- 禁用按字符长度自动换行 wrapAttributes = "preserve" -- 保持标签属性的原有换行状态,不自动拆分 } } } })
额外处理:如果全局开启了自动格式化
要是你的配置里通过自动命令(autocmd)触发了LSP自动格式化(比如保存时自动格式化),可以单独让HTML文件跳过HTML LSP的格式化:
vim.api.nvim_create_autocmd("BufWritePre", { pattern = "*.html", callback = function() vim.lsp.buf.format({ filter = function(client) -- 排除HTML LSP,用其他格式化工具(如果有的话)或者不格式化 return client.name ~= "html" end }) end })
修改完配置后重启Neovim,打开HTML文件测试一下,应该就不会自动换行标签了。
内容的提问来源于stack exchange,提问作者anotherOneHere
相关产品推荐
相关产品推荐

