Vim 里有个选项是 textwidth,作用就是设置文本宽度,当用户输入一个很长的文本时,如果文本中有空格,那么这行文本就会被 Vim 按照 textwidth 设置的长度自动拆分,拆分成每行最多 textwidth 个字符。它和 Vim 本身的自动折行区别就是,自动折行之后,原来的文字还是一整行,不能用 j k 在折行间切换,只能用 gj gk;而用 textwidth 自动拆分之后,一行文字变成了多行,每行间自动插入了换行符。可以用 j k 在行之间切换。相信只要看过 Vim 帮助文件的人都会有直观感受。

这两天在 Windows 系统上刚装了 gVim 7.4,在输入的时候发现会自动折行,用 :echo &tw 发现 textwidth 设置成了 78,于是在 _vimrc 里加上 set textwidth=0,但设置后,发现 textwidth 仍然是 78,没有被改变。于是 Google 一番,发现了这个,按照上面的方法设置了 let g:leave_my_textwidth_alone,还是没用。启动的时候 Vim 根本不认这个选项。

继续搜索,终于在万能的 StackExchange 上找到了这个,原来 Vim 启动时加载 .vim 文件是有顺序的。按照这里提供的方法,执行

:redir >d:\output.txt
:scriptnames
:redir END

得到我的 Vim 启动时加载的 vim 文件

D:\Program Files (x86)\Vim\_vimrc
D:\Program Files (x86)\Vim\vim74\vimrc_example.vim
D:\Program Files (x86)\Vim\vim74\syntax\syntax.vim
D:\Program Files (x86)\Vim\vim74\syntax\synload.vim
D:\Program Files (x86)\Vim\vim74\syntax\syncolor.vim
D:\Program Files (x86)\Vim\vim74\filetype.vim
D:\Program Files (x86)\Vim\vim74\menu.vim
D:\Program Files (x86)\Vim\vim74\lang\menu_zh_cn.cp936.vim
D:\Program Files (x86)\Vim\vim74\lang\menu_chinese_gb.936.vim
D:\Program Files (x86)\Vim\vim74\autoload\paste.vim
D:\Program Files (x86)\Vim\vim74\ftplugin.vim
D:\Program Files (x86)\Vim\vim74\indent.vim
D:\Program Files (x86)\Vim\vim74\mswin.vim
D:\Program Files (x86)\Vim\vim74\colors\desert.vim
D:\Program Files (x86)\Vim\vim74\syntax\nosyntax.vim
D:\Program Files (x86)\Vim\vim74\delmenu.vim
D:\Program Files (x86)\Vim\vim74\plugin\delimitMate.vim
D:\Program Files (x86)\Vim\vim74\autoload\delimitMate.vim
D:\Program Files (x86)\Vim\vim74\plugin\emmet.vim
D:\Program Files (x86)\Vim\vim74\plugin\getscriptPlugin.vim
D:\Program Files (x86)\Vim\vim74\plugin\gzip.vim
D:\Program Files (x86)\Vim\vim74\plugin\matchparen.vim
D:\Program Files (x86)\Vim\vim74\plugin\netrwPlugin.vim
D:\Program Files (x86)\Vim\vim74\plugin\rrhelper.vim
D:\Program Files (x86)\Vim\vim74\plugin\spellfile.vim
D:\Program Files (x86)\Vim\vim74\plugin\tarPlugin.vim
D:\Program Files (x86)\Vim\vim74\plugin\tohtml.vim
D:\Program Files (x86)\Vim\vim74\plugin\vimballPlugin.vim
D:\Program Files (x86)\Vim\vim74\plugin\zipPlugin.vim
D:\Program Files (x86)\Vim\vim74\lang\menu_zh_cn.utf-8.vim

用 grep 'textwidth' <filename>,在 vimrc_example.vim 和 menu.vim 中找到了对 textwidth 的设置。最终注释掉 vimrc_example.vim 里的

autocmd FileType text setlocal textwidth=78

 就可以了~~