Vim编辑器从入门到进阶:模式原理、高频命令与实战配置

发布时间:2026/10/16 7:37:29
Vim编辑器从入门到进阶:模式原理、高频命令与实战配置 1. 先说说我为什么在这个时间点死磕Vim写这一篇的时候我在Linux下做日常操作已经快两个月了。前几篇日志分别记录了Shell基础、文件权限和进程管理越往深入走越发现一个尴尬的问题不管用nano还是gedit编辑配置文件的时候总觉得不够顺手。尤其是要改SSH配置、调Nginx参数、改系统服务文件的时候经常需要在终端和编辑器之间来回切换效率低得让人烦躁。这时候我才意识到Linux下桌面环境里的文本编辑器再怎么方便真正到了服务器上、到了纯命令行环境里你还是绕不开Vim这个名字。网上有句话说得很实在“Vim不需要你喜欢但你会需要Vim。”它不是最好的编辑器但它几乎是Linux系统里默认都会装的编辑器是那种你不想学、但早晚得学会活下去的工具。这篇日志我打算把这三周用Vim的完整过程记录下来包括我踩过的坑、整理的命令笔记、配置过的vimrc以及几个让效率明显提升的思维转变。如果你也处在“知道该学但一直拖延”的阶段希望这篇能减少你一些摸索成本。提示写这篇日志的时间点是个人记录的第4篇默认读者已经掌握基本的Linux命令行操作比如cd、ls、cat这些基础命令本篇不再重复。2. 先拆解Vim的三大模式和它的设计逻辑2.1 为什么Vim学习曲线陡峭核心原因是模式化设计任何用过Windows记事本或者macOS文本编辑的人第一次打开Vim都会一脸懵输入文字没反应方向键变成了ABCD退出按什么CtrlC没用这不怪你根本原因在于Vim的哲学和普通编辑器完全不一样。普通编辑器是“打字机思维”——你敲什么屏幕上就出现什么Vim是“语言思维”——你敲的是有结构的指令需要告诉它现在要做什么然后它才进入相应状态。Vim一共有三种核心模式普通模式Normal、插入模式Insert和可视模式Visual以及命令行模式。说“三大模式”其实少算了一个命令行模式常常和普通模式一起提但掌握这四个会更容易理解整个操作逻辑。刚打开Vim时你处于普通模式Normal Mode在这个模式下键盘上的几乎所有按键都是命令而不是输入。h表示光标左移j表示下移k表示上移l表示右移。按i进入插入模式Insert Mode这个时候才能像正常编辑器一样打字录入。按Esc回到普通模式。想保存退出需要在普通模式下按:进入命令行模式输入wq回车。这个设计让无数新手骂娘但它的优势非常明显——你的手指不用离开键盘中排区就能完成所有操作。想想你在其他编辑器里选中一整行需要干什么鼠标移到行首按住左键拖到行尾松开再按删除键。在Vim里普通模式下dd就删除整行yy复制整行p粘贴。掰开揉碎说普通模式的设计目的就是让“编辑动作”和“文字输入”彻底分离各做各的。2.2 一张表说清楚模式切换初学者先把这三个命令背下来很多教程一上来甩几十个命令看着就头大。我走了弯路之后发现其实真正入门只需要三个切换命令剩下的都是锦上添花。目标动作按键说明从普通模式进入插入模式i光标当前位置之前开始输入从插入模式返回普通模式Esc任何时候按Esc都能回到普通模式保存并退出:wq 回车命令行模式下输入如果你只是偶尔改个配置文件这三条就够你活下去了。但如果你想把Vim当成日常主力编辑器那还需要理解光标移动、文本选取、批量操作这些更进一步的概念。我个人的理解方式是Vim的命令像是一门微型语言。动词操作动作 名词操作对象 完整的指令。例如d是删除动词w是一个单词名词组合起来的dw就是从光标位置删除到单词末尾。这种组合逻辑才是Vim真正让人着迷的地方也是效率提升的根源。3. 高频操作命令详解与实操心得3.1 光标移动把方向键戒掉的前三天会很不适应刚用Vim的人最容易犯的毛病还是忍不住按方向键。Vim经典的四键h、j、k、l对应左、下、上、右一开始慢得让人抓狂但坚持几天之后就会发现手指根本不需要离开键盘中排区肌肉记忆一旦形成速度反而比方向键快很多。我把移动命令按照“词级移动”和“行级移动”两个维度整理了一遍日常使用频率最高的这几组命令作用备注w跳到下一个单词开头wordb跳回上一个单词开头backwarde跳到当前或下一个单词结尾end of word0跳到行首数字零$跳到行尾注意和正则的含义一致gg跳到文件第一行两个快速连按G跳到文件最后一行大写GCtrl f向下翻一页forwardCtrl b向上翻一页backward实操心得在改配置文件时w和b这两个键的组合使用频率极高。比如你在一个Nginx配置里想把server_name整段改掉先按/server_name定位到关键词再用w精准移动到每个单词之间去修改比肉眼扫描快得多。3.2 增删改查核心编辑操作的肌肉记忆训练文本编辑最重要的无非是“增删改查”四个动作。在插入模式里“增”没什么好说的关键在普通模式下的“删”和“改”。x删除光标所在字符小写相当于退格键但删的不是前一个而是当前字符dd删除光标所在整行d$从光标位置删除到行尾dw删除到下一个单词的开头u撤销undoCtrl r重做redo这里我特别想说一下d命令的用法。d是动词需要搭配一个“移动范围”作为名词才能构成完整动作。dw 删除到下一个单词开头d$ 删除到行尾dd 删除整行。这个组合逻辑通顺之后你会发现一些自定义组合也可以自己推出来比如dgg是从当前行一直删除到文件开头。再补充一个我用了很久才习惯的技巧按.可以重复上一次的修改操作。这个命令看起来不起眼实际用起来是神器。比如你需要把连续十行行首都缩进两次只需要做一次然后连续按九次.就能完成批量操作省时省力。3.3 跳转和查找长文件的生存之道短配置文件随便看都没问题但到了几百行甚至上千行的日志文件没有高效的跳转和查找方式就等着崩溃。/关键词 回车从当前位置向后搜索关键词?关键词 回车从当前位置向前搜索关键词n跳转到下一个匹配项nextN跳转到上一个匹配项:行号 回车直接跳到指定行Ctrl o跳转到上一次光标位置old positionCtrl i前进到下一次光标位置实操心得Ctrl o在查看日志时特别好用。你跳到一个报错信息位置看完之后还想回到原来的查找起点再按一下Ctrl o就回去了。这个命令在Vim里玄学一样存在但很多人用了好多年都没发现。4. 把Vim配置成适合自己的编辑器4.1 vimrc配置文件第一件该做的事是开启语法高亮Vim默认配置在纯文本环境下看起来灰蒙蒙的毫无美感。好消息是配置它不需要额外安装什么只需要编辑~/.vimrc文件就行。第一次配置只需要四行set number 显示行号 syntax on 开启语法高亮 set autoindent 自动缩进 set ts4 设置Tab宽度为4个空格这个文件不存在就自己创建一个。写完之后重新打开Vim你就能看到行号和颜色了。但我要多说一句set ts4只是把Tab显示宽度改成4格并不会真的把Tab字符转成空格。如果你写的是Python代码混用Tab和空格会造成莫名其妙的心智磨损。建议再加上一行set expandtab让Tab键自动变成空格。4.2 展示行号vs相对行号一个提升效率的小细节普通的set number显示的是绝对行号比如当前是第156行显示156。但Vim还有一种更聪明的方案叫相对行号relativenumber它显示的是“距离当前行有几行”。打个比方如果你看到当前行上方显示数字5意思是往上数5行是那个目标位置这时只需要输入5k光标就能精准跳上去。在批量修改连续区域的配置时相对行号配数字跳转的效率远高于绝对行号。我个人现在的配置是set relativenumber同时保留set number显示当前绝对行号。4.3 插件管理新手先别急着上但要认识Vundle和vim-plug网上关于Vim插件的帖子铺天盖地新手很容易迷失在装插件的快乐里然后发现插件之间的快捷键冲突让人头秃。我的建议是入门阶段先不装任何插件纯手搓两周把基础命令练熟再考虑通过插件提升体验。如果确实想装目前社区的共识是用vim-plug或者Vundle这类插件管理器。vim-plug为例在~/.vimrc加一段配置call plug#begin(~/.vim/plugged) Plug preservim/nerdtree Plug vim-airline/vim-airline call plug#end()然后:PlugInstall就装好了。但注意装插件的核心目的是为了省力而不是为了炫耀一个插件如果装完之后一个月没用到就应该考虑把它移除。5. 实战场景一个Linux学习者的Vim日常5.1 场景一修改SSH配置文件SSH是Linux入门必学的远程连接方式而它默认的配置文件/etc/ssh/sshd_config恰好是练习Vim的好材料。首先用sudo vim /etc/ssh/sshd_config打开文件输入密码进入。如果你在桌面环境里没有sudo权限大概率会看到“E45: readonly option is set”报错这时候先按Esc输入:q!强制退出再重新用sudo打开。以改端口为例先按/Port回车搜索到Port字段所在行把光标移到数字上按x删除一个字符然后按i进入插入模式输入新端口。改完按Esc:wq保存退出。整个过程十秒以内就能搞定。5.2 场景二用Vim编写Shell脚本写Shell脚本和改配置不一样它需要更频繁的移动和插入操作。我的习惯是打开文件后先按gg跳到第一行写好解释器声明然后逐段写函数和逻辑。中途需要修改某一行时直接dd删掉整行重写比一个个字符去删快得多。还有一个很多教程不太会提的小技巧按Shift G在文件末尾新增一行更高效。在编写脚本时如果函数不多大部分人习惯把新函数追加到文件末尾这个快捷键结合o命令在下方新开一行并进入插入模式体验非常顺滑。5.3 场景三查看系统日志文件查看日志用的最多的不是编辑功能而是查找和跳转。比如系统报错日志/var/log/syslog可能动辄几千行使用/error快速定位错误关键词再用n循环跳转基本就是看日志的日常操作。这里分享一个我实测很稳的操作如果日志里有大量规律性内容按v进入可视模式选中几行再输入:,sort就能对选中的内容排序。对于日志去重可以选中后输入:,sort u去重排序一次完成。这个操作是我后来才发现的对处理日志来说简直是效率利器。6. 常见问题与排查技巧实录学Vim的这二十多天我被好几个问题卡住过整理出来分享给同样在坑里的朋友。6.1 方向键不移动光标反而输出ABCD这个问题是所有新手的入门第一坑。原因是Vim处于普通模式时h、j、k、l是移动键但如果你按的是键盘右下角的方向键Vim会根据不同配置产生很多“诡异”行为可能是ABCD也可能能移动但极度不舒服。解决办法不要怀疑自己改用h、j、k、l。我建议可以临时在终端里开一个vimtutor对照练习。vimtutor是Vim自带的教学程序在终端输入vimtutor就能打开里面有30分钟的分步练习比乱试快得多。6.2 按Esc没反应界面卡死了Vim不是卡死大概率是你不小心触发了某种模式。这时最稳妥的恢复方式是连续按Esc然后按Ctrl r重做可能被误撤回的部分。如果连Esc都无效检查是否按了Ctrl s这个组合键在多数Linux终端里是停止输出XOFF的意思表面看起来像终端卡死实际上是冻结了屏幕输出。按Ctrl q可以恢复。注意新手的恐慌根源是不知道当前处于什么模式。可以在~/.vimrc中加一行set showmode这样在接受底部状态栏会常驻显示当前模式减少迷路概率。6.3 修改了文件却保存不了如果你Vim打开了系统守护进程生成的配置比如/etc/nginx/nginx.conf即使你不是root用户你都可能遇到“E212: Cant open file for writing”的报错。原因很简单普通用户对这个文件没有写权限。解决方案如果文件已经用普通用户打开按:w !sudo tee %可以借用sudo权限写入。这个命令的原理是调用sudo去执行tee命令把Vim缓冲区内容覆盖回原文件。不过最干净的做法还是退出后用sudo vim重新打开。6.4 插入模式里的自动缩进错乱修改YAML或者Python文件时自动缩进时不时抽风对齐错乱让人头大。此时先按Esc回到普通模式再按u撤销到出错前的状态然后检查:set autoindent是否开启。如果默认配置是关闭的粘贴代码时缩进就会全乱。另一个常见坑是粘贴代码时Vim自作聪明地补缩进。在普通模式下输入:set paste再进入插入模式可以暂时关闭自动缩进粘贴完再set nopaste恢复。这在复制大段代码时极其实用。6.5 搜索时特殊字符引发的混乱在Vim里搜索/符号本身或者*这类正则表达式里的特殊字符时你会得到很多莫名其妙的结果。比如搜索文件路径/home/user/document出现在搜索模式里就是一堆“没找到”或者直接报错。正确做法是在特殊字符前加反斜杠转义搜索路径应该写成\/home\/user\/document。或者更简单用?反向搜索也能避开部分问题。如果只是想找某个单词把光标停在单词上按*就可以直接高亮所有匹配项这个操作比手动输入搜索词快得多。7. 用Vim两周后我对文本编辑的思维变化刚开始学Vim的时候我总觉得它浪费了我太多时间明明鼠标点点就能做到事情偏要背那么多命令。但折腾到现在我对“工具”这个词有了不一样的理解。文本编辑这件事不是“能用就行”的问题而是“是否顺畅地融入工作流”的问题。普通编辑器里我需要把大量心思花在“如何操作文字”上而在Vim里文字操作基本变成了条件反射。说一个具体的感受我在用Vim之前改配置文件经常改完一行心里还要默念“好的现在保存”然后移动鼠标去点保存按钮现在全程键盘操作下来脑子里思考的更多是配置内容的逻辑而不是“下一步我该按哪个键”。这个转变给我的感觉是大脑的工作记忆不再被琐碎操作占据你才能真正把精力聚焦在做事本身。还有一点是我的真实体会Vim的学习曲线虽然陡峭但它一旦过了那个坎后面几乎是一马平川。因为Vim的命令是“组合式”的学会基本动词和名词之后后续新命令的学习成本是指数下降的。这和学习其他编程语言有点像——先苦后甜前期投入后的收益周期非常长。8. 一个让Vim效率再次提升的进阶技巧如果你已经过了只会用i、Esc、:wq的阶段我想分享一个最近刚实验成功的技巧宏录制。Vim的宏操作能把一串按键录下来然后反复播放。按q加一个字母比如q再按a开始录制宏a输入一系列操作再按q结束。之后a播放一次宏a播放上一次执行的宏。举个例子假设你有一个几十行数据需要每行前面加一个tab键传统做法是逐行操作有了宏之后录制一次“行首插入tab → 跳到下一行”的操作然后按住a连续执行几十次效果立竿见影。我给新手的一句建议是宏录制不要急着学等你在Vim里熟悉了移动、修改、跳转的基本操作之后再来学否则录出来的宏里容易混入多余的按键反而让你怀疑人生。但一旦你学会它就相当于给自己做了一个迷你自动化脚本离“用Vim写成自动化工具”又近了一步。最后说说我下一步的计划接下来打算把Vim的窗口分屏:split、:vsplit和缓冲区buffer管理真正用起来边用边补再配合Vim内置的终端和编译命令尝试把它彻底变成一个轻量级IDE。如果你也正在学这个阶段希望在评论区聊聊你用Vim过程中最有成就感的那个操作我们下篇日志再见。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询