nvim 缩进4空格

发布于:2025-07-30 ⋅ 阅读:(17) ⋅ 点赞:(0)

要把 Neovim 配置为缩进 4 空格,并适用于所有语言(或某些语言如 C/C++),你只需要设置这三个核心选项即可:


✅ 通用方式:在 init.luaoptions.lua 中添加

vim.opt.tabstop = 4         -- 一个 <Tab> 等于 4 个空格
vim.opt.shiftwidth = 4      -- 缩进级别(按 >> 或 << 时移动的空格数)
vim.opt.softtabstop = 4     -- 输入 <Tab> 时的空格数
vim.opt.expandtab = true    -- 用空格代替 tab 字符

这将让:

  • 手动输入 Tab 变成 4 空格;
  • 自动缩进使用 4 空格;
  • Visual 模式 >>、<< 操作都是 4 空格;
  • 插件识别为“你希望使用 4 空格缩进”。

🧠 这 4 个设置的区别(深入理解)

设置项 作用
tabstop 控制文件中 一个 tab 显示为多少空格宽度
shiftwidth 控制自动缩进、缩进操作时用几个空格
softtabstop 控制你按下 tab 键时输入的空格数量
expandtab 是否将 tab 实际转换为空格写入文件

配合 expandtab = true,这会将 tab 实际转成空格保存。


📁 文件建议存放位置(LazyVim 用户)

1️⃣ 全局适用:

-- ~/.config/nvim/lua/config/options.lua
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.opt.expandtab = true

2️⃣ 某些语言(如 C/C++)专用缩进:

-- ~/.config/nvim/lua/config/autocmds.lua
vim.api.nvim_create_autocmd("FileType", {
  pattern = { "c", "cpp", "h", "hpp" },
  callback = function()
    vim.opt_local.tabstop = 4
    vim.opt_local.shiftwidth = 4
    vim.opt_local.softtabstop = 4
    vim.opt_local.expandtab = true
  end,
})

📌 检查是否生效:

打开一个 .cpp 文件,输入以下命令:

:set tabstop?
:set shiftwidth?
:set softtabstop?
:set expandtab?

如果你看到:

tabstop=4
shiftwidth=4
softtabstop=4
  expandtab

说明配置已经完全生效。


🔒 还不生效?排查建议:

  1. 插件如 conform.nvimlsp-formatformatter.nvim 会覆盖缩进;
  2. 某些 ftplugin/*.vim 会为特定语言设置不同缩进(可用 :verbose set shiftwidth? 查看来源);
  3. LSP 的格式化功能可能生效(如 clangd);
  4. 保存时触发 autocmd BufWritePre 调用了格式化器。

如果你正在用 LazyVim + 阅读老项目代码(如你那份 CentOS 6.10 C++ Makefile 项目),建议再配上:

  • :set foldmethod=indent(缩进折叠 Allman 风格代码)
  • :set colorcolumn=130(防止长行看不见)
  • 禁用所有自动格式化

需要我打包这些吗?可以打一个完整的 “代码阅读强化插件包”。


网站公告

今日签到

点亮在社区的每一天
去签到