ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Vim 从入门到实践:一篇文章理清模式、命令与配置

Vim 从入门到实践:一篇文章理清模式、命令与配置 我得先讲个真实观察如果你去翻各搜索引擎里 vim 相关的高频问题常年霸榜的一定是vim 如何保存退出vim 怎么到底端linux vim 保存和退出这一类最基础的操作。一个编辑器的基础操作成了大家最常搜索的内容这本身就说明了很多东西——Vim 的入门门槛从来不在命令多不多而在它的操作心智模型和图形界面编辑器完全不同。三年前带过一个从 Xcode 转过来的实习生第一天他连按了十几次 CtrlS然后绝望地发现 vim 编辑器根本不回应。并不是他不聪明而是他脑子里预设了编辑器就该 CtrlS 保存这套逻辑。这篇文章我会从 vim 安装开始把模式、移动、增删改查、搜索替换、保存退出、多窗口、配置文件一直到实战习惯串成一条完整的学习路径。目标读者就两类人刚开始用 vim 命令的新手以及平时写代码但经常要在服务器上被迫和 vim 打交道的开发者。我会尽量用为什么的角度来讲每一个操作而不是丢一张命令表让你背——命令表网上到处都是真正稀缺的是理解它的设计逻辑。1. 先想清楚Vim 的难度到底在哪1.1 为什么保存退出能成为最高频搜索词你可以去看任何一个 vim 常用命令总结帖评论区一定会有人问怎么写完保存退出。这背后的本质是大多数人对编辑器的认知来自图形界面——打开文件、输入文字、点保存按钮、关闭窗口整个过程只有一个状态。而 Vim 采用的是多模式设计默认打开后你不在输入模式你处在普通模式按i才进入插入模式按Esc又回到普通模式。这种设计在 1976 年是非常先进的因为它让键盘上的每个键都能变成命令而不是只能打字。但代价是新用户第一次打开 vim 后随便敲几下键盘屏幕上出现的是一堆无法理解的文字然后人被卡住。想退出按 CtrlS 没反应想关闭窗口按 CtrlW 反而触发了别的动作。这就是为什么vim 如何保存退出能成为顶级搜索词连最基本的生命周期操作都找不到入口后面的功能自然更无从谈起。1.2 模式设计既是最陡的坡也是最大的杠杆先花一分钟建立正确的心智模型。Vim 有四个基本模式绝大多数操作都在这些模式下完成模式进入方式主要任务普通模式Normal打开文件的默认状态按 Esc 可返回移动光标、执行删除/复制/粘贴等命令插入模式Insert按 i / a / o / I / A / O输入和修改文字可视模式Visual按 v / V / Ctrlv选中文本后统一操作命令行模式Command-line普通模式按 : 或 /执行保存、退出、搜索、替换等命令理解这个表之后再去看那些vim 常用命令就不会觉得零散了大部分命令是给普通模式用的冒号命令是给命令行模式用的字母命令是给插入模式用的。你只要记住打开文件先别急着打字想打字先按 i第一条坎就算跨过去一半。1.3 投入产出比Vim 值不值得花时间学我认为是值得的但前提是判断清楚自己的使用场景。如果你是 SSH 到服务器上改配置文件、在 Linux 终端里写脚本Vim 是绕不开的因为服务器上不一定有图形界面也不一定装得下 IDE。如果你只是在本地开发那你至少也应该在 IDE 里装一个 Vim 模式插件比如 VS Code 的 Vim 插件、JetBrains 系 IDE 的 IdeaVim让编辑器的光标移动和文本操作拥有 Vim 的肌肉记忆。真实情况是Vim 的学习曲线是两到三周别扭然后越用越顺——前期你确实会不停按错键、想往回退但一旦手指形成记忆你修改一行代码、删一段日志、跨文件跳转的速度会明显快于鼠标流。我在公司带过好几个零基础的人最快的两周后就不再问我方向键的问题了。2. 安装与打开文件先把环境跑起来2.1 不同系统下的安装方式很多人以为 vim 是 Linux 自带的东西顺手就能用。实际上不同发行版自带的版本差异很大有些最小化安装的系统里只有 vi 的精简版连语法高亮都没有。我把常见场景整理成一张表系统推荐方式命令Debian / Ubuntuaptsudo apt install vimCentOS / RHELyumsudo yum install vim-enhancedFedoradnfsudo dnf install vimmacOSHomebrewbrew install vimWindows官方安装包或 Git Bash官网下载 vim-win32 安装包macOS 其实自带了/usr/bin/vim日常改配置够用但系统自带的版本有些不带剪贴板支持和 python 支持如果你计划把它当主力编辑器还是用brew install vim装一份完整版比较好。Linux 这边安装完可以用vim --version看一眼特性列表确认有syntax和clipboard这两个特性没有的话后面会踩坑。2.2 打开文件的几种常用姿势最基础的当然是vim 文件名但实际使用中会有很多变体我把工作里真正用得上的列出来vim file.txt打开单个文件光标默认在第一行。vim file1 file2 file3打开多个文件Vim 会打开第一个后面用:next、:prev切换。vim file.txt打开文件并跳到末尾适合看日志的场景。vim 50 file.txt打开文件并跳到第 50 行适合处理带行号的报错信息。vim -R file.txt以只读模式打开防止手滑改坏配置文件。vim -c 命令 file.txt打开文件后立刻执行一个 ex 命令比如vim -c %s/foo/bar/g file.txt能在打开时就完成全局替换。这里要特意回应一个有意思的搜索词vim c0。这不是一个独立命令它大概率是vim -c 0 文件名这种写法被截断后的样子。-c 0的作用是打开文件后把光标定位到第 0 行也就是第一行。不过文件打开默认就在第一行所以这个参数本身没有太大意义真正有价值的是-c这个参数本身——它让你可以在打开文件的同时自动执行一条命令。理解了这件事你就能举一反三比如vim -c normal! G file.txt可以直接拉到底部。2.3 打开文件里引用的文件路径gf 命令经常有人搜vim 打开文件里引用的文件路径这是因为大家在 IDE 里习惯了按住 Command/Ctrl 点击就能跳转到引用文件到了终端里不知道 vim 有没有类似功能。答案是有的而且非常好用那就是gf。操作方式是在普通模式下把光标放在某一个文件名或路径上然后按gfVim 会根据当前文件的路径去查找并打开它。比如你在写 C 代码时光标停留在#include utils.h的utils.h上按gf就会直接打开这个头文件。搭配几个变体能进一步提高效率C-wf在新的分屏窗口中打开该路径。C-wgf在新的标签页中打开该路径。默认情况下gf只会在当前目录查找为了让它在子目录里也能找到文件可以在配置文件里加一句set path**。如果 Vim 找不到文件会提示E447: file name is in path。这个功能在 Xcode 里对应的就是 command点击跳转在终端 vim 里就是这一个按键的事学会之后从 IDE 转过来的人会格外舒服。3. 光标移动练好这一关后面全通了3.1 为什么方向键是 hjkl每一位 vim 新手都会发出灵魂质疑为什么上下左右不用方向键非要用hjkl这跟历史有关最早的 ADM-3A 终端键盘上没有独立的方向键而是在hjkl这几个键位旁边印着方向箭头vi 的作者 Bill Joy 顺手就用了这套键位。但抛开历史hjkl有实打实的好处你的右手不用离开字母区也就不会破坏键盘流。如果你已经习惯了在图形编辑器里左右移动光标初期会很痛苦我给所有新人的建议是第一周咬咬牙别碰方向键一旦你适应了hjkl的指位再回去用方向键反而觉得别扭。按键动作记忆方法h光标左移在最左边j光标下移形状像往下的钩子k光标上移在 j 上面l光标右移在最右边3.2 行内移动快速定位到目标字符很多人在 vim 里移动光标还是j→j→l→l一格一格挪这其实没有发挥出 vim 真正的效率。行内移动有几个高频组合键必须现在记住0移动到行首第 0 列^移动到行首第一个非空字符$移动到行尾。w跳到下一个单词开头b跳回上一个单词开头e跳到单词结尾。W、B、E忽略标点符号的单词跳跃适合处理带下划线的路径名。f{字符}在行内向后找特定字符比如fx会跳到下一个x上F{字符}是向前找找到之后按;继续找下一个按,回退。t{字符}跳到目标字符的前一个位置适合配合修改命令使用。举个例子如果一行配置是timeout 30你想把 30 改成 60最快的方式是f3跳到 3 上然后r6把它替换成 6。整个过程三个键完全不用方向键。这就是为什么说 vim 不仅仅是能不用鼠标而是用键盘也可以精确控制到字符级。3.3 屏幕级与文件级移动针对vim 怎么到底端这个高频搜索直接给答案普通模式下按G跳到文件最后一行按gg跳回第一行。如果先输入数字再按G就会跳到指定行比如15G跳到第 15 行。这是新手第二个必须记住的移动命令。屏幕范围内的移动也很常用H跳到当前屏幕的顶部M跳到屏幕中间L跳到屏幕底部。C-d向下翻半屏C-u向上翻半屏。C-f向下一整屏C-b向上一整屏。zt、zz、zb把光标所在行移动到屏幕顶部、中间、底部。%在成对的括号或if/else配对符号之间跳转写代码时核对括号非常实用。还有一对我特别想强调的键C-o和C-i它们会在跳转列表里回退和前进。你可以把它理解成浏览器里的后退/前进按钮看代码时从 A 函数跳到 B 函数再按C-o就能回到刚才的位置。看大型项目时这一对键的价值比任何花哨技巧都大。3.4 数字前缀与组合习惯vim 的命令几乎都支持数字前缀含义是重复执行多少次。3w是跳三个词5j是往下五行90k是往上九十行。这个设计奠定了 vim 的高效基础你能对一个操作做量化而不是反复按同一个键。新人的练习建议是不要背键位表直接在真实文件里用。每天花十分钟强制自己不用方向键只靠hjkl、w、b、G、gg这些命令在文件里移动。坚持两周速度会超过你之前用方向键的水平。4. 增删改查Vim 编辑命令的底层组合逻辑4.1 进入插入模式的六个键既然普通模式下不能直接打字那怎么切换进插入状态常用的有六个入口按键动作i在光标前插入a在光标后插入I在行首插入A在行尾插入o在下方新开一行并进入插入模式O在上方新开一行并进入插入模式从插入模式回到普通模式按Esc或者按C-[。我个人更推荐后者因为小指不用伸那么远在键盘流状态下更省力。这里要给新人提个醒如果你发现自己在一个文件里敲了一堆字屏幕上的内容完全不是你想要的那大概率是你忘记按i就进入了普通模式 字母命令的连锁反应。遇到这种情况不要慌按u撤销按若干次Esc回到普通模式重新开始。4.2 删除从单字符到整段删除在 vim 里不是靠 Delete/Backspace而是靠命令。记住这样一个逻辑删除动词是d范围由第二个字母决定。x删除光标所在字符X删除光标前一个字符。dd删除当前整行2dd删除两行。dw删除从光标到词尾的内容。d0删除从行首到光标的内容d$删除从光标到行尾的内容。dG删除从当前行到文件末尾dgg删除从文件开头到当前行。这里有一个很多人没意识到的事实dd在 vim 里其实是剪切而不是删除因为被删的内容会进入寄存器你可以用粘贴命令把它放回去。也就是说想移动一行你只需要dd然后到目标位置按p即可。理解这一点后删除操作就不再危险了——最坏情况不过是删错了再u撤销。4.3 复制粘贴yank 与 put复制在 vim 里叫 yank快捷键是y。粘贴叫 put快捷键是p。最常用的组合yy复制当前整行yw复制一个词y$复制到行尾。p在光标后粘贴。对整行来说是在当前行的下方粘贴对字符来说是在光标后插入。P在光标前粘贴。对整行来说是在当前行的上方粘贴。新人最容易搞混的点是复制了却用p粘贴出来的是上次删除的内容。这是因为 vim 把删除、复制共享了同一个寄存器。默认的0寄存器专门存放最近一次y复制的内容如果你确实想粘贴某次复制的内容可以用0p。不过平时工作中我建议直接改配置文件开启系统剪贴板支持让 vim 的复制和系统剪贴板互通这样粘贴的就是你最后一次显式复制的东西符合直觉也方便从编辑器外部复制文本进来。后面配置章节会给出具体写法。4.4 改写c 命令和 r 命令c是 vim 里效率极高的一个命令它的语义是删除并进入插入模式。cw删除当前光标到词尾并进入插入模式让你直接输入新词cc删除整行并进入插入模式c$删除到行尾并进入插入模式。这种做法比先删除再按 i少一步操作也是 vim 操作流畅的关键。r命令则是只替换一个字符不进入插入模式。比如把foo改成fou光标放到o上按ru即可比x加i要利索得多。R进入连续替换模式输入的内容会依次覆盖后续字符适合改写固定宽度的字段。4.5 撤销与重做u撤销上一步C-r重做。这个组合简单但它是你在新手期最重要的救命稻草。我见过太多人在终端里改配置文件改坏了就关了重来其实先按几次u就能恢复到修改前。有一个进阶配置我很推荐在 .vimrc 里加上set undofile让 vim 把撤销历史保存到文件里。这样你昨天改的文件今天打开后还能继续撤销昨天的操作写代码时后悔药的时间窗口大大拉长。5. 搜索替换与可视模式处理文本内容的三种高效方式5.1 搜索/ 与 ?在普通模式按/进入命令行模式的搜索输入关键词后回车光标会跳到下一个匹配位置。?是向上搜索。找到之后n跳到下一个匹配N跳到上一个匹配。几个高频技巧*把光标所在单词作为完整词搜索并向下查找#是向上查找。看代码时找变量引用最方便。:set hlsearch高亮所有匹配结果你能一眼看到全文出现了多少次。:noh临时取消当前的高亮显示但保留 hlsearch 配置。:set ignorecase搜搜忽略大小写配合set smartcase如果搜索词里包含大写字母则自动区分大小写。我是常年开启hlsearch的但每次搜索完高亮还留着挺碍眼后来习惯了用:noh手动清掉。如果你嫌麻烦也可以直接在配置文件里设置nnoremap C-n :nohCR用 CtrlN 随时取消高亮。5.2 替换s 命令的完整写法替换是 vim 里最经典的功能很多vim 常用命令总结都会写:s但真正理解写法的人不多。完整的替换命令组成是范围 s 分隔符 旧文本 分隔符 新文本 分隔符 标志位。:s/old/new替换当前行第一处匹配。:s/old/new/g替换当前行全部匹配。:%s/old/new/g替换全文所有匹配。:10,20s/old/new/g只替换第 10 到第 20 行之间的匹配。:%s/old/new/gc全文替换但每次先让你确认c就是 confirm。:%s#old#new#g当文本里斜杠太多时可以用#做分隔符比如替换 URL。给新人的建议是一次性记住:%s/old/new/g和:%s/old/new/gc两条就够了剩下的变体遇到具体场景再查。替换前最好先用搜索确认一下目标文本的具体样子尤其是带正则符号的内容否则容易误替换。5.3 可视模式批量化编辑的利器可视模式是 vim 给鼠标选文字用户提供的键盘方案。按v进入字符选择按V进入行选择按C-v进入块选择。选完之后可以直接按d删除、按y复制、按c改写、按~切换大小写。块选择是最有想象空间的。比如你有二十行代码需要批量加注释可以这样做光标移到第一行开头按C-v进入块选择用j向下选二十行按I输入#注意是大写 I表示在选中块的起始位置统一插入然后按 Esc所有选中行就都被加上了#。这个操作我几乎每天都会用改配置文件、调字段、加调试日志都比手工一行行改高效太多。6. 保存退出与多文件操作一次性讲透6.1 基础命令族从 :wq 到 ZZ回到开头那个场景——在 vim 里编辑完怎么保存退出直接回答所有新人的高频搜索我把命令族整理成表目标命令保存:w退出未修改:q保存并退出:wq或ZZ保存并退出仅修改时写盘:x不保存退出:q!另存为:saveas 新文件名这里有几个关键点。第一ZZ是在普通模式下直接按不用加冒号适合键盘流但它的语义和:wq略有不同——ZZ只在文件被修改过时才写盘没改动就直接退出。第二x命令也是一样如果文件没修改过它不会执行写操作所以退出速度略快。第三:q在文件有未保存修改时会被拒绝提示E37: No write since last change或E162这是 vim 在保护你不想保存就按:q!想保存就:wq。新人常犯的一个错误是在插入模式下直接输入:wq。你在插入模式下输入的内容会被当作文字写进文件里而不是命令。正确的做法是先按Esc回到普通模式再输入冒号命令。这也是为什么我反复强调必须养成编辑完马上按 Esc 回到普通模式的习惯。6.2 多个文件时的保存退出如果你用vim file1 file2打开了多个文件每个文件对应一个缓冲区。退出相关的命令变成复数形式:wa保存所有修改过的缓冲区。:qa退出所有缓冲区。:wqa或:xa保存所有并退出全部。:qa!不保存任何修改强制退出全部。单个缓冲区的退出仍然用:q但如果你还有其他文件有未保存修改vim 会拒绝退出。这时候你需要判断是:wqa全保存退出还是对某个缓冲区单独处理。6.3 分屏与多窗口实际工作中单文件编辑远远不够。用:sp 文件名做水平分屏用:vsp 文件名做垂直分屏这是 vim 最常见的多窗口用法。分屏之后的窗口切换是另一个高频困惑点C-ww在窗口间循环切换。C-wh/C-wj/C-wk/C-wl按方向切换到对应位置的窗口。C-wc关闭当前窗口。C-w让所有窗口等宽等高。C-w_最大化当前窗口的高度C-w|最大化宽度。这套命令在手速上完胜鼠标点击。尤其当你在写代码时需要同时看头文件和实现文件时C-wv分一个竖屏出来两边对照体验非常接近 IDE 的 split view。多窗口的退出逻辑要尤其注意:q只关闭当前窗口如果这个窗口是最后一个窗口它才会关闭整个 vim。如果你开了三个分屏:q三次才能全部退出或者直接:qa一次搞定。6.4 标签页更清晰的多文件切换标签页命令不多:tabnew 文件名新建标签页gt跳到下一个标签页gT跳回上一个:tabclose关闭当前标签。你还可以用vim -p file1 file2在打开时就把它们放进多个标签页。分屏和标签页怎么选我的习惯是需要同时对照内容时用分屏只是排队打开、临时看一眼的文件用标签页。分屏挤在同一个可视区域里标签页更整洁两者互补。6.5 对 IDE 用户的对照说明给从 Xcode、VS Code 转过来的读者一个对照表帮助你把旧习惯映射到 vimIDE 操作vim 对应CmdS / CtrlS 保存:wCmdW 关闭标签:qCmd点击跳转定义gfCmdF 搜索/或*分屏对比:vsp这套对照不是让你机械地找等价物而是帮你理解vim 和 IDE 的底层逻辑不同但需求是共通的。你在 IDE 里养成的保存、跳转、对比需求在 vim 里都有对应解法只是入口和快捷键不一样。7. 一份新手友好的 .vimrc把默认行为调成现代编辑器7.1 为什么一定要改配置Vim 的默认配置是为四十年前的终端设计的那时候没有图形界面所以默认不显示行号、没有语法高亮、tab 宽度是 8 个空格。今天你如果连配置都不改就拿来当主力编辑器体验会非常劝退。好在你只需要花二十分钟写一个基础 .vimrc就能让它变得顺眼顺手。配置文件的位置Vim 是~/.vimrcNeovim 是~/.config/nvim/init.vim。每次改完后在 vim 里执行:source ~/.vimrc就能立即生效不用退出重进。7.2 直接可用的基础配置我建议新手直接复制下面这份每一条我都写了注释 显示行号与相对行号 set number set relativenumber 光标所在行高亮 set cursorline 语法高亮 syntax on filetype plugin indent on 缩进tab 用 4 个空格代替 set tabstop4 set shiftwidth4 set expandtab set autoindent set smartindent 搜索忽略大小写、智能大小写、边输边搜 set ignorecase set smartcase set incsearch set hlsearch 光标上下方始终保留 8 行上下文滚动不刺眼 set scrolloff8 允许鼠标操作 set mousea 与系统剪贴板互通 set clipboardunnamedplus 撤销历史保存到文件 set undofile 兼容旧 vi 关闭否则很多功能不可用 set nocompatible这里重点解释几个容易踩坑的配置。set expandtab会让 tab 键自动转成空格如果你在写 Makefile 或 Go 代码空格 tab 混用可能出问题这类文件可以在文件内用:set noexpandtab临时覆盖。set clipboardunnamedplus的作用是让 yank 的结果直接进系统剪贴板这样你在终端里复制的内容到浏览器里能直接粘贴反之亦然macOS 上这个选项同样有效。set scrolloff8看起来不起眼但对眼睛非常友好光标滚动到屏幕边缘时会自动留出 8 行缓冲不至于盯着屏幕角落看代码。mousea允许你用鼠标滚轮滚动和点击定位。很多老派 vim 用户反对开鼠标但我的观点是工具服务于人初期开着鼠标能降低挫败感等技术上去了再关掉也不迟。7.3 快捷键映射入门配置文件里最简单也最有用的玩法是映射。 设置 leader 键为空格 let mapleader 空格 w 保存文件 nnoremap leaderw :wCR 插入模式下按 jj 相当于 Esc inoremap jj Esc第一段代码把空格设成了 leader 键之后所有以 leader 开头的组合键都从空格开始。leaderw保存是我最常用的映射因为:w三个键和空格加 w 两个键手感完全不一样。inoremap jj Esc则是新人神器——手完全不用离开字母区就能回到普通模式比按 Esc 舒服太多。为什么这里用nnoremap而不是nmap因为noremap是非递归映射不会触发映射链上的连锁反应。你只需要记住一点写映射时一律用nnoremap、inoremap和vnoremap不会出错。7.4 插件先别急着装新人的共同冲动是装一堆插件让 vim 看起来像 IDE我不建议这样。第一周甚至第一个月请只用内置功能把移动、增删改查、搜索替换练熟。插件是别人的习惯装得越多你越难建立自己的节奏。如果确实需要推荐从 vim-plug 开始curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim然后在 .vimrc 里写call plug#begin() Plug preservim/nerdtree Plug junegunn/fzf, { dir: ~/.fzf, do: ./install --all } call plug#end():PlugInstall安装插件:PlugUpdate更新插件。常见的实用插件就三个方向文件树 NERDTree、模糊搜索 fzf、状态栏 lightline。关于vim c的搜索词这里也说一句vim 打开.cpp、.h文件本身就有语法高亮和折叠再配一个 ctags 或 tagbar做轻量级的 C 代码阅读完全够用并不需要把整个 IDE 塞进终端。8. 新手最常见的坑以及我坚持了几年的 Vim 习惯8.1 高频问题与直接解法最后必须来一个故障排查表这里面每一个问题我都见过真实的人踩过现象原因解法按 CtrlS 没反应IDE 习惯vim 不绑定这个键用:w输入:wq却只留下文字还在插入模式先按 Esc 再输入命令方向键可以用但效率极低手离开了主键盘区强制用 hjkl两周见效在中文输入法状态按 Esc 后命令带中文标点输入法没切英文用C-[或配置inoremap jj Esc想粘贴系统剪贴板却贴出了旧内容寄存器混了配置clipboardunnamedplus或直接搜pdd 删错行没有撤销意识立即按uWindows 下按 CtrlV 变成粘贴终端快捷键冲突用C-q做块选择打开文件乱码编码问题:set encodingutf-8 fileencodingsutf-8,gbk修改只读文件失败权限不足确认无误后:w!或sudo vim 文件有一个坑我特别想展开很多人从图形编辑器转过来第一反应是用方向键移动光标然后发现能用于是放弃了 hjkl。这会导致一个隐藏问题——你的右手会不停在字母区和方向键之间来回移动整体编辑节奏一直被打断。我自己带人时经常说一句如果不用方向键你觉得难受说明还没真的入门如果用了方向键你永远入不了门。8.2 分阶段的学习路径不要试图一周学完所有 vim 命令那样只会让你焦虑。我给新手的分阶段计划是第一周只练移动hjkl、w、b、gg、G、0、$外加i、Esc、:wq。这一周的目标是把编辑后按 Esc变成肌肉记忆。第二到三周加入删除、复制、粘贴、撤销重点练dd、yy、p、u以及x、r。第四周以后练搜索替换和可视模式*、:%s/old/new/g、C-v块编辑。每天只记一条新命令然后强迫自己在当天的编辑里用它。比如今天学会f{字符}今天所有的行内移动都尽量用它。一周下来你会明显感觉到哪些键位已经养成了肌肉记忆。8.3 什么时候用 Vim什么时候用 IDE我的态度是不要神化 Vim也不要贬低 IDE它们是两种场景的工具。在服务器上改配置文件、在终端里写脚本、执行 crontab -e、用 git 写 commit message这些场景 vim 是默认编辑器你躲不掉。而在大型项目里做重构、调试、看调用链IDE 的图形化能力确实更强。中间态就是 IDE 装 vim 插件两边都不耽误。如果你在 macOS 上开发也会遇到分别用 vim 和 xcode的情况写 Swift 用 Xcode改 nginx 配置、改.zshrc、写部署脚本用 vim。两条腿走路既不排斥图形界面也不让终端成为效率瓶颈。8.4 我坚持的几条实操原则最后分享几个我自己用了几年的习惯不是大道理都是踩坑换来的第一配置文件要做版本管理。把.vimrc放进 Git 仓库换新机器一条命令就能恢复出自己的环境。我在 dotfiles 仓库里维护了自己的配置文件遇到新机器git clone下来再建个软链接就行。第二配置里每条都要写注释。人的记忆很不可靠半年前你觉得自己这么简单肯定不会忘的配置半年后就变成了一行天书。写注释不是给别人看的是给三个月后的自己看的。第三不要为了炫技学命令。vim 社区有很多极客玩法比如宏录制、脚本编程、多行编辑这些功能确实强大但如果你现在用不上学完很快就会忘。我的主力配置文件其实只有约三十行日常使用率最高的命令也还是那些基础操作。第四把 vim 用在真实任务里。不要专门开一个文件去练习直接在写博客、改配置、写代码过程中用。真实任务的上下文会让命令记忆得更牢固。上个月帮一位新同事搭环境他问我的第一个问题还是保存退出按哪个键。我说你看屏幕左下角普通模式按:wq。半小时后他回来说我好像开始懂为什么要学这玩意儿了。我想这就是 Vim 最朴素的吸引力——它不是帮你少按几个键而是让你换一种方式思考编辑这件事本身。先把这篇文章里的操作练熟剩下的交给 vimtutor 和时间你会在某个瞬间突然发现自己已经回不去鼠标流了。
返回列表