VIM - tab 相关的简单配置
1. 概述
- vim 是强大的文本编辑器
- 使用 vim 前, 需要做些简单配置, 来让 vim 更符合自己的操作习惯
- 想看配置项的, 直接到最后
- 目前我也理解不是那么好, 最终答案, 应该都在 vim 的 help 里吧
2. 准备
- 安装 vim
- 略
- 配置文件
- 位置
/etc/vimrc
- 位置
- 格式
- 设置没有值的属性
set <attrName>
- 设置有值的属性
set <attrName>=<attrValue>
- " 的后面开始是注释
- 例子
set ai " 开启自动缩进, 其中 ai 是 autoindent 的缩写; 本人不建议使用缩写, 知道一个名字的由来, 以及这背后的一些故事, 对你理解一个概念很重要; set history=50 " 默认保留 50 条历史
- 设置没有值的属性
3. 配置
- tab
-
概述
- vim 里 tab 相关的设置
-
背景
- 编程开发中, 通常用 tab 来做缩进, 相对空格键更加方便
- tab 在显示的时候, 会换算为 若干个空格 来显示, tab 输入的时候, 有时也会用 若干个空格 来代替
- 开发者通常会使用多个不同的 平台, 文本编辑器, 或者 IDE 来编辑文本
- 这样就可能出现 同样的代码, 在不同环境下显示的效果不同
- 这样的话, 可能会出现一些不太好的情况, 轻则看起来别扭, 重则破坏缩进, 影响某些程序的运行(没错, 说的就是你, python)
-
相关设置项
- tabstop
- 这是一个有值的属性
- 表示 一个 tab 对应的 显示空格长度, 只与显示相关
- 也就是说, 如果 没有tab 的话, 这个选项就没啥用了...
- 默认值是 8
- 感兴趣的同学, 可以在 ruler 打开的情况下, 比较 tabstop 不同时, tab 的占位表现
- expandtab
- 这是个没有值的属性
- 如果设定, 则在 insert 模式下, 输入 tab 会转换为 softtabstop 个空格
- 默认值是 noexpandtab
- shiftwidth
- 这是一个有值的属性
- 表示 v 模式下, 一个 < 或者 > 对应的空格长度
- 默认值是 8, 应该和某个属性关联, 这个有待确认
- softtabstop
- 这是一个有值的属性
- noexpandtab 情况下
- softtabstop = 4, tabstop = 8, 按一次 tab, 会出现 4 个空格, 按 2 次 tab, 会出现一个 tab
- softtabstop = 8, tabstop = 8, 按一次 tab, 会出现 1 个 tab
- softtabstop = 16, tabstop = 8, 按一次 tab 会出现 2 个 tab
- 这些可以在 insert 模式下, 输入 tab, 观察 ruler 以及 按 左右键 观测得到
- expandtab 情况下
- 按一次 tab, 出现 softtabstop 个空格
- 如果打开文件里存在 tab, 那显示还是按 tab 来, 长度是 tabstop
- 自动换行也会受这个属性的影响
- tabstop
-
4. 其他选项
-
概述
- 常用的一些选项
-
选项
- autoindent
- 自动换行
- 默认不换行
- number
- 显示行号
- 默认不显示
- ruler
- 会在 右下角 显示 光标的位置
- 包括行, 列, 以及当前页 在整体文本中 的位置
- 默认显示
- 会在 右下角 显示 光标的位置
- autoindent
5. 有些问题
- 关于删除
- 开启 expandtab时, 输入 4 个空格, 删除完需要删除 4 次; 输入 1 个 tab, 删除完只需要 1 次; 这个有点想不通是如何区分的
- 关于 tabstop 和 softtabstop
- 什么样的人, 在什么场景下, 会把这俩设置成不一样的, 感觉使用起来, 很别扭啊...
6. 配置
" 这些是我自己加的配置项
" vim 的配置项如果出现冲突, 后面的会覆盖前面的
set tabstop=4
set expandtab
set shiftwidth=4
set softtabstop=4
set autoindent
set number
set ruler
ps
- ref
- Vim Tab使用技巧
- 这位老兄, 也对 tab 相关的东西做了一些总结, 感觉理解的比我透彻
- Vim Tab使用技巧
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出