0%

VIM可恶的自动注释补全

马飞,使用VIM时是否有这样的烦恼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#                    _ooOoo_
# o8888888o
# 88" . "88
# (| -_- |)
# O\ = /O
# ____/`---'\____
# . ' \\| |// `.
# / \\||| : |||// \
# / _||||| -:- |||||- \
# | | \\\ - /// | |
# | \_| ''\---/'' | |
# \ .-\__ `-` ___/-. /
# ___`. .' /--.--\ `. . __
# ."" '< `.___\_<|>_/___.' >'"".
# | | : `- \`.;`\ _ /`;.`/ - ` : | |
# \ \ `-. \_ __\ /__ _/ .-` / /
# ======`-.____`-.___\_____/___.-`____.-'======
# `=---='
#
# .............................................
# 佛祖保佑 永无BUG

然后,当你愉快的按下回车时,你会发现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#                    _ooOoo_
# o8888888o
# 88" . "88
# (| -_- |)
# O\ = /O
# ____/`---'\____
# . ' \\| |// `.
# / \\||| : |||// \
# / _||||| -:- |||||- \
# | | \\\ - /// | |
# | \_| ''\---/'' | |
# \ .-\__ `-` ___/-. /
# ___`. .' /--.--\ `. . __
# ."" '< `.___\_<|>_/___.' >'"".
# | | : `- \`.;`\ _ /`;.`/ - ` : | |
# \ \ `-. \_ __\ /__ _/ .-` / /
# ======`-.____`-.___\_____/___.-`____.-'======
# `=---='
#
# .............................................
# 佛祖保佑 永无BUG
#

VIM竟然会自动注释补全,wdnmd.

查阅无数资料,功夫不负有心人,终于: https://vi.stackexchange.com/questions/1983/how-can-i-get-vim-to-stop-putting-comments-in-front-of-new-lines/1985

学成归来,总之就是:

VIM的自动注释补全归formatoptions管,有三个值:

1
2
3
4
5
6
7
8
r       Automatically insert the current comment leader after hitting
<Enter> in Insert mode.

c Auto-wrap comments using textwidth, inserting the current comment
leader automatically.

o Automatically insert the current comment leader after hitting 'o' or
'O' in Normal mode.

取消VIM的自动只是补全也很简单,只需要将下面的一条命令写入.vimrc文件中:

1
2
3
4
5
au FileType * set fo-=c fo-=r fo-=o

或者

set fo=

但是,上面的两条命令不管用,原因是在启动过程中,vim首先加载.vimrc文件,然后加载各种插件,坑就坑在有些插件设置了formatoptions的值,也就是说,你的更改被插件覆盖了,为了避开这个问题,将命令改为下面的样子写入.vimrc文件中即可:

1
au BufEnter * set fo-=c fo-=r fo-=o