恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Vim文本格式化全攻略:从自动换行到中文排版

  • 首页
  • 资讯中心
  • /
  • Vim文本格式化全攻略:从自动换行到中文排版

相关资讯

快警古武术:构建稳定可复用的技术镜像资产 2026/9/8 2:25:54
STM32 HAL库驱动MPU6050完整指南:从CubeMX配置到姿态解算 2026/9/8 2:25:54
「AI-RAN」 英伟达 Sionna 1.3.2 离线部署 2026/9/8 2:25:54

最新资讯

PTP高精度对时源码解析:从NTP到微秒级同步的工程实践
分光计仿真实验:从调平到最小偏向角的虚拟实操指南
高敏玩家灵敏度调校指南:从DPI到cm/360的完整拆解
复杂齿轮快速测量:“一放一测”如何重塑产线质量闭环
OpenCV图像处理实战:从环境配置到工程化落地的完整指南
线性代数主线:特征值与特征向量,一次讲透矩阵的几何本质

今日推荐

Redis缓存与离线预计算在大数据处理中的实战应用
Android 12热启动闪屏排查:从冷热启动差异到官方SplashScreen避坑指南
加密资产价值投资:原理、方法与实战策略

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Vim文本格式化全攻略:从自动换行到中文排版

发布时间:2026/9/8 2:25:54
Vim文本格式化全攻略:从自动换行到中文排版 1. 开篇为什么Vim的这一章值得单独做笔记最近在系统啃Vim User Manual读到usr_25.txt这一章Editing formatted text时明显感觉它和前面的导航、编辑、查找完全不同——这一章讲的是“怎么让文本保持好看”而不是“怎么快速改文本”。老实说以前我一直觉得所谓“格式化”就是按一下自动对齐或者顶多设个textwidth让Vim自动换行直到把这章读透才意识到Vim对格式化文本的处理其实是一套完整的排版体系从换行策略、段落重排到formatoptions里每个字符对应的行为细节再到中英文混排的标点处理全都有讲究。这篇文章算是我自己的阅读笔记也顺便整理成一份可复用的实操手册。内容会围绕usr_25.txt的脉络展开先说自动换行的几种机制和适用场景再拆解formatoptions这个控制面板然后是gq、J、r这些段落级操作命令最后补充对齐、制表符、中文排版等实战问题。适合所有用Vim写文档、记笔记、写博客的朋友尤其是对“Vim里到底怎么优雅地处理长文本”有疑问的人。读完你应该能回答几个经典问题为什么设置了自动换行后粘贴进来还是一团乱formatoptions里那一串字母分别是什么意思gq格式化中文段落应该怎么配置按照我的习惯会先整体理解设计思路再逐条拆解细节最后结合真实场景复盘。这一章内容虽然看似零散但连起来就是一套完整的“文档排版工作流”这也是我专门为它做笔记的原因。2. 内容整体设计与核心思路理解Vim格式化文本的三种力量2.1 自动换行、手动换行与段落重排的本质区别读usr_25.txt时反复出现三个概念很容易混淆textwidth自动换行、硬换行、以及gq段落重排。我一开始就栽在这里总觉得“设置了自动换行不就行了吗”实际上完全不是一回事。textwidth的作用是在你输入文本时光标到达指定宽度后自动插入换行符。这个换行符是真实写入文件的不是显示上折行。所以Vim帮你做的其实是“边输入边排版”你打一个字它就帮你决定这一行是否该结束。这种方式适合从头开始写正文的场景比如写邮件、写Markdown文档、写纯文本笔记。但问题在于如果你插入了一段别人写好的文本或者粘贴了一段内容Vim并不会自动帮你重新排版。这时候就需要gq命令出场了。gq的作用是把选中的段落按当前设定的宽度重新排版它会智能地合并过短的行、断开过长的行让整个段落重新变得整齐。这个“重排”的行为是第一重力量第二重是“对齐”包括:center、:right、:left这三个命令适用于标题、签名等需要特定对齐效果的文本第三重则是formatoptions它决定了Vim在自动换行、自动格式化时的具体行为规则。理解这个三层结构很重要自动换行解决的是“输入时”的体验段落重排解决的是“已有文本”的整理formatoptions则是底层的规则系统。三者配合才能应对真实场景比如你写了一篇很长的中文笔记中途从网页复制了一段内容进来这时你需要的是用gqap重排段落而不是傻傻地手动删换行符更不是重新打一遍。2.2 为什么用缩进和段落识别来衡量“格式”usr_25.txt里花了篇幅讲Vim如何识别段落这对理解格式化行为非常关键。Vim判断一个段落的依据是空行和缩进连续非空行之间如果有空行分隔就认为是两个段落如果一行以空白字符空格或制表符开头Vim也会把它当作新段落的开始。这个设计初看有点奇怪但实际使用中非常合理。比如写Markdown时列表项、引用块、代码块往往都有缩进Vim通过缩进识别段落能避免把列表项和正文混在一起重排。我有一次用gqap格式化一篇文章结果把所有以-开头的列表项和后面的说明文字全合并到了一起当时还以为是Vim的bug后来发现是因为列表项本身没有空行分隔而我又用了paragraph这个动作。改用gq}或者手动选中范围后问题就解决了。所以读到这一节时我特意做了个笔记格式化之前先想想你要处理的“段落”在Vim眼里是什么样的。如果是普通连续文本用ap没问题如果有缩进结构最好直接用视觉模式选中再gq或者调整formatoptions中的缩进相关选项。理解了Vim的段落识别逻辑后面所有格式化操作都会顺手很多。2.3 设计者的意图让格式化变成“顺手”的事Vim在这个章节里反复传达一个设计理念格式化不应该是一个独立功能而应该融入日常编辑中。比如formatoptions里的c表示在注释中自动格式化r表示在插入模式下按回车时自动带上注释前缀o表示在注释上下插入新行时自动加上注释符——这些设计都是在减少用户手动维护格式的负担。这也是为什么usr_25.txt和常见的排版工具思路不同。word类的编辑器把格式存储为文档属性而Vim把格式视为“文本内容”本身通过一系列命令在编辑过程中实时处理。这种思路的优点是灵活、可脚本化缺点是学习曲线比较陡。在做阅读笔记时我把这种设计思路概括成一句话Vim不会帮你“保存格式”但会给你一套随时调用、随时维护格式的工具。3. 自动换行的选择与textwidth参数详解3.1 textwidth和wrapmargin的适用场景与取舍textwidth是控制自动换行的核心参数单位是列column设为0表示关闭自动换行。wrapmargin是一个相对终端宽度的参数会在距离右边界一定列数时触发换行。二者不能同时用Vim优先使用textwidth如果textwidth为0才看wrapmargin。我自己的习惯是写中文文档时把textwidth设为80这个数值对中文来说也比较合适。因为中文字符显示宽度和ASCII字符不同80列正好能容纳大约40个中文字符阅读体验和英文的72列差不多。英文写作时我按惯例用72这是邮件列表和新闻组流传下来的老传统它比80稍微窄一点因为要让出回复引用的缩进空间。wrapmargin现在用得少了它更适合那种“根据终端宽度自适应”的临时编辑场景但跨设备时不可控。如果你经常在不同终端里编辑同一份文件建议关掉wrapmargin统一textwidth。注意这里的换行是硬换行是在输入时直接往文件里写\n和wrap、linebreak那种只是显示上的软换行完全是两码事。很多人把set wrap当成自动换行那只是让长行在屏幕上换行显示不会修改文件内容。真正的自动格式化必须靠textwidth或手动gq。3.2 设置textwidth的三种方式在Vim中设置textwidth最常见的方式是:set textwidth80。但只这样设置有个问题当你打开不同文件类型时可能希望用不同的宽度。比如写代码时希望完全关闭自动换行写Markdown时希望自动断行写邮件时希望72列。我用的是自动命令配合文件类型判断autocmd FileType markdown,text,mail setlocal textwidth80 autocmd FileType markdown,text,mail setlocal formatoptionstcroqwn这里用setlocal而不是set是为了让选项只在当前缓冲区生效避免影响其他文件。这个细节在usr_25.txt里没有详细讲但在实际使用中非常重要。试想一下你写代码时压根不希望Vim在75列自动插入换行符否则注释里稍微长一点的URL就会被硬切断粘贴代码时更是一团糟。所以给不同文件类型设置不同的textwidth是专业Vim用户的基本操作。还需要注意textwidth的0值。当你在代码文件中看到长行时不希望它自动断开用:set textwidth0就能彻底关闭自动换行之后即使超过宽度Vim也只在屏幕上折行显示不修改文件。这其实是代码编辑场景下的更优选择。3.3 gq命令的使用方法与范围选择gq是手动格式化的核心命令它的本质是对指定范围的文本按当前宽度重新排列。基本用法包括gqap格式化当前段落paragraph这里的ap是文本对象“a paragraph”gqgq格式化当前行gq}格式化到下一空行之前在视觉模式下选中文本后按gq格式化选中区域gqip格式化当前内部段落不包含尾部空行我用的最多的是gqap但这里有个前提当前光标所在位置必须是普通文本段落的一部分。如果光标在一个列表项上gqap会直接把列表项和后续普通文本混合产生非常诡异的结果。最稳妥的做法是先用vip选中段落内部检查一下选区再按gq。如果你处理的文本包含多个段落可以用gq}重复几次也可以直接:g/^/normal gqq这种批处理方式但后者不建议在有缩进结构的文本中滥用。关于gq有个容易踩的坑它默认使用formatexpr如果设置了这个选项的话如果没设置才使用内置的格式化函数。所以如果你在vimrc里设置了formatexpr一些插件会自动设置可能会发现gq的行为跟手册描述的不太一致这时候需要检查一下当前缓冲区的formatexpr到底是什么。4. formatoptions逐项拆解Vim格式化行为的总开关4.1 formatoptions是什么以及怎么查看formatoptions缩写为fo是Vim格式化行为的总控制开关。它的值是一个由字母组成的字符串每个字母代表一条行为规则。查看当前值用:set formatoptions?设置用:set formatoptionstcqr。在Vim 8.2以上版本fo还支持用和-增减单个标记比如:set formatoptionsm这个用法非常方便。usr_25.txt对这一部分的讲解比较分散我在这里系统整理一下常见的标记位标记英文全称含义说明ttextwidth自动换行输入到达textwidth时自动插入换行ccomment自动换行在注释中按textwidth自动换行且保留注释前缀r回车自动补注释前缀插入模式下按Enter后自动带上注释符如//或#o新行自动补注释前缀在注释上下插入新行时自动带上注释符q允许gq格式化允许gq命令自动格式化且允许注释格式化w行尾空格保留格式化时保留行尾空格避免破坏某些格式a自动段落重排输入时自动对段落重排类似gq的自动版1不打断单字母单词断行时避免把单个字母单词留在行尾2段落第二行不缩进格式化段落时第二行不做悬挂缩进b数字列表自动续号格式化时自动在数字列表下一行补编号l长行不自动折断已超过textwidth的长行在格式化时保持原样m多字节字符间断行允许在ASCII字符和全角字符之间断行M多字节字符内断行允许在两个多字节字符之间断行j删除注释前缀格式化时删除注释前缀并合并行n数字列表识别格式化数字列表时保留编号不把它当普通文本这张表是我读这一章时反复对照的最终版本建议存下来。上面提到的m和M对中文排版尤其重要后面单独展开说。4.2 常见formatoptions组合和推荐配置先说说最常见的两组组合。一组是写代码时常用的:set formatoptionscroql。这个组合的意思是在注释中按textwidth换行c回车后自动带上注释前缀r在注释上下插入新行时也自动带注释前缀o允许gq格式化且保留注释前缀q对已经超长的长行不折断l。这组配置非常适合写代码的场景因为代码里的长字符串、URL、base64之类的超长内容不会被意外折断Vim只老老实实在注释里帮你排版。另一组是写普通文档时常用的:set formatoptionstcq。它的意思是输入时按textwidth自动换行t在注释中自动换行c允许gq格式化q。如果不想要注释相关特性还可以简化成:set formatoptionstq。这里的a选项很多人建议开启它会在你编辑段落中间时自动重排整段但实际体验比较激进我试过一段时间觉得在插入模式下每次修改都会触发重排光标经常跳来跳去后来关掉了。如果你主要用Vim写中文内容我个人比较推荐的组合是set formatoptionstcqwmt保证输入时自动换行c和q保留注释格式化能力w防止尾随空格被删除m则允许Vim在中文标点和汉字之间、或汉字和ASCII字符之间断行。这个组合兼顾了中英文混排的常用场景后面我在中文编辑部分还会细说。4.3 formatoptions在注释场景中的特别行为formatoptions里的c、r、o都跟注释相关在实际编辑时体现得非常直观。比如你打开一个C文件光标在//开头的注释行末尾按回车下一行会自动出现//如果光标在/*块注释中按回车Vim还会自动在行首加一个*。这些行为依赖comments选项定义了什么算注释comments是一个非常古老但强大的选项常用格式定义在文件类型插件中。我遇到的比较迷惑的情况是在Python里写#注释时按回车会自动补#但有时候补出来的#前面多了一个空格导致缩进结构看起来怪怪的。后来发现Vim的自动补注释前缀实际上是从comments的格式字符串里来的而不同文件类型对#后面是否跟空格的定义不同可以通过:set comments?查看。如果不想被这个行为困扰可以在formatoptions里去掉r和o这样回车后就不会自动补注释前缀了更接近普通编辑器的行为。但如果你经常写带注释的代码强烈建议保留r和o配合自动缩进注释体验非常顺畅。5. 段落重排实战合并、断开与对齐的细节5.1 合并与断开行的操作逻辑在格式化文本过程中经常需要把两行合并成一行或者把一个很长的行断开。Vim里合并行的命令是J大写J它会把下一行拼接到当前行末尾并在中间加一个空格gJ则不加空格直接拼接。如果不想让Vim自动判断间隔可以在J前面加计数比如3J会把后面三行都合并进来。我平时写Markdown时经常遇到一种情况从网上复制来的文本每一行都很短但实际上是同一个段落手动删除换行符非常痛苦。这时候我一般先用vip选中段落再按gq重排就不需要手动合并了。但如果只是单纯想把两行合并成一行J更快。另外J在合并时会把行首的多余缩进去掉这也是它比gJ更适合文本编辑的原因。断开行的命令思路正好相反在普通模式下把光标移到想断行的位置按r加回车rEnterVim会把当前行从光标处截断为两行。这个命令在手册里讲得很简单但实际用它来重排长段落非常高效。还有一种方式是在插入模式下按CtrlJ或CtrlEnter效果类似。需要特别注意在普通模式下直接按回车不会断行只会把光标移到下一行开头所以很多新手疑惑“为什么我在Vim里按回车没法换行”——那是因为你在普通模式下要先进入插入模式。5.2 段落的合并与格式化配合一个具体案例举个实际例子。有次我在写一篇技术博客从旧笔记里摘了一段内容粘贴后变成了这种状态Vim是一款高度可定制的文本编辑器 很多开发者称它为“编辑器之神” 但是它的学习曲线非常陡峭 尤其对新手来说。 它提供了多种模式 包括普通模式、插入模式、可视模式等 每个模式下的操作逻辑都不同。这一段里每行都很短段落结构混乱。我的处理方式是光标放到第一句输入vip选中整个段落然后按gq。Vim会自动按照textwidth把内容重排成宽度一致的行。如果我还希望段落之间保留一个空行只需确认原文里已有空行即可vip只会选中段落内部不会碰空行。处理完第一段后光标跳到下一段重复操作。这种场景中我踩过的坑是如果段内有以空格开头的行Vim可能认为那是另一个段落导致vip只选中了其中一部分。解决方案是直接使用gq}格式化到下一个空行或使用:g/^$/!这类外部命令来处理更复杂的重排需求。5.3 文本对齐center、right和left三个命令Vim提供的对齐命令用起来非常简单但很多人不知道它们的存在。:center [width]、:right [width]、:left [width]分别把选中的行居中、右对齐、左对齐到指定宽度。这里的width指的是内容区宽度默认是textwidth的值如果textwidth为0则使用80。我只在写纯文本通知、ASCII艺术字或者邮件签名时用这几个命令。比如做一封邮件签名:right 60输入完名字和联系方式后执行一下整个签名区域就会右对齐到第60列比手动敲空格精准得多。处理多行对齐时可以先视觉模式选中多行再运行命令也可以:3,5center指定行范围。注意这几个命令只控制水平方向的对齐不会影响上下顺序。还有一个和formatoptions相关的小细节对齐命令执行后可能会改变行尾空格如果你设置了w选项就不会删除尾随空格。如果对齐结果不符合预期可以检查textwidth是否设置成了0因为宽度为0时对齐命令可能不会按预期工作。5.4 格式化时如何处理段落中的链接和长URL一个非常常见的痛点写Markdown博客时段落里经常有很长的URL。如果这些URL跨行了很多Markdown渲染器会识别错误导致链接失效。Vim的解决方案是formatoptions里的l选项它明确告诉Vim如果一行本身已经超过textwidth格式化时不要硬来折断它。所以对于包含长URL的段落我的做法是:set formatoptionsl然后才执行gq。这个细节在usr_25.txt里只提了一句但实际效果差别很大。没有l时gq可能会在一个很长的URL中间断行有l后长行保持原样只会处理较短的那些行。如果你经常写博客强烈建议直接把这个选项写进vimrcset formatoptionsl但它也有一个副作用遇到超长行时格式化后的段落整体宽度可能不均匀某些行明显比textwidth长。这在纯文本场景里稍丑但为了链接不出错值得接受。6. 中文与多字节文本的格式化经验6.1 为什么中文格式化容易“卡住”或断行错误如果你用Vim排过中文文本可能遇到过几个让人头疼的问题一是gq格式化后中文标点跑到行首二是断行时在汉字中间切开三是设置为formatoptionst后输入中文根本不在正确位置换行。这些问题的根源在于Vim默认的断行规则主要面向英文单词。英文的断行通常发生在空格处Vim可以很自然地判断一个单词是否结束中文没有空格汉字之间是连续排列的Vim不知道在哪里断行是合理的。于是开启textwidth后Vim粗鲁地在列数到达width时直接切断导致中文被拦腰折断。usr_25.txt对多字节文本的说明集中在formatoptions的m和M两个选项上。m表示“允许在多字节字符和ASCII字符之间断行”在写中英混排时特别重要。举个例子Vim是一款强大的文本编辑器深受开发者喜爱。如果不设mVim可能偏好在英文单词之间的空格断行设置m后它允许在中文“器”和英文“Vim”之间直接换行更符合中文排版习惯。但仅设置m还是不够中文标点出现在行首的问题是另一回事这个通常需要配合formatoptions一起处理。6.2 中文排版时的formatoptions推荐和标点挤压问题对中文正文写作我最终稳定下来的配置是set textwidth80 set formatoptionstcqwm其中t开启自动换行c保留注释换行q允许gqw防止尾随空格被删m允许在ASCII与多字节字符之间断行。这里没有加M因为M允许在两个多字节字符之间直接断行处理不好容易在中文句子中间随便断反而不如用t的列数控制。标点挤压问题也是中文排版的常见坑gq格式化后句号、逗号可能出现在行首这在正式中文排版里是不允许的。Vim本身没有内置的标点挤压规则它把标点当作普通字符处理所以这类问题需要借助外部工具比如textfilter插件或者用系统命令par、pandoc等来做更智能的标点处理。如果你只是随手写笔记其实不用太纠结标点位置如果是要发布的长文我一般会在最后用其他排版工具统一处理Vim只负责编辑阶段的大致重排。6.3 中英文混排时gq的使用技巧中英文混排是Vim格式化最复杂的场景。段落里经常出现英文缩写、URL、中文标点和全角空格gq在处理这类内容时很容易出现意外折行。我的经验是格式化前先用视觉模式选中段落肉眼确认一下可能被错误断行的位置再执行gq。如果发现格式化结果不对按u撤销调整formatoptions或者手动在需要断行的地方插入空格再次gq。还有个小技巧中英文之间加入一个空格比如写“使用 Vim 编辑文本”既能提高可读性也能让Vim找到更多可断行的位置减少断行错误。中文排版规范其实也支持中英文间加空格所以这个习惯不仅方便Vim格式化也让最终文本更专业。7. 格式化相关常见问题与排查技巧7.1 设置了textwidth但输入时没有自动换行这是最常遇到的问题。可能的原因有三个一是formatoptions里没有t只有textwidth设置了但fo不允许自动换行一样是不生效的二是你处于“粘贴模式”paste或paste相关选项被打开粘贴模式下Vim会禁用自动换行和自动缩进三是你编辑的文件是二进制模式或设置了binary选项。排查方法很简单依次执行:set formatoptions?、:set paste?、:set binary?看看哪个选项跟预期不符。最常见的是fo里缺少t手动设置一下就好。如果是粘贴模式的问题:set nopaste关闭即可。注意写vimrc时如果把set paste写进去了会导致自动换行永远不生效这是新手很容易踩的坑。7.2 gq格式化后内容消失或错乱gq格式化时如果发现内容消失了多半是选中范围不对把某些不应该格式化的内容也包含了进来。比如在包含多级列表的Markdown文档中gqap把列表项和正文合并看起来就像“内容变乱”了。另一种情况是formatexpr被某个插件设置成自定义函数而自定义函数出了问题导致格式化结果异常。可以用:verbose set formatexpr?查看是谁设置的再决定是否覆盖。如果内容真的丢了第一时间按u撤销然后重新选择范围格式化。不要慌Vim的撤销很可靠。格式化前也可以先:set undofile开启持久化撤销这样即使关掉文件再打开也能恢复。7.3 格式化后行尾有空格或行首有缩进formatoptions里的w选项控制是否保留行尾空格。如果你发现格式化后行尾有很多空格通常来自复制粘贴的文本可以关掉wVim重排时会自动去掉它们。反过来如果你发现行尾空格被删导致Markdown里两个空格换行失效就需要开启w。不同场景需要不同配置这个得根据文件类型灵活调整。行首缩进的问题则要看formatoptions里的2和q。2控制格式化后的段落第二行是否进行悬挂缩进如果你不想让Vim自动加缩进可以在fo里不带2。如果使用了gq且行首出现了多余的缩进检查当前缓冲区的autoindent、smartindent、cindent是否开启了它们可能会和格式化逻辑相互影响。7.4 格式化在文件中随意跳动光标gq和自动格式化会修改文本所以光标位置可能发生变化。如果你希望格式化后光标保持在原位置附近可以借助返回之前的标记。还有一个更彻底的思路使用:keeppattern配合宏在格式化过程中保存和恢复光标位置。不过实际操作下来更实用的做法是格式化后按两个单引号跳回上一次停留的位置这个技巧在Vim里非常通用。如果自动换行时光标跳得比较猛多数是因为formatoptions里的a选项被开启了。a会在你编辑段落中间时自动对整个段落重排光标会跟着重排后的位置走。如果觉得这个行为太激进从fo里去掉a即可这也是我最终只用tcqwm不用a的原因。8. 实操总结我现在的格式化工作流读完成这一章并反复实操后我最终沉淀下来的工作流是这样的。这个流程不算复杂但覆盖了我日常写作场景的90%需求。首先在vimrc里做基础设置按文件类型区分 普通文本和Markdown autocmd FileType markdown,text,mail setlocal textwidth80 autocmd FileType markdown,text,mail setlocal formatoptionstcqwm 代码文件 autocmd FileType c,cpp,python,javascript setlocal textwidth0 autocmd FileType c,cpp,python,javascript setlocal formatoptionscroql写正文时我主要依赖textwidth80配合set formatoptionstcqwm输入过程中Vim自动在合适的列断行写中文时靠着m选项尽量不在汉字和英文之间胡乱切断。写完一个段落后如果发现段落内部有贴进来的内容导致乱行我会用vip选中段落再按gq统一重排。遇到超长URL时因为formatoptions里没有l外的特殊处理我会临时:set formatoptionsl再格式化或者直接手动把URL放在一个独立行。对齐操作比较少但每次都很精准要居中标题就:center要右对齐邮箱签名就:right。合并行时用J断开行时用rEnter。如果发现某次格式化结果不理想u撤销重来如果搞不清当前选项是什么:set formatoptions?、:set textwidth?两个命令就能自查。这个工作流的核心是理解自动换行管输入gq管重排formatoptions管规则。把这三层关系理清了Vim的文本格式化能力基本就能全部发挥出来再也不用面对“为什么粘贴进来的文本乱七八糟”“为什么自动换行没生效”“为什么中文断行这么怪”这类问题了。建议你读完这篇笔记后开一个临时文件把textwidth、formatoptions、gq、J、:center这些命令逐个试一遍体会一下每个选项到底改变了什么。动手试一次比看十遍手册都管用。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号