VimScript可以作为一个完整的编程语言使用,这也是Vim的强大之处。但是又和我们以前学过的编程语言不太一样。毕竟,这是一个针对编辑器的语言。
很多在别的编程语言方面的经验适用于Vim,比如给超过1行的代码写注释,解释这段代码的作用;保持VimScript的可读性和可维护性。
也有很多奇怪的地方,我们用别的原因的时候,不会这么做。其中一个主要的原因是,我们可以想当然的认为,VimScript只可能在Vim中打开。如果有人用别的编辑器编辑Vim脚本,我就不说什么了。
折叠VimScript
时间一长,~/.vimrc
文件就变得很长,这一段那一段,很不好维护,也不好跳转。那么,有经验的程序员就会想到模块化。
之前的我们讨论了给命令分组,这里就派上了用场。例如,将与VimScript相关的代码分成一组:
1 2 3 4 |
augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END |
此外,还可以通过打开Vim的折叠,让~/.vimrc
文件的浏览,跳转更加方便。Vim支持不同的折叠方法,比如根据缩进折叠,根据语法折叠,等等。详细的可以在Vim中通过:help foldmethod
查看。针对Vim文件,我们用maker来折叠。这个折叠方法会折叠所有{{{和}}}之间的内容。像下面这样。
1 2 3 4 5 6 |
" Vimscript file settings ---------------------- {{{ augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " }}} |
这种方式初次看起来有些奇怪,因为用首尾注释,感觉代码都被注释了一样。但是这毕竟是VimScript,一般来说只会在Vim中看到。所以熟悉之后也还好。建议再加一个缩写,写起来更快。
1 2 3 4 5 6 7 |
" Vimscript file settings ---------------------- {{{ augroup filetype_vim autocmd! autocmd FileType vim :iabbrev <buffer> --- ----------------{{{ autocmd FileType vim setlocal foldmethod=marker augroup END " }}} |
关于命令的简写
Vim对大多数命令都支持简写形式,比如上面的foldmethod
,等价于fdm
。
但是缩写一般是用于手打的情况,写VimScript,建议都写全写,便于阅读和维护。
测试发现,选中后zf即可折叠,也可zf+movement