Vim 是一款模式化文本编辑器,支持多种编辑模式,不同模式下键盘按键的功能会发生变化。它自带一套功能强大、设置灵活的自动缩进机制,核心就是 indentexpr 选项。写代码时缩进看似小事,却很费时间,有了 Vim 的自动缩进,不用每一行都手动按 Tab,能省下不少功夫。
这套缩进机制会按预设表达式来控制缩进格式,搭配文件类型自动识别功能,用起来特别顺手。下面就说说怎么用好 Vim 的自动缩进。
一、开启 Vim 自动缩进
想永久开启自动缩进,把这行加到用户目录下的 .vimrc 配置文件里:
filetype indent on
也可以在 Vim 启动后,在命令模式直接执行 :filetype indent on,但这样只对当前会话有效,重启后就失效了。
开启后,可以用 :set filetype 查看当前文件被识别成什么类型。比如本文档就是 html 类型。对应的缩进规则一般放在 /usr/share/vim/vimXX/indent/文件类型.vim 里,XX 是你用的 Vim 版本号。如果这个路径找不到,也可以去 /usr/local/share 下面看看。这些文件里就是对应语言的缩进规则,不满意可以直接改,也能自己加新规则。
要是你用的文件类型没有现成规则,也可以自己写一套。动手前不妨先去 Vim 官网查一查,说不定已经有人做好了。
除了 indentexpr,autoindent 和 smartindent 是更简单的备选方案。建议也在 .vimrc 里加上,万一遇到 Vim 不认识的文件类型,也能有基础缩进:
set ai
set si
二、临时关闭 Vim 自动缩进
粘贴大段文本或代码时,多余缩进会很烦人。这时可以在命令模式输入:
:set paste
就能临时关掉自动缩进。想恢复正常缩进,再执行 :unset paste 就行。
三、其他实用缩进相关设置
还有几个常用配置,能让缩进更顺手:
1. 把缩进宽度设为 4 个空格:
:set shiftwidth=4
2. 对 C 语言用更严格的缩进规则:
:set cindent
3. 用鼠标粘贴时避免乱缩进,插入模式下按 F5 切换粘贴模式:
set pastetoggle=<F5>
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2597.html
