问题描述
使用 NeoVim 编辑 .sql 文件的时候发现默认的换行是一个 8 space 的 tab. 希望能将其改成 4 spaces.
问题拆解
这其实会涉及到两个问题:
- Vim (NeoVim) 中如何修改缩进
- 如何对指定文件类型修改配置
修改缩进
关于修改缩进的需要做几个配置, 在这篇提问中可以找到解答:
1 | filetype plugin indent on |
我们只要将 2 改成 4 就能符合我们的要求. 但是还有一个问题: 如果按照这样修改, 会全局修改我们的缩进规则, 而我们只希望这个配置在指定类型的文件中生效.
查看文件类型
为了对指定文件做配置, 我们首先需要知道 Vim 认为当前文件属于什么类型. 可以在 Normal 状态下使用命令:
1 | :set filetype? |
如果在 .sql 文件中使用命令, 会得到结果:
1 | filetype=sql |
即 filetype 是 sql
配置指定文件类型
在 Vim 的配置目录 ~/.config/nvim (Vim为 ~/.vimrc) 下新建 ftplugin 目录, 根据文件类型 (上面示例中为 sql) 新建配置文件, 在其中添加配置.
这里需要注意的是, 配置参数时使用 setlocal 而非 set 来控制影响范围. 具体用法请参考这篇回答.
所以我们需要在 ~/.config/nvim/ftplugin/sql.vim 中写入配置:
1 | " On pressing tab, insert 4 spaces |
重载编辑器
如果想在不关闭编辑器的情况下重载, 可以使用 source 命令加载主配置文件, 已 ~/.config/nvim/init.vim 为例:
1 | source ~/.config/nvim/init.vim |
#tech/vim