当前位置: 首页 > news >正文

Vim笔记:缩进

tabstop (ts)

  • 定义:一个制表符(Tab键)在屏幕上显示的字符宽度。
  • 默认值:8
  • 使用场景:当你按Tab键时,即使你设置tabstop=4,它也会显示为4个空格的宽度(但实际存储的仍然是一个制表符,除非设置了expandtab)。
  • 设置方法::set tabstop=4

shiftwidth (sw)

  • 定义:用于自动缩进和缩进操作(如<<和>>)的宽度。
  • 默认值:8
  • 使用场景:当你使用>>命令缩进一行时,缩进的宽度就是shiftwidth。
  • 设置方法::set shiftwidth=4
    举例:
    set sw=8 且noexpandtab:按>>,插入一个Tab(当tabstop=8时)
    在这里插入图片描述
    set sw 且noexpandtab:按>>,插入4个空格(当tabstop=8时)
    在这里插入图片描述

expandtab (et)

  • 定义:是否将Tab键输入的制表符转换为空格。
  • 默认值:关闭(noexpandtab)
  • 使用场景:当设置为expandtab时,按Tab键会插入空格(空格的数量由softtabstop或- shiftwidth决定);关闭时,则插入真正的制表符。
  • 设置方法::set expandtab 开启,:set noexpandtab 关闭。
  • 推荐场景:Python/Go/YAML 等空格敏感语言必开
  • 为什么与shiftwidth有关:在行首位置按Tab键,如果smarttab开启,则会使用shiftwidth的值来决定缩进量,而不是softtabstop。但在行中位置按Tab键,则会使用softtabstop的设置。

softtabstop (sts)

  • 定义:在插入模式下按Tab键时,模拟的制表符宽度(按一次Tab键插入的空格数或制表符+空格的组合)。
  • 默认值:0(禁用)
  • 使用场景:当设置了expandtab时,softtabstop指定了插入的空格数;当没有设置expandtab时,它会尽量使用制表符和空格的组合来达到指定的宽度。
  • 设置方法::set softtabstop=4
  • 特殊行为:
    若 sts=4 且 expandtab:按 Tab 插入 4 个空格
    若 sts=4 但 noexpandtab:插入 1 个 Tab(当 tabstop=4 时)
    若 sts=16 但noexpandtab: 插入2个Tab(当tabstop=8时)
    若 sts=7 但noexpandtab:插入7个空格(当tabstop=8时)
    在这里插入图片描述
    但sts=9时,但noexpandtab:插入一个Tab,一个空格(当tabstop=8时)
    在这里插入图片描述

smarttab (sta)

  • 定义:在行首按Tab键时,根据shiftwidth进行缩进,而不是tabstop或softtabstop。在其他位置使用tabstop或softtabstop。若关闭此选项,则都用tabstop或softtabstop。只在缩减操作时使用shiftwidth。具体说明参看help smarttab
  • 默认值:关闭
  • 使用场景:当开启时,在行首(即当前光标前只有空白)按Tab键,会执行缩进操作,缩进量为shiftwidth;在其他位置按Tab键,则按照tabstop或softtabstop处理。
  • 设置方法::set smarttab 开启,:set nosmarttab 关闭。

autoindent (ai)

  • 定义:新行自动继承前一行的缩进。
  • 默认值:关闭
  • 使用场景:开启后,在插入模式下按回车,新行会自动与前一行保持相同的缩进。
  • 设置方法::set autoindent 开启,:set noautoindent 关闭。

其他相关选项

  • cindent:更智能的缩进,针对C语言等编程语言,会根据语法自动调整缩进。
  • smartindent:比autoindent更智能一些,但不如cindent强大。

Python开发推荐配置

set tabstop=4
set shiftwidth=4
set softtabstop=4 
set expandtab       " 强制空格代替 Tab 
set autoindent      " 自动继承缩进 
set smartindent     " 智能语法缩进

C/c++开发推荐配置

set tabstop=4
set shiftwidth=4
set noexpandtab     " 保留真实 Tab 
set cindent         " 严格 C 风格缩进 
set smarttab

Web开发(html/js)推荐配置

set tabstop=2 
set shiftwidth=2 
set softtabstop=2
set expandtab
set autoindent 

参看

  1. 参看选项介绍
    :options
    在这里插入图片描述
  2. 查看单个选项的详细说明
    :help cindent
http://www.lryc.cn/news/625928.html

相关文章:

  • 从一个ctf题中学到的多种php disable_functions bypass 姿势
  • 重塑酒店投屏体验:私密投屏技术的革新应用
  • 基于单片机智能点滴输液系统
  • 24.早期目标检测
  • 2025年- H99-Lc207--32.最长有效括号(栈、动态规划)--Java版
  • strlen 函数的使用与模拟实现
  • 云原生俱乐部-mysql知识点归纳(2)
  • Java网络编程:TCP与UDP通信实现及网络编程基础
  • 无人机场景 - 目标检测数据集 - 山林野火烟雾检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • FastAPI 请求详解:全面掌握各种请求类型处理
  • 《基于大数据的全球用水量数据可视化分析系统》用Python+Django开发,为什么导师却推荐用Java+Spring Boot?真相揭秘……
  • 实践项目-1
  • Matplotlib数据可视化实战:Matplotlib图表注释与美化入门
  • LeetCode100-560和为K的子数组
  • Rust学习笔记(七)|错误处理
  • 2025年渗透测试面试题总结-21(题目+回答)
  • 堆、方法区、虚拟机栈、本地方法栈、程序计数器
  • RabbitMQ:SpringAMQP 多消费者绑定同一队列
  • Java配置文件
  • 第1章 React组件开发基础
  • 第10章 React应用测试
  • 我的SSM框架自学2
  • IDEA测试代码报java file outset source root异常
  • STM32-FreeRTOS快速入门指南(中)
  • 【软件安装】VScode介绍安装步骤及中文界面设置方法
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • Java 11中的Collections类详解
  • 正式签约 | OpenLoong 项目正式捐赠至开放原子开源基金会,成为全国首个具身智能方向孵化项目!
  • Vulkan笔记(十三)-帧缓冲区与命令池命令缓冲区
  • 使用 SemanticKernel 连接本地大模型 Ollama