ARTICLE DETAIL

资讯详情

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

Vim 快捷键入门到进阶:模式编辑与组合命令实战指南

Vim 快捷键入门到进阶:模式编辑与组合命令实战指南 如果你真正认真想过要不要学 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 wordcw修改一个单词change wordy$复制到行尾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加那个字母一步到位。长距离跳转还有一组配合Ctrld向下翻半屏Ctrlu向上翻半屏Ctrlf向下翻整屏Ctrlb向上翻整屏。四个键很容易搞混我的记忆法是f代表 forward向前b代表 backward向后。Ctrld/u和Ctrlf/b的区别就是翻半屏和翻整屏实际用起来半屏比整屏舒服因为保留了上下文。2.2 编辑操作核心删除、复制、粘贴与撤销移动练顺了接下来就是编辑。Vim 的“删除”其实是剪切被删的内容会进寄存器可以用p粘出来。也就是说dd剪切一行p粘贴到下一行P粘贴到上一行。x删除光标下的一个字符相当于老式键盘上的 Del。dw删除一个单词d$删除从光标到行尾。复制统一叫 yank所以yy复制一整行yw复制一个单词y$复制到行尾。这里要特别注意yy和dd会把整行包括换行符放进寄存器粘贴的时候会在其他行上方/下方新建一行而yw这样的单词复制粘贴时是嵌在文本里的不产生换行。很多新手就是在这上面懵的复制了一个单词粘贴结果整行都变了其实就是没分清行复制和字符复制。修改操作cchange是 Vim 里效率最高的一个键等于“删除 进入插入模式”。比如cw删除当前单词并进入插入模式你可以直接打字替换它cc清空当前整行并开始输入c$删除光标到行尾并开始输入。我日常改代码时用cw的频率远高于“先删再进插入模式”的两步操作。撤销与重做u撤销上一步操作Ctrlr重做。注意 Vim 的撤销是按“命令”而不是按“字符”来记的比如你一口气连续输入十个字母在普通模式按一次u会一次性撤销全部十个字母。如果你只想撤销最后一个字母需要先把一次输入断成多次比如输入一部分后按一次Esc再进入插入模式输入下一部分。这一点和记事本式的编辑器习惯很不一样需要适应。如果你误删了什么先别慌多按几次u往回找基本都能找回来。还有一个容易被忽略但极其实用的键.小数点。它用于重复上一条修改命令。例如你刚才做了一次dw那么按.就会重复删除一个单词。这个键配合移动命令可以在整篇文档里快速重复同类修改。举例你想把所有foo都改成bar第一个foo用cwbar改完按Esc回到普通模式然后一路用n跳到下一个foo按.完成同样修改。这个流程我几乎每天都在用。2.3 搜索与替换别再用眼睛找字符串了在 Vim 里查找字符串非常简单普通模式下按/然后输入要查的内容回车后光标跳到第一个匹配项按n跳到下一个匹配项按N跳到上一个。如果按?再输入内容则是从当前位置往文件开始方向查找。这里有一个小技巧/之后按Ctrlp或Ctrln可以翻历史搜索记录不用重新打一遍。匹配高亮默认是开着的但退出搜索后高亮不会自动消失很多人会被一堆黄颜色晃得心烦。这时候按: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垂直分割窗口Ctrlw加w循环切换窗口Ctrlw加h/j/k/l按方向切换到对应窗口Ctrlw加/-调整窗口高度Ctrlw加/调整窗口宽度Ctrlw加_让当前窗口高度最大化Ctrlw加|让当前窗口宽度最大化我自己的习惯是垂直分割为主因为代码一般纵向长左右对比看更直观。频繁开一堆窗口很容易乱所以还要搭配标签页:tabnew file新开一个标签页gt下一个标签页gT上一个标签页:tabclose关闭当前标签页。多文件操作里还有一个冷门但好用的gf命令。把光标停在某个文件路径字符串上按gf直接打开那个文件。比如你在代码里看到from foo import bar光标放在foo上按gfVim 直接帮你打开这个模块文件不需要手动到处找。用:ls可以查看当前会话打开的所有文件列表:bn和:bp在前一个/后一个文件之间切换:bd关闭当前文件缓冲。这套缓冲区的概念和普通编辑器的“页签”很像但更轻量。如果你从没接触过刚开始会有点绕但要记住一点Vim 打开过的文件并不需要一直占着屏幕它会在后台缓存随时可以切回来。3.2 可视模式、宏与寄存器三个进阶宝藏普通模式操作的是字符和行但很多时候你需要精确选中一段文本再处理这时候要用可视模式v进入字符可视模式按方向键或移动命令扩大选区V进入行可视模式整行整行选中Ctrlv进入块可视模式可以选中矩形区域做批量注释特别有用块可视模式是很多人爱上 Vim 的理由之一。比如你有一段代码开头都需要加一个//把光标移到第一行开头按Ctrlv往下移动到若干行按大写I输入//然后按Esc你会发现所有选中行的行首都出现了//。这个操作在其他编辑器会非常痛在 Vim 里只需要几秒。可视模式里还有一个技巧按o可以切换选区的活动端。比如你用v选中了一段文字选好之后发现想从末尾继续扩展按o直接跳转到选区另一端然后继续移动调整比重新用鼠标拉选区快太多。宏macro是 Vim 的自动化利器。它可以把你一连串操作录下来存到某个寄存器里之后一键重放。录制方法普通模式下按qa开始录制宏到寄存器 a执行你需要重复的一系列操作再按q结束录制用a重放宏用重放上一次的宏举个例子现在有 50 行文本每行开头都写着TODO: fix up需要统一改成DONE: fix up。手改 50 次太蠢了。这时你可以录制一个宏光标到行首、cw改成DONE、按Esc、j到下一行结束录制。接着在宏的指令后面再跟一个次数比如50a一次性重放 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更好用能顺手把空格也收拾掉。批量注释块可视模式是最优解。在代码行首列按Ctrlv上下选中多行然后按大写I输入注释符按Esc自动应用到所有选中行。取消注释也一样进入块可视模式选中注释符按x直接删除。删除一个函数体如果光标在函数内部的任意位置想删掉整个花括号内的内容可以用da}或di}。注意da}会把花括号也删掉di}只删内容保留括号看你具体意图。如果你光标不在花括号内可以先?{往回找左花括号再%跳到匹配的右括号。4.2 格式化与缩进代码整洁随手就来Vim 里格式化代码的默认操作是命令它会把选中的行按缩进规则重新整理。ggG是格式化整个文件gg到文件首是缩进操作符G表示作用范围到文件末尾。如果你只想格式化某一段用可视模式选中之后再按。缩进相关的还有当前行向右缩进当前行向左缩进5当前行以下共 5 行一并缩进这几个命令在 Python、YAML、Shell 这类对缩进敏感的文件里非常实用。我之前写 YAML 时某处缩进层级错乱直接连推几行就回来了比逐行敲空格快太多。长行折行处理如果你的文本没有换行符但显示很长想把它按当前屏幕宽度自动折行用gq加移动范围比如gqq格式化当前行。这条命令在 Markdown 写作场景尤其好用。很多博主用 Vim 管理长文档靠的就是gq重新排版段落而不是手动回头按 Backspace 再重新敲。我个人的一个小习惯是每次写完文件不要直接 :wq先ggi看一下总行数然后ggG全局格式化一遍再: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查看宏名批量执行若干次。命令行模式的历史命令也有摸索技巧按:之后可以用Ctrlp/Ctrln上下翻历史。输入命令时 Vim 还支持Tab补全文件名比如:e ~/.vimrc可以直接 Tab 展开路径。4.4 快速定位与代码高亮同步如果项目里同时在改多个文件我强烈建议用gd和gf。插一句gf前面提过这里再补充一个实际用法配置文件里写过source /usr/local/scripts/run.sh光标放在路径上按gf直接打开那个脚本改完了Ctrlo跳回之前的文件位置。Ctrlo跳转到上一个位置和Ctrli跳转到下一个位置是 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跳到第一行。如果只想到行号而不知道文件总行数可以用Ctrlg显示当前行号和文件总行数。这在长日志文件里很实用。还有一个容易忽视的退出场景你开了多个窗口或者多个 Tab:q会提示有未保存的修改或者还有窗口加载。逐个关很麻烦保存所有修改后直接退出可以用:wqa不保存全部退出用:qa!。我自己有时候用 Vim 看日志文件看到一半想直接丢弃当前会话返回终端都是按ZQ两步结束。但当我手滑按成ZZ保存了一个被我任意改过的日志那个日志文件就被污染了。所以我的建议是明确区分ZZ和ZQ不要拿日志文件练手更不要把ZQ随手当万能退出。5.4 高亮、折行、大小写等显示问题随着文件越来越大偶尔会有诡异的显示困扰。最常见的是搜索高亮一直不消失前面说了用:nohlsearch可以临时去除但如果想每次重新搜索后自动清理可以在配置里加set hlsearch nnoremap EscEsc :nohCR这样连续按两次Esc就能关闭高亮比每次打命令快。如果打开文件时发现所有超长行都被 Vim 自动折行显示但你不想看到这种折行可以设置set nowrap。反过来如果希望自动折行但保持缩进对齐可以set wrap。在读取 long text 文件时我通常set nowrap然后用Ctrlf/b整屏翻页。大小写转换也是高频操作~切换光标下字符的大小写gUiw把当前单词变成大写guiw变成小写gUU把整行大写。这个在改配置文件里的环境变量名时特别好用一条命令搞定一整行。5.5 扩展配置查找剪贴板支持和显示行号很多人的 Vim 默认没有开启剪贴板支持导致y复制的内容粘不到系统其他软件。先输入:version查看编译特性里有没有clipboard如果显示的是-clipboard就说明当前 Vim 版本不支持系统剪贴板。解决办法是安装完整版 vim 或 gvim或者直接用支持系统剪贴板的版本。显示行号几乎是每个新手的第一步配置set number set relativenumberrelativenumber的作用是让行号以当前光标行为基准显示相对行号。比如光标在第 10 行当前行显示 10而上五行显示 5下八行显示 8。这样你想跳到下方 23 行时直接看行号边缘数字是 23输入23j就过去了不需要先算绝对行号。我强烈建议同时开number和relativenumberVim 会显示当前行的绝对行号和其余行的相对行号互为照应。6. 配置建议与我的几点体会6.1 刚入门不要折腾插件默认配置也没那么糟很多人第一次接触 Vim 就奔向各种插件框架看到网上推荐的插件列表一大堆从一个编辑器老手变成一个“配置搬运工”结果打开 Vim 满屏幕报错提示最后连基础功能都没用熟。我觉得一开始应该把精力放在把默认 Vim 的常用快捷键摸透等理解了基本逻辑再按需引入插件也不迟。如果你想先有一个比较顺手的起点下面这几行配置就够用了set number set relativenumber set tabstop4 set shiftwidth4 set expandtab set smartindent set hlsearch set incsearch set ignorecase smartcase syntax on filetype plugin indent onignorecase smartcase的意思是你搜索时如果输入的是小写就忽略大小写匹配如果输入里有大写则严格匹配大小写。这个组合很实用查英文文档的时候不会因为大小写错过匹配。expandtab是把 Tab 转成空格Python 项目尤其需要。6.2 用肌肉记忆代替“记笔记”后台总有人问“这么多快捷键记不住怎么办”。我的做法是不记只练。每天挑一组比如今天只练wbe打开一个长文本文件反复在行间移动明天练c系列找个 Markdown 文件把所有小标题都ciw重写一遍。三天后再换新组中间偶尔穿插复习旧的一个月下来常用键基本都变成下意识动作了。还有一个反常识的心得是不要一开始就追求“全键盘操作”。真的需要看文件列表的时候用鼠标点文件夹也不是什么丢人的事。先让常用的 30% 快捷键形成肌肉记忆其他边用边查效果反而更好。我的第一年 Vim 使用基本离不开:help遇到不确定就查查完记住一个用一次下一次就记住了。6.3 从“记快捷键”到“写配置”的进阶路线用了一段时间默认配置你会慢慢发现自己有个性化需求比如希望leader键默认是反斜杠配合某个键快速打开配置文件或者想自定义快捷注释。把这些需求一条条加进~/.vimrc逐渐就形成了自己的配置。不需要一次搞一个几百行的“网红配置”那些只是别人的习惯。我自己的几个偏门配置供参考let mapleader nnoremap leaderw :wCR nnoremap leaderq :qCR inoremap jj Esc nnoremap C-h :vspCR nnoremap C-l :spCR把leader设置成空格键之后空格w保存、空格q退出比按冒号再按 wq 快很多。还建议把leadere映射为打开文件浏览器比如:Ex或:Explore就不需要额外装文件树插件了。文件树插件虽好看但真正写代码时使用频率并不高多数时候用:e直接输入路径就够了。插件方面如果真要推荐起步装我会选这几个方向补全类coc.nvim 或 LSP 客户端、模糊查找fzf.vim、多光标vim-multiple-cursors 可选。但也只是建议插件的价值在你的使用场景明确之后才能体现千万别为了装而装。使用 Vim 久了以后你会发现真正让人离不开的不是某一个快捷键而是这套“手不离键、指令即操作”的思维方式。它能帮你把编辑成本降到最低让你把脑力留给内容本身。我现在的习惯是哪怕只改一个字符也会下意识打开 Vim 而不是记事本因为手动删除再补字那几步实在不如r加新字符一步到位来得痛快。最后分享一个小技巧如果哪一天你觉得某组操作“临时记不住”别硬扛直接在普通模式按:help加那个指令的关键词查内置文档。Vim 自己就是最好的记忆书签查完了跟着例子敲一遍比收藏十篇快捷键文章都有用。
返回列表