nvim 缩进4空格

要把 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 = 4vim.opt_local.shiftwidth = 4vim.opt_local.softtabstop = 4vim.opt_local.expandtab = trueend,
})

📌 检查是否生效:

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

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

如果你看到:

tabstop=4
shiftwidth=4
softtabstop=4expandtab

说明配置已经完全生效。


🔒 还不生效?排查建议:

  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(防止长行看不见)
  • 禁用所有自动格式化

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93700.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pdw估计edw怎么估计

问题一、pdw估计edw怎么估计PDW&#xff08;Pulse Descriptor Word&#xff09;数据是雷达接收到的每一个脉冲的瞬时特征数据&#xff0c;EDW&#xff08;Emitter Descriptor Word&#xff09;是对某一辐射源&#xff08;发射机&#xff09;整体特性的估计。PDW 是每一个脉冲的…

TS语法最佳实践

switch 的 case不能使用条件表达式JavaScript 允许在 switch 的 case 中使用条件表达式&#xff0c;但这种用法实际上是无效的&#xff0c;因为 case 的值会被隐式地转换为布尔值。TypeScript 明确禁止这种用法&#xff0c;以避免隐式类型转换导致的逻辑错误。建议使用 if-else…

行业热点丨仿真历史数据难以使用?如何利用几何深度学习破局,加速汽车工程创新

01、AI 驱动研发升级&#xff1a;几何深度学习创造行业新价值人工智能正加速推动各行业研发能力升级。麦肯锡最新报告显示&#xff0c;该技术在制药、化工和航空航天等领域的应用&#xff0c;有望为相关企业创造高达5600亿美元的经济价值。 AI 技术应用的先行者&#xff0c;全球…

JSBridge原理与实现全解析

JSBridge 是用于连接 JavaScript&#xff08;H5&#xff09; 和原生应用&#xff08;iOS/Android&#xff09;的桥梁&#xff0c;允许它们之间相互调用方法。 &#x1f309; 一、JSBridge 双向通信流程图 #mermaid-svg-AoDVdJL2VJBnTJ2Q {font-family:"trebuchet ms"…

Mockito:Java单元测试Mock框架

文章目录一、写在前面1、简介2、依赖二、使用1、基本使用2、注解&#xff08;1&#xff09;开启注解&#xff08;2&#xff09;Mock 注解&#xff08;3&#xff09;DoNotMock 注解&#xff08;4&#xff09;Spy 注解&#xff08;5&#xff09;Captor 注解&#xff08;6&#xf…

群晖Synology Drive:打造高效安全的私有云协作平台

随着企业与个人对数据协作、安全与自主性的需求不断提升&#xff0c;群晖&#xff08;Synology&#xff09;推出的 Synology Drive 成为了私人云存储与团队协作的利器。下面将从功能亮点、使用方式、安全管理、适用场景等角度&#xff0c;为你全面解读这款强大的私有云方案。Sy…

开发避坑短篇(11):Oracle DATE(7)到MySQL时间类型精度冲突解决方案

异常信息 [Err] [Dtf] 1426 - Too-big precision 7 specified for CREATE_TIME. Maximum is 6.异常背景 用Navicat的数据传输功能进行oracle的数据表迁移到到mysql时报错。 异常分析 oracle的DATE类型的长度是7位&#xff0c;而mysql的datetime类型的长度最多6位&#xff0c;所…

怎么判断一个DAPP是否真正去中心化

判断一个DAPP&#xff08;去中心化应用&#xff09;是否真正去中心化&#xff0c;需要从多个维度进行考察。以下是关键评估标准&#xff1a;1. 区块链依赖程度✅ 真正去中心化&#xff1a;核心逻辑和数据处理完全依赖智能合约&#xff0c;运行在区块链上&#xff08;如以太坊、…

F12 开发者工具 使用指北

F12 开发者工具 使用指北元素 Elements控制台 Console源代码 Sources网络 Network请求文件具体说明首先介绍Chrome开发者工具中&#xff0c;调试时使用最多的三个功能页面是&#xff1a;元素&#xff08;ELements&#xff09;、控制台&#xff08;Console&#xff09;、源代码&…

AD域设计与管理-域策略-进阶

AD域安全保密要求&#xff0c;也是最为常见的一些组策略配置需求 目录 1.禁止U盘&#xff0c;DVD&#xff0c;软盘等可移动存储使用 2.禁止员工自行安装软件 3.硬盘全部采用bitlocker上锁&#xff0c;密码保存至AD域控 4.密码复杂度要求 5.开启windows防火墙且不允许员工…

Python设计模式详解:策略模式(Strategy Pattern)实战指南

Python设计模式详解&#xff1a;策略模式实战指南什么是策略模式&#xff1f;核心组件基础实现利用Python特性的高级实现使用装饰器的策略模式策略模式的优势策略模式的适用场景实际应用案例&#xff1a;电商折扣系统注意事项总结在面向对象编程中&#xff0c;设计模式为常见问…

一次 web 请求响应中,通常那个部分最耗时?

文章目录一次Web请求的完整旅程1. DNS解析2. TCP连接建立3. 发送HTTP请求4. 服务器处理5. 服务器响应6. 浏览器渲染哪个环节通常最耗时&#xff1f;1. 数据库查询2. 外部API调用3. 复杂的业务逻辑如何优化各个环节&#xff1f;1. 数据库优化2. 缓存策略3. 异步处理总结一次Web请…

IO流-概述和体系

1.什么是I0流?存储和读取数据的解决方案|: input 0: output流:像水流一样传输数据2.10流的作用?用于读写数据(本地文件&#xff0c;网络)3. I0流按照流向可以分类哪两种流?输出流:程序-->文件输入流:文件-->程序4. I0流按照操作文件的类型可以分类哪两种流?…

提高建筑舒适度与能源效率,楼宇自控系统意义重大

随着城市化进程的加速和人们对建筑环境要求的不断提高&#xff0c;如何在保证建筑舒适度的同时提升能源效率&#xff0c;成为建筑行业面临的重要课题。楼宇自控系统&#xff08;Building Automation System&#xff0c;简称BAS&#xff09;作为现代智能建筑的核心组成部分&…

学习笔记《区块链技术与应用》第4天 比特币脚本语言

输入0.7 输出0.5 23个确认 不太可能回滚了交易id hash值 版本 locktime 交易剩下时间&#xff1a;0立即生效 confirmation:确认信息 time&#xff1a;产生时间 blocktime&#xff1a;块产生时间vout: 交易中第0个输入 scriptSig&#xff1a;输入脚本&#xff08;input script)n…

3.Linux 系统文件类型与文件权限

1.文件类型Linux 下所有的东西都可以看做文件&#xff0c;Linux 将文件分为以下几种类型&#xff1a;普通文件 ‘-’目录文件 ‘d’管道文件 ‘p’链接文件 ‘l’设备文件&#xff08;块设备 ’b’ 、字符设备 ‘c’&#xff09;套接字文件 ‘s’Linux 上不以文件的扩展名区别文…

订单识别技术原理及场景应用

订单OCR&#xff08;光学字符识别&#xff09;技术通过图像处理和深度学习算法&#xff0c;将纸质或电子版订单中的文字信息转化为结构化数据。以下是其技术原理和典型应用场景的详细解析&#xff1a;一、技术原理剖析1. 核心处理流程图像预处理去噪&#xff1a;消除阴影、折痕…

[优选算法]复写零

题目链接 LeetCode复写零 题目描述 题目解析 一、问题理解 题目要求&#xff1a;给定一个整数数组 arr&#xff0c;在不创建新数组的情况下&#xff0c;将每个出现的 0 复写一遍&#xff08;即一个 0 变成两个 0&#xff09;&#xff0c;同时保持其他元素的相对顺序不变。复…

element UI的el-table组件,实现可以拖动

表格 <div class"main_table"><el-table id"elTableid" :data"fieldArr" border style"width: 100%" row-class-name"drag-row"current-row-key highlight-current-row><el-table-column type"index&qu…

Android Emoji 全面解析:从使用到自定义

引言 Emoji已经成为现代数字通信不可或缺的一部分&#xff0c;这些小小的图标能够跨越语言障碍&#xff0c;直观地表达情感和想法。在Android开发中&#xff0c;正确处理和显示Emoji是提升用户体验的重要环节。本文将全面介绍Android平台上的Emoji支持&#xff0c;包括系统集成…