☰
Vim 快捷键入门到进阶:模式编辑与组合命令实战指南
2026/9/28 12:05:46 网站建设 项目流程

如果你真正认真想过要不要学 Vim,一定绕不开两个问题:一是它到底值不值得学,二是那些快捷键到底怎么记。我的答案是:值得,而且急不来。Vim 是那种“开始想砸键盘、后来离不开”的编辑器,快捷键多得像一本字典,但你根本不需要全部背完,只需要先把 20% 的核心组合用成肌肉记忆,就已经能甩开鼠标流一大截;等用顺了再慢慢往前台阶走,自然会越用越顺手。

这篇我按自己多年当主力编辑器用的习惯,把常用快捷键重新梳理了一遍。不按官方文档的枯燥分类,而是按“你刚上手先记什么”“你用顺了再补什么”“你日常实操怎么打组合拳”三个层次来写,顺便把我踩过的坑和排查方法也放进来了。适合刚接触 Vim 的入门者,也适合用了一段时间但总觉得差点意思的进阶用户。

1. Vim快捷键为什么值得学:模式编辑与组合逻辑

1.1 一次击键解决一个操作:快捷键的本质

很多人第一次打开 Vim 直接蒙了,打字全是乱码一样的效果。这不是坏了,而是你处在普通模式(normal mode)下,Vim 把键盘上几乎每个键都定义成了“操作指令”。这个设计跟现代编辑器完全相反:VS Code、IDEA 里你永远在输入文本,想操作得靠 Ctrl/Alt 组合键;Vim 则是把“编辑文本”本身当成一套命令系统,比如按dd删一行,按yy复制一行,按p粘贴,按u撤销。

这个理念看起来反直觉,但它最大的优势是:手不用离开键盘,眼睛不用找鼠标指针,视线不需要在键盘、鼠标、屏幕三点之间来回移动。你想想,写代码或者写长文的时候,每隔几秒要去摸一次鼠标,那种打断感有多烦。Vim 就是把你所有高频操作压缩成一次或两次击键,让思维流不断掉。等你真正习惯之后,再回去用别的编辑器,第一反应是:复制粘贴为什么不直接yyp?

刚开始不要贪多,我先建议你把手机锁屏壁纸换成一张 Vim 速查图,天天瞄一眼,比专门拿一天去背有效得多。快捷键这东西,靠的是肌肉记忆,不是靠大脑记忆。

1.2 动词+宾语的组合思维

Vim 快捷键看起来千变万化,本质上有规律,就是“动词 + 范围/对象”。

动词类包括:c修改(change)、d删除(delete)、y复制(yank)、v选中(visual)。范围类包括:w单词、$行尾、0行首、}段落、(句子。把它们拼起来就是命令:

  • dw删除一个单词(delete word)
  • cw修改一个单词(change word)
  • y$复制到行尾
  • d}删除当前段落

这个思路一旦建立,你就不是死记每一个组合了,而是像搭积木一样现场生成命令。这也是为什么 Vim 的老手遇到再复杂的编辑需求,也能用几键完成,因为命令是活的、可组合的。

我再举个例子:d3w是删除接下来的三个单词,c2t.是修改直到第二个点号之前的内容。这不只是“背了会了”,而是你理解了语法以后能看到更多可能。Vim 帮助文档里把这些结构叫 operator 和 motion,其实不用管术语,你只要记住“动词加范围”这个词法就够了。

2. 新手一定要背下来的第一批快捷键

2.1 移动与跳转:先把光标操控练熟

移动是 Vim 里最基础也最值得花时间练的部分。基础四键hjkl分别对应左、下、上、右。刚上手的人极度不适应,因为这四个键位置相距不远,手刚放上去容易按错,尤其是j和k的方向性总是记混。我自己的记忆法是:j像一个朝下的钩子,所以是向下;k是朝上的棍子,所以是向上。你也可以按自己习惯想个口诀,怎么好记怎么来。

单字符移动只解决短距离问题,真正提升效率的是“按词移动”和“按行首尾移动”:

  • w跳到下一个单词开头
  • b跳到上一个单词开头
  • e跳到当前单词或下一个单词结尾
  • 0跳到当前行行首(严格说是本行第一个字符)
  • ^跳到本行第一个非空字符
  • $跳到本行行尾
  • gg跳到文件第一行
  • G跳到文件最后一行
  • HML分别跳到屏幕顶部、中间、底部

你可能会问,hjkl那么慢,为什么不用方向键?因为方向键在键盘右下角,你每次按方向键,右手都要离开标准输入位置,来回折腾反而更慢。Vim 把移动键放在字母区就是为了让你手不离键盘。如果实在不习惯,可以在配置里把方向键映射成别的高级功能,我后面讲配置时会提到。

还有一个特别推荐的移动技巧:f加字符,可以在当前行内搜索并跳到下一个该字符的位置,再用;或,前后重复查找。比如fx跳到当前行下一个字母 x,想继续找就按;。这个命令在改一行代码时极其高效,比如你看到了第 40 列的某个字母,与其一个一个l移过去,不如直接f加那个字母一步到位。

长距离跳转还有一组配合:Ctrl+d向下翻半屏,Ctrl+u向上翻半屏,Ctrl+f向下翻整屏,Ctrl+b向上翻整屏。四个键很容易搞混,我的记忆法是f代表 forward(向前),b代表 backward(向后)。Ctrl+d/u和Ctrl+f/b的区别就是翻半屏和翻整屏,实际用起来半屏比整屏舒服,因为保留了上下文。

2.2 编辑操作核心:删除、复制、粘贴与撤销

移动练顺了,接下来就是编辑。Vim 的“删除”其实是剪切,被删的内容会进寄存器,可以用p粘出来。也就是说dd剪切一行,p粘贴到下一行,P粘贴到上一行。x删除光标下的一个字符,相当于老式键盘上的 Del。dw删除一个单词,d$删除从光标到行尾。

复制统一叫 yank,所以yy复制一整行,yw复制一个单词,y$复制到行尾。这里要特别注意:yy和dd会把整行(包括换行符)放进寄存器,粘贴的时候会在其他行上方/下方新建一行,而yw这样的单词复制粘贴时是嵌在文本里的,不产生换行。很多新手就是在这上面懵的,复制了一个单词,粘贴结果整行都变了,其实就是没分清行复制和字符复制。

修改操作c(change)是 Vim 里效率最高的一个键,等于“删除 + 进入插入模式”。比如cw删除当前单词并进入插入模式,你可以直接打字替换它;cc清空当前整行并开始输入;c$删除光标到行尾并开始输入。我日常改代码时,用cw的频率远高于“先删再进插入模式”的两步操作。

撤销与重做:u撤销上一步操作,Ctrl+r重做。注意 Vim 的撤销是按“命令”而不是按“字符”来记的,比如你一口气连续输入十个字母,在普通模式按一次u会一次性撤销全部十个字母。如果你只想撤销最后一个字母,需要先把一次输入断成多次,比如输入一部分后按一次Esc再进入插入模式输入下一部分。这一点和记事本式的编辑器习惯很不一样,需要适应。如果你误删了什么,先别慌,多按几次u往回找,基本都能找回来。

还有一个容易被忽略但极其实用的键:.(小数点)。它用于重复上一条修改命令。例如你刚才做了一次dw,那么按.就会重复删除一个单词。这个键配合移动命令,可以在整篇文档里快速重复同类修改。举例:你想把所有foo都改成bar,第一个foo用cwbar改完,按Esc回到普通模式,然后一路用n跳到下一个foo,按.完成同样修改。这个流程我几乎每天都在用。

2.3 搜索与替换:别再用眼睛找字符串了

在 Vim 里查找字符串非常简单,普通模式下按/然后输入要查的内容,回车后光标跳到第一个匹配项;按n跳到下一个匹配项,按N跳到上一个。如果按?再输入内容,则是从当前位置往文件开始方向查找。这里有一个小技巧:/之后按Ctrl+p或Ctrl+n可以翻历史搜索记录,不用重新打一遍。

匹配高亮默认是开着的,但退出搜索后高亮不会自动消失,很多人会被一堆黄颜色晃得心烦。这时候按:nohlsearch可以临时取消高亮。如果你希望 Vim 能智能关闭高亮(比如每次编辑时自动去掉高亮),可以在配置里加一条命令,我后面会写到。

*和#是搜索的两个隐藏神器:把光标停在一个单词上,按*会直接向下搜索光标下的整个单词;按#是向上搜索。不需要选词,不需要打词,直接用当前位置的单词做搜索词,这在核对变量出现位置的时候效率极高。

替换功能也几乎是必学的:

  • :s/old/new替换当前行的第一个 old
  • :s/old/new/g替换当前行所有 old
  • :%s/old/new/g替换整个文件里所有 old
  • :%s/old/new/gc逐个替换,替换前询问确认

c后缀非常关键,因为全局替换容易误伤,尤其当一个词在注释和字符串里都被使用时,逐个确认才稳妥。确认时会问你y(是)、n(否)、a(全部)、q(退出),我强烈建议新手用带c的方式多练几次,避免一把梭出事故。

另外提一个特色:Vim 的替换命令里,如果/后面留空,代表使用上一次搜索的单词。比如你搜了foo,然后敲:%s//bar/g就能把刚搜过的foo全部替换成bar。这个小技巧避免重复输入长串搜索词,非常省事。

2.4 保存退出别再只会 :wq! 了

新手最常见的三条命令就是:w(保存)、:q(退出)、:wq(保存并退出)。但我建议你在此基础上多记两个效率变体:

  • ZZ普通模式下直接保存并退出,等于:wq,不用打冒号
  • ZQ直接退出不保存,等于:q!,也是普通模式下按

如果你想放弃所有修改退出,用:q!或者ZQ。每次都要加!表示强制。这里有个安全提示:如果你学会了ZQ一定要分清楚和ZZ的差别,我身边真有人本来想保存退出,结果按了ZQ,两个小时的工作全没了。

保存文件的另一层进阶操作是:w !sudo tee %,它的意思是把当前文件内容通过 sudo 写回当前路径。当你在普通用户下编辑了/etc/nginx/nginx.conf这种系统文件时,:wq会提示只读文件无法写入,这条命令能帮你强制写进去。但这不是常规操作,只有在确认文件需要修改时才建议用,否则容易因为权限问题给自己找麻烦。

还有一个常用但不一定第一时间知道的::saveas newfilename.txt可以把当前文件另存为。这比操作系统的“另存为”命令快了不止一点,而且不用弹窗口。

3. 效率翻倍的进阶快捷键

3.1 窗口、标签页与多文件管理

单文件编辑只是 Vim 的起点,真正的效率提升来自同时操作多个文件。用:e file可以打开另一个文件,但更推荐直接用窗口分割。

  • :sp水平分割窗口
  • :vsp垂直分割窗口
  • Ctrl+w加w循环切换窗口
  • Ctrl+w加h/j/k/l按方向切换到对应窗口
  • Ctrl+w加+/-调整窗口高度
  • Ctrl+w加>/<调整窗口宽度
  • Ctrl+w加_让当前窗口高度最大化
  • Ctrl+w加|让当前窗口宽度最大化

我自己的习惯是垂直分割为主,因为代码一般纵向长,左右对比看更直观。频繁开一堆窗口很容易乱,所以还要搭配标签页::tabnew file新开一个标签页,gt下一个标签页,gT上一个标签页,:tabclose关闭当前标签页。

多文件操作里还有一个冷门但好用的:gf命令。把光标停在某个文件路径字符串上,按gf直接打开那个文件。比如你在代码里看到from foo import bar,光标放在foo上按gf,Vim 直接帮你打开这个模块文件,不需要手动到处找。

用:ls可以查看当前会话打开的所有文件列表,:bn和:bp在前一个/后一个文件之间切换,:bd关闭当前文件缓冲。这套缓冲区的概念和普通编辑器的“页签”很像,但更轻量。如果你从没接触过,刚开始会有点绕,但要记住一点:Vim 打开过的文件并不需要一直占着屏幕,它会在后台缓存,随时可以切回来。

3.2 可视模式、宏与寄存器:三个进阶宝藏

普通模式操作的是字符和行,但很多时候你需要精确选中一段文本再处理,这时候要用可视模式:

  • v进入字符可视模式,按方向键或移动命令扩大选区
  • V进入行可视模式,整行整行选中
  • Ctrl+v进入块可视模式,可以选中矩形区域,做批量注释特别有用

块可视模式是很多人爱上 Vim 的理由之一。比如你有一段代码开头都需要加一个//,把光标移到第一行开头,按Ctrl+v,往下移动到若干行,按大写I输入//,然后按Esc,你会发现所有选中行的行首都出现了//。这个操作在其他编辑器会非常痛,在 Vim 里只需要几秒。

可视模式里还有一个技巧:按o可以切换选区的活动端。比如你用v选中了一段文字,选好之后发现想从末尾继续扩展,按o直接跳转到选区另一端,然后继续移动调整,比重新用鼠标拉选区快太多。

宏(macro)是 Vim 的自动化利器。它可以把你一连串操作录下来,存到某个寄存器里,之后一键重放。录制方法:

  1. 普通模式下按qa,开始录制宏到寄存器 a
  2. 执行你需要重复的一系列操作
  3. 再按q结束录制
  4. 用@a重放宏,用@@重放上一次的宏

举个例子:现在有 50 行文本,每行开头都写着TODO: fix up,需要统一改成DONE: fix up。手改 50 次太蠢了。这时你可以录制一个宏:光标到行首、cw改成DONE、按Esc、j到下一行,结束录制。接着在宏的指令后面再跟一个次数,比如50@a,一次性重放 50 次。这个功能熟练之后,很多机械重复工作都变成几秒钟的事。

寄存器则是 Vim 的剪贴板体系。Vim 默认的复制粘贴不是系统剪贴板,所以你平时yy复制的内容在系统其他软件是粘不出来的。想要跨程序复制粘贴,需要用到系统寄存器:按"+y复制到系统剪贴板,按"+p从系统剪贴板粘贴。如果你的 Vim 支持剪贴板,这个非常方便。用:reg可以查看所有寄存器当前存了什么内容,比靠猜靠谱得多。

还有一个小地方很多人不知道:Vim 的数字寄存器是记忆性的。比如你dd剪掉一行,它是存到寄存器"0里的,如果你又dd了一次,第一次剪掉的内容会推到"1,最新的在"0。想找回之前某个剪过的内容,可以用:reg查看再按"1p这样的形式粘贴。

3.3 文本对象与快速重构:ciw、di( 这类命令的威力

如果说哪个快捷键组合学完立刻提升一个档次,我首推文本对象。所谓“文本对象”就是 Vim 内建的对单词、句子、括号内容的识别单位。你不再需要手工移动光标去框选,直接告诉 Vim“我要改一个单词”“我要删一对引号里面的内容”就行。

  • ciw修改当前单词(把光标放在词中间也可以)
  • diw删除当前单词
  • ci(修改当前括号内的内容(不包含括号本身)
  • di(删除当前括号内的内容
  • da(删除当前括号以及括号内的内容
  • ci"修改当前双引号内的内容
  • ci'修改当前单引号内的内容
  • ci[修改当前方括号内的内容
  • di{删除当前花括号内的内容

组合规则里i表示 inside(内部),a表示 around(包含外围符号)。这套语法非常统一:d/c/y/v后面加i或a,再加一个符号或单词类型,就得到一条命令。比如:

  • yiw复制当前单词
  • vi(选中当前括号内的内容
  • di)删除当前括号内的内容

我工作中最常见的一个场景是:函数参数里有个变量写错了,想整个替换。用ci(直接进入插入模式改写,不需要管光标停在括号内哪个位置。另一个场景是清空数组:想看这个接口返回了哪些字段,先di[把方括号里内容删掉,然后用p粘贴准备好的内容,整个过程不超过一秒钟。

注意一点:cw和ciw有细微差别。cw是从光标当前位置开始删除到单词结尾,而ciw是识别光标所在整个单词、从单词开头删到结尾。当你光标在词中间时,两者差异就很明显。这个细节不背一下容易踩坑,踩了之后又觉得 Vim 不智能,其实只是命令语义不一样。

配合前面说的点号.,文本对象能发挥更大威力:假设整份文件里有几十个字符串常量需要从双引号改成单引号,你先找一个匹配处,用ci"改成新内容,按Esc,然后继续找下一处,按.重复上一条修改指令。整个过程行云流水。

4. 实操套路:我每天在用的组合拳

4.1 编辑代码:调参、改函数、批量注释

很多人学了快捷键但不会串联,到了实际改代码还是逐字逐句。这里我分享几个真实编辑场景的操作路径。

改一个函数名:如果你的工程支持 ctags 或 LSP,可以直接用gd跳转到光标下符号的局部定义,用gD跳到全局定义,然后*高亮所有出现位置,再用cw改第一处,按Esc,通过n逐个跳到后续位置,按.重复修改。整个过程手完全不用离开键盘,比鼠标选中变量名到处搜索爽太多。

删除或重排参数:光标移动到参数列表里,按ci(进入插入模式,直接输入新的参数列表,再按Esc。如果想调整参数顺序,用daw删掉一个参数,p粘到别处。这里要注意参数后面通常有逗号,用aw(包含空格)会比iw更好用,能顺手把空格也收拾掉。

批量注释:块可视模式是最优解。在代码行首列按Ctrl+v,上下选中多行,然后按大写I输入注释符,按Esc自动应用到所有选中行。取消注释也一样,进入块可视模式选中注释符,按x直接删除。

删除一个函数体:如果光标在函数内部的任意位置,想删掉整个花括号内的内容,可以用da}或di}。注意da}会把花括号也删掉,di}只删内容保留括号,看你具体意图。如果你光标不在花括号内,可以先?{往回找左花括号,再%跳到匹配的右括号。

4.2 格式化与缩进:代码整洁随手就来

Vim 里格式化代码的默认操作是=命令,它会把选中的行按缩进规则重新整理。gg=G是格式化整个文件,gg到文件首,=是缩进操作符,G表示作用范围到文件末尾。如果你只想格式化某一段,用可视模式选中之后再按=。

缩进相关的还有:

  • >>当前行向右缩进
  • <<当前行向左缩进
  • 5>>当前行以下共 5 行一并缩进

这几个命令在 Python、YAML、Shell 这类对缩进敏感的文件里非常实用。我之前写 YAML 时某处缩进层级错乱,直接>>连推几行就回来了,比逐行敲空格快太多。

长行折行处理:如果你的文本没有换行符但显示很长,想把它按当前屏幕宽度自动折行,用gq加移动范围,比如gqq格式化当前行。这条命令在 Markdown 写作场景尤其好用。很多博主用 Vim 管理长文档,靠的就是gq重新排版段落,而不是手动回头按 Backspace 再重新敲。

我个人的一个小习惯是:每次写完文件不要直接 :wq,先ggi看一下总行数,然后gg=G全局格式化一遍,再:wq。这条流程能把很多潜在缩进错误提前暴露出来。缺点是大文件格式化会稍微卡一下,但代码文件通常不大,可忽略。

4.3 命令行模式组合:把 Vim 当成瑞士军刀

Vim 的命令行模式不只是保存退出,它的底牌是能执行各类命令、过滤文本、处理重复行。

:g/pattern/d是删除所有匹配 pattern 的行。这个用法极度高效,比如导入了一份带注释的配置文件,想跳过所有注释行,执行:g/^#/d一键清空所有井号开头的行。取反版本是:v/pattern/d,保留匹配的行,删除其他所有行,适合从一堆日志里快速抽核心记录。

:!ls可以在不退出 Vim 的情况下执行外部命令,看到结果后回车回到编辑器,:r !date会把命令的输出插入到当前文件光标处,:read !pwd插入当前路径。我偶尔用它往实验记录里塞带时间戳的行,省去切换终端的麻烦。

批量替换的操作前面说过:%s/old/new/g,但在大型文件里,个别不规则替换用宏比全局替换更稳。做法就是上一个问题的做法:先录制一段手动修改的宏,然后用:reg查看宏名,批量执行若干次。

命令行模式的历史命令也有摸索技巧,按:之后可以用Ctrl+p/Ctrl+n上下翻历史。输入命令时 Vim 还支持<Tab>补全文件名,比如:e ~/.vimrc可以直接 Tab 展开路径。

4.4 快速定位与代码高亮同步

如果项目里同时在改多个文件,我强烈建议用gd和gf。插一句gf前面提过,这里再补充一个实际用法:配置文件里写过source /usr/local/scripts/run.sh,光标放在路径上按gf,直接打开那个脚本,改完了Ctrl+o跳回之前的文件位置。Ctrl+o(跳转到上一个位置)和Ctrl+i(跳转到下一个位置)是 Vim 里导航历史的两个隐藏键,用熟了就像在浏览器里点前进后退一样自然。

实时重载配置:在编辑~/.vimrc这类配置时,:source %直接重新加载当前文件,不用重启 Vim。调试配置时我会先改一版、:source %、再随便输入几个字符测试一下效果,非常顺。

5. 常见问题与排查技巧实录

5.1 方向键依赖重度患者怎么办

最典型的问题是新手上手用方向键,速度慢且右手频繁离开主键区。更麻烦的是在插入模式下按方向键,光标移动还是会受限于当前输入位置,容易误操作。

我建议的过渡方案:先用一段时间强制自己用hjkl,把配置里方向键全部禁用或者映射成其他功能。比如:

map <Left> <Nop> map <Right> <Nop> map <Up> <Nop> map <Down> <Nop>

这样方向键按下去没有任何反应,逼着你用hjkl。这个做法看起来很狠,但确实是最快养成习惯的方法。我第一天禁用方向键后,前两小时效率暴跌,后来逐渐就顺了。三天之后我再也不碰方向键了。

还有一个常见诉求是Esc键太远。Vim 传统解决方案是把它映射到jj或jk组合键上:

inoremap jj <Esc>

这样在插入模式下按jj就能退出插入模式,手指完全不用移到键盘左上角。我用了很多年jj,偶尔也会用Ctrl+[退出插入模式,后者原生支持,所有 Vim 版本都认,不需要配置。

5.2 快捷键被其他插件或映射占用了怎么查

Vim 的快捷键体系里,不同模式有不同的映射命名空间,普通模式用nmap/noremap,插入模式用imap/inoremap,可视模式用vmap/vnoremap。当你发现某个快捷键没按预期生效,大概率是被哪个映射覆盖了。

查看当前所有普通模式映射:

:map

查看某个具体按键的映射:

:map <C-w>

但:map只显示最终生效的那一条,不够直观。想同时查清楚是哪一行配置或哪个插件定义的,需要用:

:verbose map <C-w>

它会显示定义来源的文件路径和行号。然后你可以打开对应文件去修改或禁用这条映射。这个命令在排查“为什么我的某条快捷键没反应”时几乎是首选工具。

如果你怀疑是某个插件偷走了按键,更粗暴的方法是把插件一个个注释掉,再重新加载配置测试。我遇到过最头疼的一次是某个补全插件把<Tab>占用了,导致我普通模式下用 Tab 展开片段全部失效。靠:verbose map <Tab>才找到真凶,然后单独关闭了i_CTRL-T的映射。

5.3 保存、退出、放弃修改的正确姿势

很多用户会在终端里反复尝试:wq!失败,多半是文件是只读状态。这种情况可以考虑用:w !sudo tee %绕过权限写入,但我更建议你检查一下文件是不是真的需要改权限,如果只是临时查看,用view模式更安全,它本质上就是只读打开。

关于“Vim 怎么到底端”这个搜索高频词,其实就是G(跳到文件最后一行),配合gg(跳到第一行)。如果只想到行号而不知道文件总行数,可以用Ctrl+g显示当前行号和文件总行数。这在长日志文件里很实用。

还有一个容易忽视的退出场景:你开了多个窗口或者多个 Tab,:q会提示有未保存的修改或者还有窗口加载。逐个关很麻烦,保存所有修改后直接退出可以用:wqa,不保存全部退出用:qa!。

我自己有时候用 Vim 看日志文件看到一半,想直接丢弃当前会话返回终端,都是按ZQ两步结束。但当我手滑按成ZZ保存了一个被我任意改过的日志,那个日志文件就被污染了。所以我的建议是:明确区分ZZ和ZQ,不要拿日志文件练手,更不要把ZQ随手当万能退出。

5.4 高亮、折行、大小写等显示问题

随着文件越来越大,偶尔会有诡异的显示困扰。最常见的是搜索高亮一直不消失,前面说了用:nohlsearch可以临时去除,但如果想每次重新搜索后自动清理,可以在配置里加:

set hlsearch nnoremap <Esc><Esc> :noh<CR>

这样连续按两次Esc就能关闭高亮,比每次打命令快。

如果打开文件时发现所有超长行都被 Vim 自动折行显示,但你不想看到这种折行,可以设置set nowrap。反过来如果希望自动折行但保持缩进对齐,可以set wrap。在读取 long text 文件时我通常set nowrap然后用Ctrl+f/b整屏翻页。

大小写转换也是高频操作:~切换光标下字符的大小写,gUiw把当前单词变成大写,guiw变成小写,gUU把整行大写。这个在改配置文件里的环境变量名时特别好用,一条命令搞定一整行。

5.5 扩展配置:查找剪贴板支持和显示行号

很多人的 Vim 默认没有开启剪贴板支持,导致"+y复制的内容粘不到系统其他软件。先输入:version查看编译特性里有没有+clipboard,如果显示的是-clipboard就说明当前 Vim 版本不支持系统剪贴板。解决办法是安装完整版 vim 或 gvim,或者直接用支持系统剪贴板的版本。

显示行号几乎是每个新手的第一步配置:

set number set relativenumber

relativenumber的作用是让行号以当前光标行为基准显示相对行号。比如光标在第 10 行,当前行显示 10,而上五行显示 5,下八行显示 8。这样你想跳到下方 23 行时,直接看行号边缘数字是 23,输入23j就过去了,不需要先算绝对行号。我强烈建议同时开number和relativenumber,Vim 会显示当前行的绝对行号和其余行的相对行号,互为照应。

6. 配置建议与我的几点体会

6.1 刚入门不要折腾插件,默认配置也没那么糟

很多人第一次接触 Vim 就奔向各种插件框架,看到网上推荐的插件列表一大堆,从一个编辑器老手变成一个“配置搬运工”,结果打开 Vim 满屏幕报错提示,最后连基础功能都没用熟。我觉得一开始应该把精力放在把默认 Vim 的常用快捷键摸透,等理解了基本逻辑,再按需引入插件也不迟。

如果你想先有一个比较顺手的起点,下面这几行配置就够用了:

set number set relativenumber set tabstop=4 set shiftwidth=4 set expandtab set smartindent set hlsearch set incsearch set ignorecase smartcase syntax on filetype plugin indent on

ignorecase smartcase的意思是你搜索时如果输入的是小写,就忽略大小写匹配;如果输入里有大写,则严格匹配大小写。这个组合很实用,查英文文档的时候不会因为大小写错过匹配。expandtab是把 Tab 转成空格,Python 项目尤其需要。

6.2 用肌肉记忆代替“记笔记”

后台总有人问“这么多快捷键记不住怎么办”。我的做法是不记,只练。每天挑一组,比如今天只练wbe,打开一个长文本文件,反复在行间移动;明天练c系列,找个 Markdown 文件,把所有小标题都ciw重写一遍。三天后再换新组,中间偶尔穿插复习旧的,一个月下来常用键基本都变成下意识动作了。

还有一个反常识的心得是:不要一开始就追求“全键盘操作”。真的需要看文件列表的时候,用鼠标点文件夹也不是什么丢人的事。先让常用的 30% 快捷键形成肌肉记忆,其他边用边查,效果反而更好。我的第一年 Vim 使用基本离不开:help,遇到不确定就查,查完记住一个用一次,下一次就记住了。

6.3 从“记快捷键”到“写配置”的进阶路线

用了一段时间默认配置,你会慢慢发现自己有个性化需求:比如希望<leader>键(默认是反斜杠)配合某个键快速打开配置文件,或者想自定义快捷注释。把这些需求一条条加进~/.vimrc,逐渐就形成了自己的配置。不需要一次搞一个几百行的“网红配置”,那些只是别人的习惯。

我自己的几个偏门配置供参考:

let mapleader=" " nnoremap <leader>w :w<CR> nnoremap <leader>q :q<CR> inoremap jj <Esc> nnoremap <C-h> :vsp<CR> nnoremap <C-l> :sp<CR>

把<leader>设置成空格键之后,<空格>w保存、<空格>q退出,比按冒号再按 wq 快很多。还建议把<leader>e映射为打开文件浏览器,比如:Ex或:Explore,就不需要额外装文件树插件了。文件树插件虽好看,但真正写代码时使用频率并不高,多数时候用:e直接输入路径就够了。

插件方面如果真要推荐起步装,我会选这几个方向:补全类(coc.nvim 或 LSP 客户端)、模糊查找(fzf.vim)、多光标(vim-multiple-cursors 可选)。但也只是建议,插件的价值在你的使用场景明确之后才能体现,千万别为了装而装。

使用 Vim 久了以后你会发现,真正让人离不开的不是某一个快捷键,而是这套“手不离键、指令即操作”的思维方式。它能帮你把编辑成本降到最低,让你把脑力留给内容本身。我现在的习惯是哪怕只改一个字符,也会下意识打开 Vim 而不是记事本,因为手动删除再补字那几步,实在不如r加新字符一步到位来得痛快。

最后分享一个小技巧:如果哪一天你觉得某组操作“临时记不住”,别硬扛,直接在普通模式按:help加那个指令的关键词查内置文档。Vim 自己就是最好的记忆书签,查完了跟着例子敲一遍,比收藏十篇快捷键文章都有用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询