缩进设置

回忆上节课内容

  • 这次了解了颜色的细节
  • 设置 256 色模式

    • :set t_Co=256
  • 然后确定了具体的各种颜色
  • 还可以生成网页 :TOhtml
  • 还有什么好玩的么?

缩进设置

  • 在正常模式下

    • 使用 << 可以向前缩进
    • 使用 >> 可以向后缩进
    • = 可以让当前行自动缩进
  • 使用 g g = G

    • 可以从头自动缩进到结尾
  • 这超爽

显示缩进

  • 我们编程的时候会遇到缩进

    • 这缩进究竟是 空格 呢?还是 tab 呢?
    • 要把 空格tab 区别开来
  • :set list 使得列表生效

    • tab 会被显示为 ^I
    • 行尾会显示 $

  • :set nolist 使得列表失效

    • tab 会被显示为空格缩进

  • 但是好像缩进看起来只有两格了
  • 与实际不符
  • 能修改么?

定制 tab 显示

  • 把特殊字符作为 listchars 组显示出来
  • :set listchars
  • 设置 listchars
  • :set listchars=eol:$,tab:>-,space:_

    • tab 对应 >-
    • > 是开头
    • - 在后面补位

  • space 对应 _
  • eol 对应 $
  • :h listchars可以查看相关手册

空格颜色

  • :hi SpecialKey ctermfg=DarkRed guifg=grey70

    • 设置 listchars 相应的颜色
    • 设置得特殊一点

最终效果

  • 建议统一能用 tab 的时候就用 tab
  • 减小文件容量

基础

  • shiftwidth值是整个缩进的基础
  • :set shiftwidth=4

    • shiftwidth 是一个基础的值,对应
    • 按下 >> 缩进的宽度
    • 按下 tab 缩进的宽度
    • 退格或者删除 \t 时缩进的宽度
  • 一般 tabstopsofttabstop 都与他相同

    • 一般都是 4
    • 如果 shiftwidth 是 0 的话
    • 就按照 tabstop

解释 tab 宽度

  • tabstop读取文件 时用到的
  • 读到 \t 字符时
  • 解释他对应多少个空格的宽度
  • 一般都是 4 个空格

softtabstop 处理空格的数量

  • 如果 softtabstop 等于 0

    • 特性取消,一切按照 tabstop
  • 如果 tabstop=4softtabstop=8

    • 按下 tab 时

      • 一次插入 8 个位置
      • 看起来像插了两个 tab
    • 要删除 tab 时

      • 1 次删除空格 8 个
      • 看起来像删了两个 tab
    • 可以试试,能看出来
  • 当他是负数的时候 shiftwidth 起作用
  • 所以说 shiftwidth 是基础

扩展 tab

  • :set expandtab

    • 可以把输入的 tab 变成空格
  • 设置好之后,在正常模式下

    • > >
    • 或者在插入模式下 tab 的时候
    • 都看不到 >---,而是直接变成空格 _
  • 反之 :set noexpandtab 之后

    • 插入的 tab 都还是 >---
  • :h expandtab 可以查看相关手册

    • expandtab 可以简写为 et

  • 那已经存在的tab怎么办呢?

强制拓展

  • :retab!
  • 把已经存在的 tab 强制扩展成为空格

  • 转过去之后
  • 没有转回来的命令
  • 慎重吧
  • 我觉得tab挺好的

回车之后自动缩进

  • :set autoindent

    • 可以简写为 :set ai
    • 添加与上一行一致的缩进
    • 取消为 :se noai
  • :set smartindent

    • 简写为 :se si
    • autoindent 的基础上根据 {} 来调整本行缩进
    • 取消为 :se nosi
    • 需要保证 :se nopaste
  • :set cindent

    • 根据类似于 c、java 的代码动态调节缩进
    • 见到 if 之类的可以自动缩进
    • 取消为 :set nocindent

整体设定为

  • :set noexpandtab
  • :set shiftwidth = 4
  • :set tabstop =4
  • :set softtabstop=4
  • :set autoindent
  • 简写为 :set noet sw=4 ts=4 sts=4 ai
  • 这都个人喜好
  • 没有绝对规定

总结

  • 这次了解了缩进的各种方式
  • 正常模式下用 << 缩进
  • 插入模式下用 tab 缩进
  • 有关于缩进对应空格数的参数

    • expandtab
    • shiftwidth
    • tabstop
    • softtabstop
    • autoindent
  • 不同的文件类型可以对应不同的缩进吗??

    • python、java缩进4个
    • html、css可以缩进2个
  • 下次再说

oeasy教您玩转vim - 26 - 缩进设置的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. Vim代码缩进设置

    前段配置VPS,无奈只能使用Vim编辑Python代码,比较头疼的没法设置自动缩进,所以搜索了相关的配置,特记录如下. 将以下的设置加入到~/etc/vim/.vimrc中: set sw=4 set ...

  5. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  6. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  7. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  9. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  10. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

随机推荐

  1. VSCode 圈复杂度插件 CodeMetrics

    前言 圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准.它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测 ...

  2. 更改wsl中系统的安装位置

    wsl默认安装位置是C盘,众所周知C盘总是不够用的,所以才有了把wsl的系统迁移到其它位置的需求.官网文档 首先查看所有分发版本 wsl -l --all -v 导出分发版为tar文件到D盘 wsl ...

  3. 最小生成树Kruskal算法的实现原理

    到底什么是最小生成树 最小生成树算法应用范围比较广,例如在网络的铺设当中难免会出现环路,需要要生成树算法来取出网络中的环,防止网络风暴的发生.那到底什么是最小生成树呢?我这里就不给严谨的定义了,这种定 ...

  4. 3分钟部署 我的世界(Minecraft) 联机服务

    游戏简介 我的世界(Minecraft)是一款沙盒类电子游戏,该游戏以玩家在一个充满着方块的三维空间中自由地创造和破坏不同种类的方块为主题.玩家在游戏中可以在单人或多人模式中通过摧毁或创造精妙绝伦的建 ...

  5. 论elasticsearch在Windows环境的安装

    前置需求 一台电脑(我用的是Windows),有网 第一步:下载并安装 去java官网下载开发版java(考虑到可能有小白,我暂且这么说) java官网下载链接:https://www.oracle. ...

  6. Stable diffusion采样器详解

    在我们使用SD web UI的过程中,有很多采样器可以选择,那么什么是采样器?它们是如何工作的?它们之间有什么区别?你应该使用哪一个?这篇文章将会给你想要的答案. 什么是采样? Stable Diff ...

  7. String Record

    T1. P5840 算法:ACAM+BIT+树链剖分 自然地,我们会对 \(s_i\) 建 ACAM,然后建出一颗 fail 树. 此时我们考虑集合内加入一个新的字符串.每一个匹配到的点我们都会给从这 ...

  8. OpenSearch 与 Elasticsearch:哪个开源搜索引擎适合您?

    当谈论到搜索引擎产品时,Elasticsearch 和 OpenSearch 是两个备受关注的选择.它们都以其出色的功能和灵活性而闻名,但在一些方面存在一些差异.在本文中,我们将从功能和延展性.工具与 ...

  9. 什么是Web3.0,和区块链又有什么关系?

    又是一个莫名其妙的词语的新起-.- 我大致归纳为以下几个点 什么是web3.0 Web 3.0(Web3)是下一代互联网的发展方向,旨在创建一个更加去中心化.用户控制和数据保护的网络环境.与之前的We ...

  10. 剖析 Kafka 消息丢失的原因

    目录 前言 一.生产者导致消息丢失的场景 场景1:消息体太大 解决方案 : 1.减少生产者发送消息体体积 2.调整参数max.request.size 场景2:异步发送机制 解决方案 : 1.使用带回 ...