缘起
需求来自于直接拷贝一段格式完好的 Bash 代码粘贴到一个新(用 vim)打开的 Bash 文件时,代码格式完全乱掉了,主要现象貌似是锁进格式被 double 了,本来是一个 tab 的好像被敲了两个 tab。这个问题怎么解决,不知道,不过马上的需求是:能否自动重新把代码重新格式化一下呢?
解决方案
vim配置
确保 vim 配置里有打开 filetype-indent,如果没有的话:
echo "filetype indent on" >> ~/.vimrc
格式化代码
然后,打开需要重新格式化的代码文件,
vim xxx.sh
最后,在 vim 中直接敲入命令(不用先敲入冒号):
gg=G
成功!
进阶阅读
至于怎样格式化代码文件,是控制在 vim 的 runtimepath 目录下的 indent 目录下的"格式名.vim"这个文件里的,这里的格式名是 vim 自动检测到的你的文件的格式,比如:sh
至于什么是 runtimepath,在 vim 中敲入:
:help runtimepath