十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VIM学习指南:模式、操作符与高效编辑技巧

VIM学习指南:模式、操作符与高效编辑技巧 我刚开始认真学 VIM 的时候最大的感受就是这玩意儿太不按套路出牌了。普通编辑器打开就能打字VIM 打开之后敲键盘居然没反应普通编辑器复制粘贴就是 CtrlC/CtrlVVIM 里你按了半天 Ctrl 组合键屏幕上啥动静没有。但等我真正把 VIM 的快捷键体系摸清楚之后又觉得它其实特别简单——VIM 根本不是让你去记几百个快捷键而是先理解它的底层逻辑模式、操作符、动作命令。这三件事搞明白了复制、粘贴、删除、查找、跳转、撤销这些操作全部都能串起来根本不用死记硬背。这篇文章就是把我这些年用 VIM 的经验整理一遍核心围绕六个最常用的操作场景复制、粘贴、删除、查找、跳转、撤销。我会把每个操作背后的设计逻辑讲清楚再配合实际可复现的按键序列最后补充一些坑和技巧。不管你是刚开始接触 VIM 的新手还是已经用了很久但总觉得自己在低效操作的老用户这篇文章应该都能给你一些启发。1. 先搞懂模式切换VIM 所有快捷键的地基VIM 有个跟普通编辑器完全不同的设计它是有模式的。同样是按一个键在不同模式下干的事情完全不一样。这也是很多新手第一关就被卡住的地方——打开 VIM 之后噼里啪啦敲了一堆字母屏幕上就是不出现文字然后以为软件坏了。其实不是坏了是你处于普通模式Normal Mode在这个模式下你敲的每个键都是命令不是输入的内容。1.1 四种基本模式别被吓到VIM 最常见的有四种模式普通模式Normal Mode打开 VIM 的默认模式所有快捷键、操作命令都在这执行。你按j、k是光标移动按d是删除按y是复制都是命令。插入模式Insert Mode用来真正输入文字。你按i、a、o等键可以从普通模式进入插入模式这时候你敲什么就是什么。可视模式Visual Mode用来选中文本。按v进入字符可视模式按V进入行可视模式按Ctrlv进入块可视模式。选中之后可以配合复制、删除、替换等操作。命令行模式Command-line Mode用来执行:开头的命令比如保存退出、查找替换、设置参数。从普通模式按:进入。新手最需要记住的一件事无论你在什么模式按Esc都能回到普通模式。如果你发现自己卡住了或者按了什么不知道的组合键别慌连续按两三次Esc一定回得来。1.2 模式切换的核心按键从普通模式进入插入模式最常用的几个键i在光标当前位置的前面插入a在光标当前位置的后面插入I跳到当前行的行首插入A跳到当前行的行尾插入o在当前行下面新建一行插入O在当前行上面新建一行插入我个人最常用的是A因为很多时候我要在行尾追加内容按A比按End再按i快得多。如果你只是临时想输入几个字、输完还想继续做别的操作记住用完立刻按Esc回到普通模式这个习惯会让你的操作节奏快很多。VIM 的设计哲学就是让你的手尽量不离开键盘中央区域通过组合按键完成所有操作而不是频繁移动右手去够方向键和鼠标。1.3 可视模式与选中的概念可视模式和普通编辑器里的按住 Shift 选文字有点像但 VIM 的做法更灵活。进入可视模式之后移动光标的动作会实时扩展选中范围。配合操作符你可以对选中的区域做删除、复制、替换、缩进等操作。v字符可视模式按住后按hjkl移动光标会逐个字符选中V行可视模式一次选中一整行适合对多行做操作Ctrlv块可视模式可以选一个矩形区域适合批量操作多行同一列的文本块可视模式是个神器比如你想给连续 10 行代码前面都加上//注释用普通编辑器可能要找插件或者按住 Alt 拖选而 VIM 里就是Ctrlv选中这 10 行的第一列然后按I输入//再按Esc10 行全部加上。这个操作我几乎每天都会用到。2. 复制与粘贴VIM 为什么不肯用 CtrlC说起 VIM 的复制粘贴很多刚接触的人都会被搞晕。你在 VIM 里按CtrlC它只会退出当前的插入模式、回到普通模式并不会复制任何东西。你要复制一行得按yy要粘贴用p或P。这背后的原因是VIM 的快捷键体系在设计之初就避开了 Ctrl 组合键因为老式键盘的 Ctrl 键位置并不好按而且 VIM 希望所有常用操作都能在键盘主区域完成。2.1 理解 VIM 的寄存器剪贴板不止一个普通编辑器只有一个剪贴板复制一次粘贴一次内容就覆盖了。VIM 不一样它有一组寄存器可以理解成一组带编号的剪贴板。0到9最近 10 次复制或删除的内容a到z命名寄存器你可以显式指定内容存到哪个寄存器*和系统剪贴板寄存器用来和 VIM 外部做复制粘贴交互无名寄存器不指定寄存器时默认存到这里如果你在 VIM 里复制了一段文字又复制了另一段第一段并没有丢失它被存到了1寄存器第二段在无名寄存器里。可以用:reg命令查看当前所有寄存器的内容。这在处理多段文本剪切、复制时特别有用。这里有个很实用的操作粘贴时要指定寄存器用 寄存器名 p比如1p就是粘贴 1 号寄存器里的内容。2.2 最常用的复制粘贴按键序列在普通模式下yy复制当前行英文 yank 的缩写记住拽出来一份yiw复制光标所在的单词y$复制从光标位置到行尾的内容y^复制从光标位置到行首的内容p在光标后粘贴如果复制的是整行则粘贴到下一行P在光标前粘贴如果复制的是整行则粘贴到上一行这几个命令配合起来日常编辑基本够用了。比如你想把某一行复制一份到下一行直接yyp搞定。想把当前光标所在的单词复制到括号里先yiw再把光标移到括号内按p。2.3 和系统剪贴板交互解决复制粘贴失效问题很多人在 Linux 虚拟机或者远程终端里用 VIM会遇到一个经典问题在 VIM 里yy复制的内容粘贴到 VIM 外面的浏览器、文档里粘贴不出来反过来从外部复制的内容在 VIM 里按p也粘贴不上。这个问题的根源是VIM 的寄存器默认和系统剪贴板不是同一个。要解决得让 VIM 使用系统剪贴板寄存器。先检查你的 VIM 是否支持系统剪贴板在 VIM 里执行:version看输出里有没有clipboard。有的话说明支持没有的话说明你的 VIM 是精简版很多 Linux 发行版自带的vim-tiny就不支持建议安装vim-gtk3或者vim-nox这类完整版。如果你的 VIM 支持系统剪贴板最简单的方案是在~/.vimrc里加set clipboardunnamedplus设置之后VIM 的无名寄存器就指向系统剪贴板了yy复制的内容可以直接粘贴到外部应用外部的复制内容也可以直接在 VIM 里按p粘贴。这个配置我强烈建议能设就设体验提升不是一星半点。如果不想改配置临时用的话可以用yy把当前行复制到系统剪贴板p粘贴系统剪贴板里的内容注意如果是在终端里使用 VIM还需要确认终端模拟器本身没有拦截CtrlShiftV这类快捷键另外有些终端在开启括号粘贴模式后行为会有差异问题排查时先换个终端试试会更快定位。2.4 粘贴模式的特殊处理为什么粘贴完缩进全乱了在 VIM 里粘贴一段外部代码经常发现代码的缩进全乱了。比如你在终端里复制了一段 Python 代码粘贴进 VIM结果每一行前的空格都多了一截整个代码结构面目全非。这是因为 VIM 的自动缩进功能在你粘贴的时候也在起作用它把粘贴的每一行都当作是手动输入对换行后的内容重新做了一次缩进计算于是叠加上原有的缩进就乱套了。最简单直接的解决方法是先进入粘贴模式:set paste粘贴完成后再退出:set nopaste也可以直接在~/.vimrc里设置一个快捷键来快速切换set pastetoggleF2这样每次粘贴大量外部内容前按一下F2粘贴完再按一下随时切换。实测下来这个方案最省心。3. 删除操作按「操作符 动作」组合来理解说实话单独记dd怎么删、dw怎么删永远都会背了忘忘了背。VIM 删除操作的核心逻辑其实特别简单删除 d操作符 动作命令。d本身是删除的意思后面跟的内容决定了删除的范围。理解了这套组合逻辑你不用死记硬背也能顺手写出各种删除命令。3.1 操作符与动作命令的组合逻辑VIM 里有一批操作符除了d删除还有y复制、c修改删除后进入插入模式、右缩进、左缩进等。这些操作符后面都可以跟动作命令来指定操作范围。比如同样是dd wdw删除到下一个单词开头d ede删除到当前单词结尾d $d$删除到行尾d 0d0删除到行首d jdj删除当前行和下一行这套组合逻辑的好处是你只需要记一套动作命令然后可以和所有操作符自由组合。比如你知道w是跳到下一个单词开头那么yw就是复制到下一个单词开头cw就是修改到下一个单词开头w就是缩进到下一个单词开头完全不用单独记忆。3.2 高频删除命令清单先背这一组就够用x删除光标所在字符也是老式键盘上Del键的替代方案dd删除当前行dw删除从光标到单词结尾注意如果光标在单词中间会删掉后半部分d$或D删除从光标到行尾d0删除从光标到行首dG删除从当前行到文件末尾dgg删除从当前行到文件开头ciw删除当前单词并进入插入模式这个强推改单词神器ci删除光标所在双引号内的内容并进入插入模式ci(或ci)删除括号内的内容并进入插入模式其中ciw和ci这类修改内部操作是 VIM 里非常高效的一组命令。c表示修改changei表示内部inner后面跟一个文本对象单词、引号、括号、标签等。比如你把一个函数的参数从hello改成world只需要把光标移到引号内按ci然后直接输入新内容输入完按Esc效率极高。3.3 删除时容易犯的错方向搞反了新手经常犯的一个错误是想删一整行光标在中间按了dd发现整行没了但要是自己其实只想删后半行那就误删了。类似的还有dw在光标位于单词第一个字母时是删除整个单词但如果光标在单词中间它只删光标后面的部分。这个问题的根源还是对动作命令定义的范围理解不够透彻。建议刚开始用 VIM 时养成一个习惯在执行删除前先用普通模式下的移动命令把光标定位准确再按下操作符。如果你不确定一个删除命令会删掉哪些内容可以先进入可视模式按v把范围选中看一遍确认之后按d删除这样就不会误删了。另外提醒一点VIM 的删除操作默认会把删掉的内容存到寄存器里也就是说dd之后你可以用p把它粘贴到别处。这个特性偶尔会给人惊喜但也可能造成困惑——删除了数据却占着剪贴板导致后面粘贴的内容不是自己复制的。如果不想把删除的内容写进寄存器可以用_dd把内容删进黑洞寄存器这是进阶技巧用到时就明白有多香了。4. 查找与替换别再用眼睛一行行扫了VIM 的查找功能非常强很多老手之所以离不开 VIM就是因为它的查找和替换效率实在太高了。普通编辑器里要替换某个变量为另一个名字可能要手动找好几十个地方VIM 里一条命令搞定。4.1 基础查找/与?的区别在普通模式下按/底部会出现一个输入框输入关键词后回车VIM 会从当前光标位置向下查找。按?输入关键词则是向上查找。查找之后n跳到下一个匹配项N跳到上一个匹配项这个找关键词、然后 n/N 来回跳的流程是最基础的查找用法。你可能觉得这跟浏览器里的 CtrlF 没什么区别但 VIM 里配合其他操作威力就出来了。4.2 三个提升查找效率的配置默认情况下VIM 的查找是区分大小写的也不会在输入过程中实时高亮。我建议在~/.vimrc里加上这几行set ignorecase set smartcase set incsearch set hlsearchignorecase忽略大小写smartcase如果输入的查找词中包含大写字母则自动切换到区分大小写模式incsearch输入查找词时实时高亮显示当前匹配hlsearch查找完成后所有匹配项保持高亮这里面最有用的我觉得是incsearch配合smartcase。输入的过程中就能看到哪些地方匹配不用完整输入完才知道结果。不过hlsearch也有个副作用查完一次之后所有匹配项一直高亮着看着有点烦。取消高亮的命令是:nohlsearch或者可以设置一个快捷键比如nnoremap Esc :nohlsearchCR这样按一下Esc就能取消高亮不会影响其他功能。4.3 快捷查找把光标放在单词上直接搜很多场景下你不是要手动输入查找词而是想查找光标所在的这个单词。VIM 提供了两个快捷键*向下查找光标所在完整单词#向上查找光标所在完整单词注意这两个按键是查找完整单词也就是说如果你光标在foo上按*只匹配独立的foo不会匹配foobar。如果你想要模糊匹配可以在~/.vimrc里加nnoremap * *C-o或者更简单的方式是nnoremap Leaderk :/C-RC-WCR这里C-RC-W会自动把光标下的单词插入查找命令中。这样你就能自己控制是精确匹配还是进一步修改查找词。*和#在查看代码里某个变量在哪些地方被引用时特别好用光标一放按一下*然后n/N来回跳很快就能把整个文件的引用位置过一遍。4.4 替换:s命令的三种用法VIM 的替换命令基于命令行模式核心格式是:s/old/new/这个命令只替换当前行的第一个匹配项。要替换更多范围需要加前缀或后缀:s/old/new/g替换当前行的所有匹配项:5,12s/old/new/g替换第 5 行到第 12 行的所有匹配项:1,$s/old/new/g或:%s/old/new/g替换整个文件的所有匹配项:%s/old/new/gc逐个确认后替换这个c后缀特别重要。当你做全局替换时VIM 会逐个跳转到匹配位置询问是否替换。按y是替换按n是跳过按q是退出。整个文件几百处替换每个都能人工确认比直接全局替换安全得多。我第一次用:%s/old/new/g直接全局替换的时候把注释里的关键词也全换了当时还觉得没什么后来发现文档里的示例也跟着变了那叫一个崩溃。从那之后我就养成了习惯要么先:%s/old/new/gc逐个确认要么在替换前先搜索一遍确认没有意外匹配。4.5 进阶利用查找做批量修改VIM 查找功能配合.命令可以快速对多个匹配位置做同样的修改。比如你想把文件里所有的foo改成bar可以先按/foo查找然后按cw输入bar按Esc这时候再按n跳到下一个匹配按.重复上一次修改这样一直按n和.就能快速改完所有位置。这个技巧比:%s/foo/bar/g更有掌控感你知道每次都改了什么不会稀里糊涂地全局替换。5. 跳转导航移动光标的核心逻辑VIM 里移动光标的方式非常多这也是它跟普通编辑器差距最大的地方。普通编辑器你可能会用鼠标点来点去或者按方向键一格一格挪VIM 里这些都不算高效。VIM 的移动方案可以分成三个层级行内移动、文档内移动、跨文件跳转。理解好这三个层级你的编辑效率至少提升一倍。5.1 字符与单词级移动摆脱方向键最基本的光标移动是hjkl分别是左、下、上、右。但hjkl只是一格一格地动对于长代码行效率还是不够。VIM 提供了单词级的跳转w跳到下一个单词开头e跳到当前或下一个单词结尾b跳到前一个单词开头这三个键配合数字前缀很好用。比如3w就是往前跳 3 个单词5b是往后跳 5 个单词。还有一个行内快速移动的利器0跳到行首^跳到行首的第一个非空白字符对于缩进过的代码用这个更顺手$跳到行尾f 字符在当前行内查找下一个指定字符比如f,跳到下一个逗号f(跳到下一个左括号t 字符跳到指定字符的前一个位置比如t(跳到下一个左括号前f和t可能刚开始用不习惯但用顺了之后在一行较长的代码里精确跳转非常方便。比如一行代码是const result calculateSum(a, b, c);你想把光标移到b后面直接f b跳过去比按l一路挪过去快太多。5.2 行级与文档级跳转省去滚动鼠标在文件里上下跳转最基础的按键gg跳到第一行G跳到最后一行数字 G跳到指定行比如42G跳到第 42 行Ctrld向下滚动半屏Ctrlu向上滚动半屏Ctrlf向下滚动一屏Ctrlb向上滚动一屏{跳到上一个空行段落边界}跳到下一个空行段落边界{和}在代码里跳函数、在 Markdown 里跳段落都很好用。如果你写的是需要快速定位的配置项配合:set number显示行号用:42直接跳转到 42 行也很方便。5.3 标记跳转在两个位置之间来回穿梭VIM 支持给位置打标记类似于在某些编辑器里添加书签。ma在当前光标位置创建标记a可以是任意字母a跳到标记a所在行行首a跳到标记a的精确位置行和列都精确标记非常适合在处理一个文件的不同区域时来回切换。比如你正在改第 100 行的函数临时发现第 20 行有个变量需要修改可以先ma打标记跳过去改完了按a直接回来不用滚轮慢慢找。还有一种内置标记直接按两个单引号可以跳回上一次光标所在的位置。这对我刚刚还在那里的场景特别有效。5.4 Emacs 风还是 VIM 风都不要紧找到你的节奏网上关于 VIM 移动和 Emacs 移动哪个快的争论一直没停过但我觉得工具就是工具没有绝对的最优解。真正重要的是你形成了自己的肌肉记忆知道什么场景用w/b什么场景用f什么场景用gg/G什么场景用标记。新手可能觉得记这么多移动按键压力很大我建议先重点练w、b、e、f、gg、G这六个练熟了之后再加{/}、标记、*/#这些进阶操作。步子迈太大容易扭伤慢慢来反而更快。6. 撤销与重做时间旅行但不只有一次后悔药谈到撤销普通编辑器一般就是 CtrlZ 撤销CtrlY 重做或 CtrlShiftZ。VIM 的撤销机制表面上也是u撤销、Ctrlr重做但它在底层比这复杂得多也强大得多。6.1u、U、Ctrlr的区别u撤销上一次改动可以连续按多次一步步往回退U撤销对当前行的所有改动这是个特殊命令只针对当前行的变更做整体回滚Ctrlr重做即把刚才撤销的操作再恢复回来注意U和u不是同一个东西。如果你在某一行里做了好几步修改按U会把这行恢复到你刚到达这一行时的状态相当于对当前行做了一次整体撤销。这个命令用好了挺方便的但也有个坑如果你改了别处的内容再回到这一行按U会把整行的状态都回滚到上次光标离开时的样子有可能会覆盖掉你自己的一些精确修改。所以谨慎使用U新手阶段我更建议一步步u慢慢退。6.2 撤销的分支历史VIM 独有的时间线VIM 的撤销历史不是一条直线它是一棵树。举个例子你做了 A、B、C 三个操作然后按u撤销了 C这时你做了新的操作 D。在普通编辑器里C 就被覆盖了再也找不回来。但在 VIM 里C 还存在只是到了一个不同的分支上。可以用:undolist查看撤销的历史记录。要切换到不同的撤销分支手动操作稍显复杂默认命令如下:earlier 5m回退到 5 分钟之前的状态:later 5m前进到 5 分钟之后的状态这些命令配合分支历史有时候能救你于水火之中。比如你改了一大段代码然后发现 10 分钟前的状态其实更好在 VIM 里可以用:earlier 10m直接回到那个状态而不是靠一次次按u碰运气。不过这样的穿越是有条件的前提是 VIM 的撤销历史没有被清理。如果你在文件里做了大量操作又保存过文件VIM 默认可能会保留一部分历史记录但没法保证回到很久以前。要想做更长时间跨度的往返最好是启用 VIM 的持久化撤销undofile。6.3 开启持久化撤销重启也不怕VIM 默认不保留撤销记录关闭文件再打开历史就没了。但有一个配置可以开启持久化撤销把撤销记录写入文件下次打开还能继续撤销。在~/.vimrc里加set undofile set undodir~/.vim/undo注意你需要先创建~/.vim/undo目录VIM 不会自动创建。配置完成后VIM 会在每次保存时把撤销历史写入该目录下的文件中。下次打开同一个文件你依然可以按u撤销之前的操作。这个功能对编辑长文档、写代码的人来说简直是救命稻草。特别是当你改了很多内容、保存了、然后意识到改错了的时候没有持久化撤销你就只能靠手动复制备份或者版本管理工具亡羊补牢。6.4 点号命令.重复上一次操作撤销的最佳搭档VIM 里有一个和撤销经常配对的命令.点号。它的作用是重复上一次修改。比如你做了一个替换操作把当前的foo改成bar按完Esc后每按一次.就会在下一个位置重复相同的替换操作。结合查找n键使用就是高效批量修改的利器。点号命令和撤销也是绝配你不小心多按了几次.多改了几处直接按u就能一步步撤销互不冲突。这个操作 - 重复 - 撤销的循环用顺了之后改代码的速度会上一个台阶。7. 把这些串起来一个真实场景的 VIM 操作示范光讲理论知识容易飘我举个例子把前面说的这些串起来。假设你正在编辑一个配置文件内容如下server { listen 80; server_name example.com; location / { proxy_pass http://backend; } }你想做这几件事把80改成8080把example.com替换成test.dev把proxy_pass后面指向的backend改成backend_new然后再复制一份location /的配置块放到下面。整个操作过程用 VIM 快捷键是这样完成的按gg跳到文件开头按/80回车查找 80按cw输入8080按Esc按/example.com回车然后按:%s/example\.com/test.dev/gc逐个确认并替换其实可以直接按*然后换但这里用命令替换演示按/backend或*查找 backend按cw输入backend_new按Esc光标移到location /这一行按yy复制行再移动到想要插入的位置下面按p粘贴如果改错了按u撤销整个流程下来手不用离开键盘核心区域也没有用鼠标。每个操作拆开看都很简单但合在一起编辑效率就非常可观。8. 常见问题与排查技巧实录实际使用 VIM 的过程中会遇到各种问题我把最常遇到的几个整理成速查表希望你在被卡住的时候能快速找到答案。问题现象原因解决方案按CtrlC无法复制VIM 普通模式下CtrlC默认是退出插入模式使用yy复制、p粘贴或配置set clipboardunnamedplus与系统剪贴板打通粘贴外部内容缩进错乱自动缩进在粘贴时错误叠加:set paste进入粘贴模式粘贴完:set nopaste或配置set pastetoggleF2快速切换查找时大小写区分VIM 默认区分大小写:set ignorecase再配set smartcase有大小写时自动精确匹配查找后高亮一直保留hlsearch开启后不自动关闭:nohlsearch取消高亮或映射到Esc系统剪贴板不通VIM 版本不带clipboard特性检查vim --version安装vim-gtk3/vim-nox配置set clipboardunnamedplus删错了无法找回撤销历史未开启持久化配置set undofile set undodir~/.vim/undo在终端里用Ctrlv没办法块选终端拦截了 Ctrl 键组合在普通模式下用Ctrlv进入块可视模式快捷键和终端冲突时可换终端或改终端设置改动很大想撤销到更早的状态撤销历史分支复杂用:earlier 5m回退到 5 分钟前状态用:later 5m前进9. 配置建议把这几个设置放进你的 vimrcVIM 的强大很大程度来自可配置性我把自己常用的配置挑几个核心的分享出来。你可以把下面的配置加到~/.vimrcNeovim 用户对应~/.config/nvim/init.vim或init.lua。 基础行为 set number 显示行号 set relativenumber 相对行号按相对距离显示配合 d3d 这种操作很好用 set tabstop4 Tab 宽度 set shiftwidth4 自动缩进宽度 set expandtab 用空格代替 Tab set smartindent 智能缩进 查找体验 set ignorecase 忽略大小写 set smartcase 智能大小写 set incsearch 实时搜索 set hlsearch 高亮匹配 系统剪贴板 set clipboardunnamedplus 持久化撤销 set undofile set undodir~/.vim/undo 粘贴模式切换 set pastetoggleF2这里重点说一下relativenumber。这行配置会让行号区域显示的是当前光标相对于该行的距离而不是绝对行号。比如光标在第 50 行屏幕上第 52 行会显示 2第 45 行会显示 5。这样你就可以直接看行号来决定按多少次j或k比如看到想去的行显示7直接按7j就过去了。配合前面说的跳转效率提升非常明显。10. 实操过程中的几点心得说实话我见过很多人学 VIM拿了一张快捷键大全就开始背背了两天就放弃了觉得太复杂记不住。我的体会是VIM 不需要一次学完它更像一套慢慢积累、持续优化的操作习惯。刚开始你只需要记住最基础的那几个i进入插入模式Esc回普通模式yy复制p粘贴dd删除u撤销/查找gg到开头G到结尾w跳单词。把这一组先用熟日常编辑就基本不卡壳了。等你觉得这些用得流畅了再往里面加东西。比如你发现自己经常要复制一行到别处可以顺手把yy练到下意识反应如果你发现自己频繁在代码里找变量引用位置就去练*和#。随着时间推移你的肌肉记忆库会越来越大VIM 也才真正开始变成你自己的编辑器。另外一个小技巧如果你愿意折腾可以试试 VIM 内置的vimtutor命令。终端里输入vimtutor它会给你一个交互式的教学文件带你从头到尾过一遍这些快捷键练完一遍基本就有感觉了比你对着快捷键表发呆半小时有用得多。更新最近我在 Neovim 里尝试了把;映射成:体验也很好。;在 VIM 里默认是重复上一次f查找字符但对我来说它的使用频率远低于:进入命令行模式把;映射成:能让很多命令少按一个 Shift 键。比如想输入:w保存按;w就行了。类似的个人化映射等你对默认快捷键足够熟悉之后可以根据自己的使用习惯做调整这也算 VIM 定制化的一大乐趣了。
返回列表