要说 gvim 的常用配置我其实有点纠结从哪讲起。身边同事一茬一茬从 Vim 迁去 VSCode、Neovim我却一直把 gvim 当主力编辑器写了十几年 Verilog、脚本还有各种临时文本。有人觉得 gvim 老可它稳定、轻量、几乎不挑机器只要把配置写顺了那一套编辑节奏是别的工具很难替代的。这篇文章不打算写得像文档翻译而是把我这些年积累的 gvim 入门路径、常用配置、以及几个高频坑一次讲清楚尤其会聊到“修改字体主题后第二次打开失效”这个困扰很多人的问题顺便给做硬件开发的朋友讲讲怎么让 gvim 更好地处理 Verilog。1. 先搞清楚 gvim 到底是个什么东西1.1 从 vim 到 gvim多的不只是窗口很多人第一次接触 gvim都会有一个疑问我明明可以在终端里敲 vim为什么要另开一个图形程序这个问题的答案其实要看你所在的场景。gvim 是 Vim 的图形前端版本底层还是那个 Vim 编辑器。它和终端 vim 共用同一套命令体系、配置语法和插件生态区别在于 gvim 提供了独立的图形窗口有自己的菜单栏、工具栏可以直接用鼠标操作并且在字体渲染、颜色显示、剪贴板交互这些方面跟操作系统结合得更紧密。对 Windows 用户来说gvim 的图形界面尤其友好装完之后双击图标就能打开一个干干净净的编辑器窗口不需要先启动终端也不用记一套“打开终端再输入 vim”的流程。但 gvim 的价值远不止“多了一个窗口”。在 Windows 下终端 vim 经常遇到剪贴板不通的问题——你在 gvim 里按y复制内容系统剪贴板里却没有或者反过来粘贴不进去。gvim 由于自带完整的 GUI 支持通常编译时就开启了剪贴板功能拿来就能用。再加上 gvim 支持更丰富的鼠标事件、菜单操作、右键菜单对新手来说上手门槛比纯命令行 vim 低不少。1.2 谁还在用 gvim它到底解决了什么问题经常有人问现在编辑器那么多gvim 这种“老古董”还有必要学吗我的判断是分人。如果你主要写前端、Java、Python平时离不开智能提示、格式化、LSP、调试器这些重依赖那 VSCode、JetBrains 系确实更合适。gvim 在这方面的能力虽然能通过 coc.nvim、vim-lsp 补上但折腾成本确实存在。但如果你属于下面这几类人gvim 依然很能打经常要登录远程服务器改配置、写脚本的人。本地 gvim 编写服务器 vim 改文件两边的键位和操作习惯完全一致不用在两个工具之间来回切换思路。硬件工程师。写 Verilog、SystemVerilog 的时候gvim 轻量启动快打开大文件不卡配合语法高亮和自动缩进比很多 IDE 顺手得多。对编辑效率有执念、愿意花时间打磨工具的人。Vim 的文本对象、宏录制、跳转查找这些能力一旦形成肌肉记忆效率确实高。gvim 解决的核心问题就是在保留 Vim 全部编辑能力的前提下提供一个稳定的、跨平台的、不依赖终端环境的图形化编辑入口。它可能不是你唯一的选择但在某些场景下它确实是最顺手的选择。2. 从零装好 gvim先说清楚这几件事2.1 下载、安装与环境变量gvim 的安装不算复杂但我建议你在装之前先明确一个概念gvim 是 Vim 的 Windows 发行版之一我们常说的“vim 官网”实际上是指 vim.orgWindows 安装包在 vim.org 的 download 页面里能找到。安装时我通常会做两个额外操作第一把安装路径下的vim90版本号视具体情况而定目录加入系统 PATH 环境变量这样后续可以在任意目录的终端中直接调用gvim命令打开文件。第二如果系统里已经装了 Git for WindowsGit 自带的vim可能和 gvim 的版本不一样。为避免冲突建议在 PATH 里把 gvim 的安装目录放在 Git 的usr/bin之前或者在调用时使用完整路径。安装完以后你可以在 Windows 搜索框里输入gvim打开程序也可以在命令行里输入gvim test.txt测试。第一次启动时gvim 会提示是否创建配置文件建议选择“创建”或“使用默认配置”后面我们会手动写自己的配置。提示如果你在写 Verilog 或其它代码请尽量安装 64 位版本。32 位版本打开大文件、处理长行时更容易碰到内存和性能瓶颈。2.2 安装目录里那些文件分别有什么用gvim 安装完之后看一看安装目录你会发现里面有不少文件和文件夹。对新手来说先记住这几个就够路径作用vim.exe/gvim.exe命令行版本和图形版本的可执行文件vimrc系统级配置文件默认模板一般不要去动_vimrc或.vimrc用户级配置文件这是你主要打交道的文件syntax/内置语法高亮文件比如verilog.vim就在这里ftplugin/文件类型插件目录每种文件类型可以有自己的特殊设置indent/针对不同语言的缩进规则autoload/延迟加载函数目录很多插件依赖这个机制vim80/或vim90/按版本号命名的运行时目录里面是内置脚本明白了这些目录的位置后续配置插件、排查“为什么配置不生效”时你就能快速判断是用户配置的问题还是运行时文件冲突的问题。这个能力非常实用很多“诡异”的 bug 其实都是用户配置和系统配置互相覆盖导致的。3. gvim 常用配置逐条拆解照着抄就行3.1 配置文件位置与加载顺序先弄懂再动手在 Windows 下gvim 的用户配置文件一般叫_vimrc位于你的用户目录通常是C:\Users\你的用户名\_vimrc。如果找不到可以在 gvim 里执行:echo $MYVIMRC它会直接告诉你 vim 当前读的是哪个配置文件。同样的_gvimrc是另一个可选配置文件专门存放 GUI 相关的设置。加载顺序也很重要按照官方文档vim 启动时会先读取系统级的配置再读取用户级配置最后读取_gvimrc中额外的 GUI 设置。这意味着如果你在_vimrc和_gvimrc中对同一个选项做了不同设置后加载的_gvimrc会覆盖前面的。新手最容易踩的坑就是明明在_vimrc里设置好了字体和配色但某天用 gvim 的菜单手动改了一次字体关闭再打开发现界面又恢复成以前的样子。这里的原因我后面会专门展开讲现在先记住一句话不要用菜单改配置所有配置都写在配置文件里并且保证同一选项只设置一次。3.2 基础编辑行为配置先把手感调舒服配置 gvim 的第一步一定是先调整编辑器的基本行为让它在 Windows 下的表现更接近现代编辑器的习惯。下面这段配置我用了很多年每一行都可以解释清楚set nocompatible set encodingutf-8 set fileencodingsutf-8,gbk,gb2312,gb18030,latin1 set fileformatsunix,dos set number set relativenumber set cursorline set laststatus2 set ruler set showcmd set wildmenu set history1000 set backspaceindent,eol,start set whichwrap,,[,] set mousea set clipboardunnamedplus set tabstop4 set shiftwidth4 set softtabstop4 set expandtab set smartindent set autoindent syntax on逐块解释一下set nocompatible让 vim 以增强模式运行而不是兼容老 vi。这是所有配置的前提不写这一行很多功能都不完整。set encodingutf-8与set fileencodingsutf-8,gbk,...先保证 gvim 内部以 UTF-8 处理文本又能在打开 GBK 编码的旧文件时自动识别。这一点对国内用户尤其重要很多旧工程文件还是 GBK 编码。set number和set relativenumber同时显示绝对行号和相对行号既能知道当前在第几行又方便使用5j、3k这类跳跃操作。set tabstop4 shiftwidth4 softtabstop4 expandtab把 Tab 统一展示为 4 个空格宽度并且输入 Tab 时自动插入空格。对不同人写的代码统一缩进风格能省去大量对格式的扯皮。set smartindent或更严格的set cindent根据语法自动缩进对 C 风格语言和 Verilog 很有效。这段配置写完重启 gvim基本就能获得一个“比较现代”的编辑器手感。我见过很多人第一次配置时喜欢把几百行配置一次性抄进去然后出问题不知道怎么排查。我的建议是分批加每加一小段就重启一次确认没问题再继续。3.3 字体和主题配置以及一个非常经典的坑字体和主题是 gvim 观感的核心也是大家最爱出问题的地方。先给出一份我在 Windows 下常用的配置if has(gui_running) set guifontJetBrains\ Mono:h12 set linespace2 set backgrounddark colorscheme desert endif这里解释几个细节set guifont在 Windows 下用h表示字号比如h12表示 12 磅。字体名称里的空格要用\转义或者用下划线形式JetBrains_Mono:h12。在 Windows 下也可以使用:set guifontConsolas:h11。set linespace2是行间距这个设置会直接影响代码的疏密程度我习惯 2 像素觉得拥挤可以改成 0 或 1。colorscheme desert是 vim 自带的经典配色在终端和 GUI 下表现都比较稳定。你也可以安装gruvbox、molokai、onedark这些流行配色但要记住一点配色文件必须放在colors/目录下并且要在配置里用colorscheme命令加载。然后说那个让很多人挠头的经典问题“gvim 修改字体、主题后第二次打开就失效”。我排查过很多次这个问题也见过不同的触发场景最常见的其实是下面几种第一种用菜单改字体改完没保存。在 gvim 里执行“编辑 - 选择字体”会把当前窗口的字体临时改掉但这个修改只对当前会话有效。只要关闭 gvim下次启动还是会读取配置文件里的guifont。如果你配置里根本没写guifont那就恢复默认值。这算不上“失效”而是“你根本还没把配置写进去”。第二种配置写对了但后面被覆盖。比如你在_vimrc里写了colorscheme desert set guifontConsolas:h11然后在后面又加载了某个插件而插件在VimEnter钩子里调用了colorscheme default或修改了guifont你的设置就被覆盖了。这种情况常见于一些“美化增强型”插件。排查方法很简单在 gvim 里执行:verbose colorscheme它会告诉你当前配色是哪个文件、哪一行设置的执行:verbose set guifont?也能看到字体是被谁改的。这个命令能定位绝大多数配置覆盖问题。第三种配置文件编码问题导致最后几行没被加载。Windows 下_vimrc如果保存为 UTF-8 带 BOM 格式某些版本的 vim 能识别但如果你用的输入法或编辑器把它存成了不带 BOM 的 UTF-8而里面又包含中文字符vim 在旧版本里就可能解析异常。表现就是前面一部分配置生效了后面关于字体、主题的配置没生效。我建议把_vimrc统一保存为 UTF-8 编码并且文件开头写上scriptencoding utf-8这样即使文件里有中文注释也能保证脚本解析正确。第四种也是最隐蔽的使用了 gvim 的“自动保存配置”机制配置被写到了你意想不到的地方。有些版本或发行版在通过菜单改字体时会自动写入_gvimrc。如果用户一开始在_vimrc里写了字体配置菜单操作又把一段set guifont追加到了_gvimrc而且两个配置不一致启动时后加载的_gvimrc就会覆盖_vimrc。解决办法是打开_gvimrc看看有没有多出异常内容把重复项删掉保留一个你想要的值就行。提示请养成一个习惯修改任何配置之前先执行:verbose set guifont?和:verbose colorscheme看清楚当前配置从哪里来再动手。绝大多数“配置不生效”问题都能通过这个命令缩小排查范围。3.4 编码、缩进和文件处理这些细节决定舒服程度除了基础的编辑行为和界面设置gvim 日常使用中还经常遇到几个跟文件本身相关的需求。第一个需求是统一换行符。Windows 下创建的文本文件默认是 CRLF 换行Linux 和 macOS 下是 LF。如果你经常在两个平台之间切换建议配置set fileformatsunix,dos这个配置表示 vim 打开文件时按 unix、dos 的顺序自动识别换行符这样可以避免打开旧文件时显示出一堆^M乱字符。第二个需求是文件末尾自动加换行。很多编译器、格式化工具要求文件末尾有一个换行符因此可以设置set noeol set binary但要注意这组配置和某些插件可能有冲突如果你不处理这类问题保持默认即可。第三个需求是自动保存会话、记住上次打开的文件位置。我习惯在目录下放一个.lvimrc或使用 viminfo 来记忆历史位置set viminfo100,500,s10,h这个配置会让 vim 记住最近 100 个文件的历史位置、寄存器内容等省去每次打开文件后重新跳转的麻烦。第四个需求是对特定文件类型做差异化设置。比如对 Python 用 4 空格缩进、对 Makefile 用 Tab 缩进、对 Verilog 用 4 空格缩进。可以用filetype plugin indent on结合ftplugin实现filetype plugin indent on然后在~/.vim/ftplugin/目录下建一个verilog.vim里面写setlocal tabstop4 setlocal shiftwidth4 setlocal softtabstop4 setlocal expandtab setlocal smartindent这样只有打开.v、.sv文件时才会加载这些设置不会影响其它语言。3.5 快捷键、命令别名与插件管理把效率提上去gvim 的学习曲线核心就在快捷键。初学时你可以先记住几个“性价比极高”的操作操作作用gg跳到文件第一行G跳到文件最后一行0/$跳到行首 / 行尾w/b按单词向前 / 向后跳f 字符在当前行向后查找字符dd/yy/p删除 / 复制当前行粘贴ci删除双引号内内容并进入插入模式ctrlv配合移动进入可视块模式可以同时编辑多行我在_vimrc里还加了一些个人习惯let mapleader nnoremap leaderw :wCR nnoremap leaderq :qCR nnoremap leadere :eCR nnoremap leadert :tabnewCR nnoremap J 5j nnoremap K 5k把空格键设为 leader 键之后很多操作变成了两个键完成比如空格w保存、空格t新建标签页用久了手不会离开主键区效率提升很明显。插件管理方面老牌方案是 Vundle更现代一点的是 vim-plug。vim-plug 的安装和使用都很简单let data_dir has(nvim) ? stdpath(data) . /site : ~/.vim if empty(glob(data_dir . /autoload/plug.vim)) silent execute !curl -fLo . data_dir . /autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin(~/.vim/plugged) Plug preservim/nerdtree Plug vim-airline/vim-airline Plug jiangmiao/auto-pairs Plug tpope/vim-fugitive call plug#end()然后在 gvim 里执行:PlugInstall等它下载完成重启即可。我建议新手先装一个 NERDTree 文件树和 auto-pairs 自动补全括号就够了不要一次性装几十个插件否则出了问题都没法判断是谁引起的。提示gvim 插件出问题时最稳妥的办法是隔离。用gvim --clean启动或者临时把_vimrc改名确认是插件问题还是配置问题再逐个恢复。4. 高频问题专项排查字体主题改完第二次打开就“打回原形”4.1 现象复现与根因分析这部分我单独拿出来写是因为“gvim 修改字体主题第二次打开失效”这个关键词被搜得非常多而且它的成因确实比表面上复杂不是一句“你没保存配置”就能解释的。先复现一下现象你在 gvim 菜单里选了新字体、换了新主题当时窗口里显示正常关掉后重新打开又回到默认的白色背景和默认字体。或者你在_vimrc里手动设置了guifont和colorscheme第一次打开正常第二次打开却发现没有生效。根因可以从三个层面去理解菜单操作只改当前会话。gvim 的 GUI 菜单本质是执行对应的 Ex 命令比如选择字体就是:set guifont...。这些命令不会自动写入配置文件所以重启后丢失是正常行为。配置被多次或重复设置后执行的覆盖先执行的。比如同一个文件里出现了两行colorscheme或者一行set guifont后面又因为插件加载触发了set guifont*后者会把字体重置为系统默认。配置文件没有被正确读取或者读取过程中某个阶段出错。编码问题、路径问题、文件名大小写问题都可能让配置在启动时加载失败。Windows 下文件名不区分大小写但 vim 内部对_vimrc的查找逻辑是区分平台的有时候你建了.vimrc而不是_vimrcvim 也能识别这倒是没问题但如果两者同时存在且内容不一致就会引起混乱。4.2 一套完整的排查与修复流程为了彻底解决这类问题我建议你按下面的流程走一遍每一步都能帮你排除一个常见原因。第一步确认当前实际加载的配置路径。执行:echo $MYVIMRC看到这个路径后用记事本或 gvim 打开确认里面确实有set guifont和colorscheme两行。第二步检查配置加载顺序和覆盖来源。执行:verbose set guifont? :verbose colorscheme输出会显示当前值以及它是被哪个文件哪一行设置的。如果显示 “Last set from” 指向了一个插件文件或你没想到的路径问题就找到了。第三步检查_gvimrc和_vimrc是否存在冲突。在 gvim 里执行:scriptnames这个命令列出启动时加载的所有脚本。如果_gvimrc里也有set guifont或colorscheme它会把_vimrc的设置覆盖掉。删掉后者的重复配置即可。第四步检查配置文件中是否包含不可见字符或编码问题。用“显示所有字符”模式打开文件确认文件末尾没有奇怪的空白字符并且验证编码为 UTF-8 无 BOM。如果文件里有中文字符并且编码不对最好加上scriptencoding utf-8。第五步临时隔离验证。把_vimrc改名比如改为_vimrc.bak然后只创建一个只包含下面两行内容的新_vimrcset guifontConsolas:h12 colorscheme desert启动 gvim如果字体和主题正常说明问题出在原来的配置内容上逐段放回排查。如果连这个最小配置都不生效那就要怀疑是版本问题、系统主题问题或者在 Windows 10/11 的高 DPI 环境下字体缩放导致视觉上看起来像是没改。关于高 DPI 的问题我补充一句Windows 显示缩放比例高时比如 150%gvim 的字体大小可能看起来比实际设置小这是 DPI 缩放导致的不是配置失效。可以在 gvim 快捷方式的“兼容性”属性里调整高 DPI 设置或者在启动时用gvim.exe --dpi-aware类似参数视版本而定处理也可以手动把字号调大。5. 硬件工程师的 gvim 进阶Verilog 与 SystemVerilog 开发配置5.1 为什么写 Verilog 我还推荐 gvim在做 FPGA、IC 验证的圈子里用过 Vim 的人不少。原因不外乎几个gvim 打开几百 MB 的网表文件、仿真日志非常快不像某些 IDE 要等半天Vim 的宏录制、批量编辑能力在处理重复信号赋值、端口列表时异常高效另外很多 EDA 工具和远程服务器环境都预装了 Vim本地用 gvim、远程用 vim一套操作思路吃遍所有环境。当然现在的 VSCode 加上 Verilog 插件也做得不错但我个人觉得 Vim 的文本编辑效率依然有不可替代的优势。特别是在大规模端口连线这种“机械操作”上录制一个宏然后批量执行能省下大量时间。5.2 verilog-mode 与 vim 内建 Verilog 支持的配置关于 Verilog 在 gvim 中的支持有几个层面需要分别说清楚。第一层vim 自带的语法高亮和缩进。只要在_vimrc里写好syntax on和filetype plugin indent on打开.v、.sv文件时vim 会自动识别并启用内置的 Verilog 语法文件和缩进规则。你会立刻看到关键字、注释、宏定义被高亮缩进也基本符合常规风格。第二层增强功能。这里要提一下“verilog-mode”。严格来说verilog-mode 起源于 Emacs 社区是一个非常强大的 Verilog 编辑模式但 vim 生态里也有对应的移植和替代方案比如一些插件会借鉴 verilog-mode 的自动补全、模块实例化、端口连接等功能。在 vim 中你可以在插件目录里搜索 verilog/SystemVerilog 相关的扩展常见的有vhda/verilog_systemverilog.vim提供了很多 Verilog/SystemVerilog 的增强功能包括语法高亮、格式化、模块实例化辅助等。vim-verilog-instant专门帮助生成模块实例化代码。也可以用通用补全插件配合coc.nvim通过 LSP 服务实现一定程度的代码补全和检查。不过说实话硬件开发的 EDA 工具链和软件世界不太一样vim 插件在 Verilog 的智能感知上肯定不如商业 EDA 工具全面但在代码编写效率上它依然是利器。我个人的配置是augroup verilog_settings autocmd! autocmd FileType verilog,systemverilog setlocal tabstop4 shiftwidth4 softtabstop4 autocmd FileType verilog,systemverilog setlocal expandtab smartindent autocmd FileType verilog,systemverilog nnoremap buffer F5 :!vcs -sverilog %CR autocmd FileType verilog,systemverilog nnoremap buffer F6 :!vsimexec -c run -allCR augroup END这里的意义是打开 Verilog 文件时自动切换缩进风格并且按 F5 可以直接在 gvim 里调用 vcs 编译当前文件按 F6 可以执行仿真命令。虽然这取决于你的 EDA 环境具体命令是什么但把编译、仿真集成到编辑器快捷键里的思路值得试一试。5.3 一些 Verilog 场景下的实用技巧写端口列表时有个很好用的技巧。比如你想把某个模块的端口全部列出来可以先把端口名列表粘贴进来然后在可视块模式下用I统一在前面加上input wire用A统一在后面加上;整个过程可能只需要几十秒。另外宏录制的应用非常广。比如处理一份重复模式的信号赋值文件录制一个宏把光标移到行首、复制、跳到下一行、粘贴、改一个编号然后100q一次循环执行瞬间完成重复劳动。Vim 的“宏录制可视块全局替换”这套组合才是它效率的王牌。对于做验证的人我还有一个建议把常用 testbench 模板放进~/.vim/templates/目录然后在_vimrc里配置自动读取autocmd BufNewFile *.v silent! 0r ~/.vim/templates/testbench.v这样每次新建.v文件会自动把模板内容插入进去省掉每次手写头文件、参数定义、时钟生成器的时间。这个思路同样适用于 RTL 文件的模块模板。6. 想起来就心疼的坑和一点私房技巧6.1 我踩过的几个 gvim 配置坑配置 gvim 这么多年我踩过的坑大概可以填一页文档了。挑几个代表性的说说。第一个坑在_vimrc里写了带中文注释的文件却没有加scriptencoding utf-8。某次升级 gvim 之后整个配置文件从中间开始解析报错后半段的配置全部失效连guifont都没了。排查了半小时最后才发现是文件编码识别问题。现在我把scriptencoding utf-8作为所有配置文件的固定开头。第二个坑装了某个自动保存主题的插件启动后它会把当前主题自动写进配置文件。如果我手动改过_vimrc里的主题名插件在下一次启动时又把它改回去形成“你改它它改你”的死循环。解决方案是干脆卸载那种插件或者把主题的设置放到_gvimrc并确保插件不修改该文件。第三个坑Windows 下用set guifont时如果字体名没有正确转义设置后会得到一个字体改名失败的弹窗。比如Microsoft YaHei中间有空格就必须写成set guifontMicrosoft\ YaHei:h12或者用下划线形式set guifontMicrosoft_YaHei:h12如果不转义gvim 会认为你在设置多个字体导致设置无效。第四个坑把无插件、无配置的vim -u NONE当成判定标准时没有注意环境变量。有一次我发现 gvim 启动特别慢排查后发现是插件目录下残留了一个无效的网络文件请求每次启动都尝试访问外部地址。这种问题通常只能靠隔离法慢慢找。6.2 把 gvim 用顺手的几个小习惯最后分享几个我常年保留的小习惯它们不一定写在配置里但对效率影响很大。我习惯在 gvim 里设置“自动保存视图”。有些配置文件我希望在关闭后重新打开时还能停留在上次编辑的折叠状态和光标位置autocmd BufWinLeave *.* mkview autocmd BufWinEnter *.* silent loadview这个配置需要谨慎使用因为对某些大文件会产生额外的视图文件但对我这种经常分几次编辑同一份文件的人来说真的很舒服。我会给常用语言创建不同的ftplugin文件。前面提到过 Verilog同样我也会对 C、Python、Markdown 分别设置缩进、字数、格式化等规则。用setlocal而不是set可以避免不同文件类型的设置互相污染。我还会定期把_vimrc放到自己的网盘或 git 仓库里保存。配置这东西只有自己知道每个选项是什么意思重装系统后如果从零开始写至少得花一晚上。保存一份带注释的版本不仅方便自己也能在换电脑时快速恢复环境。另外一个比较主观的建议不要盲目追求复杂配置。现在网上很多配置动不动就是几百行、几十个插件看起来很酷实际上很多你根本用不到。我的家庭配置也就一百多行核心就是字体、缩进、配色、快捷键、少量自动命令。工具是拿来用的不是拿来折腾的。把每个配置项的原因搞清楚比抄一大堆配置重要得多。说回开头那个问题——字体主题第二次打开失效。这个坑的本质其实是“配置来源不唯一”和“加载顺序不明确”。只要你把配置统一收口到_vimrc并习惯用:verbose去追查配置来源这一类问题基本都能半小时内解决。gvim 这个编辑器最大的特点就是你越用越懂它。刚开始你可能记不住快捷键配置也要频繁查文档但坚持一两周之后手指就会慢慢记住那些跳跃、复制、替换的节奏。等到你在终端里按着 gvim 的操作习惯处理文件时你会发现它带来的效率提升是真真切切的。希望这篇配置笔记能帮你少走一些弯路把更多时间留给真正要写的代码。
阅读完成 · 觉得有帮助?