如何移除Vim中的右侧边距?解决文件自动换行至80列问题
解决Vim保存txt/md文件时自动在80列换行的问题
嘿,这个坑我之前踩过!你用的set nowrap其实是控制编辑时的显示换行——也就是不让长行在界面上折行,但你遇到的是保存时自动插入硬换行符,这俩完全是不同的设置,难怪没用~
先搞清楚问题根源
Vim会根据文件扩展名自动识别文件类型(比如txt、md),然后加载对应的文件类型插件(ftplugin),这些插件默认会开启textwidth=80或者formatoptions里的t选项:前者是超过80列就自动换行,后者是让Vim在输入时自动按textwidth的长度折行,保存时这些换行就变成硬回车了。而无扩展名的文件Vim识别不出类型,不会加载这些插件,所以就没这个问题。
分步解决
1. 先确认当前设置(排查用)
打开一个有问题的txt/md文件,输入下面的命令,看看输出的参数:
:setlocal textwidth? wrapmargin? formatoptions?
如果看到textwidth=80或者formatoptions里有t,那就是这俩在搞鬼。
2. 临时修复(当前会话生效)
直接在当前文件里执行下面的命令,立刻就能停止自动换行:
:setlocal textwidth=0
或者如果你只是不想自动折行,但保留其他格式化选项,可以只去掉t:
:setlocal formatoptions-=t
3. 永久修复(所有txt/md文件生效)
打开你的~/.vimrc文件(注意是.vimrc不是.gvimrc,后者只针对图形化的Gvim生效),添加下面的配置:
" 针对txt和md文件关闭自动换行 autocmd FileType txt,md setlocal textwidth=0 formatoptions-=t
保存退出后,下次打开txt/md文件就不会自动在80列插入换行了。
备选:单个文件单独设置
如果只是某个特定文件不想自动换行,可以在文件的开头或结尾加一行模型行(modeline),Vim会自动识别并应用设置:
- 对于md文件,加在开头或结尾:
<!-- vim: set textwidth=0 formatoptions-=t : --> - 对于txt文件,加在开头或结尾:
" vim: set textwidth=0 formatoptions-=t :
内容的提问来源于stack exchange,提问作者Dread
相关产品推荐
相关产品推荐

