一、为什么在 Windows 上还要"折腾"这些老古董编辑器
IDE 是现代开发的主战场,但每天还是会遇到这些场景:
- 在客户服务器上改个
nginx.conf、改个 hosts、临时调个 docker-compose.yml,没有 IDE; - 在没有图形界面的 Server Core 上远程编辑,鼠标不可用;
- 写文档、画流程图、画架构图,临时需要一个不依赖云、不上传数据的工具;
- 调试嵌入式设备、串口工具里
vi 比 notepad 强十倍。
Vim、Emacs、gVim、draw.io 这四件套是 Windows 程序员工具箱的"压箱底"。本文把它们压缩成一份绿色版(portable)实战手册:怎么下载、怎么解压、怎么配置、怎么和系统集成。
二、Vim 与 gVim:极简而强大
2.1 下载与安装
官方仓库 vim/vim-win32-installer 提供绿色版 zip:
1
2
3
4
5
| # 8.2 经典版本
gvim_8.2.4950_x64.zip
# 9.0 最新版本
gvim_9.0.0042_x64.zip
|
解压到任意目录,比如 D:\portable\vim90,把 bin 目录加入 PATH:
Win+R 输入 vim 即可启动,验证版本:
2.2 gVim 鼠标右键集成(Windows 资源管理器)
把"用 gVim 打开"加到文件右键菜单:
1
2
3
4
5
6
7
8
| 1. 开始 → 运行 → regedit
2. 计算机\HKEY_CLASSES_ROOT\*\shell,右击 → 新建 → 项,命名:Open With gVim
3. 在 Open With gVim 右键 → 新建 → 字符串值
数值名称:Icon
数值数据:D:\portable\vim\vim90\gvim.exe,0
4. 在 Open With gVim 下新建项:Command
修改默认数值数据为:
D:\portable\vim\vim90\gvim.exe -p --remote-tab-silent "%1"
|
-p 表示打开多标签页--remote-tab-silent 复用现有 gVim 实例的标签页
2.3 .vimrc 基础配置
C:\Users\<USER>\.vimrc(注意:Windows 下 vim 8/9 优先读 _vimrc 兼容 Windows 习惯):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| " 字体与界面
set guifont=DejaVu\ Sans\ Mono:h18:cANSI:qDRAFT
set nu " 显示行号
set relativenumber " 相对行号
set cursorline " 高亮当前行
set wrap " 自动折行
set showmatch " 高亮匹配括号
set ignorecase " 搜索忽略大小写
set smartcase " 大写敏感时区分大小写
set hlsearch " 高亮搜索
set incsearch " 增量搜索
set tabstop=4 " Tab 宽度
set shiftwidth=4
set expandtab " Tab 转空格
set encoding=utf-8
|
注:<USER> 替换为你的 Windows 用户名。
2.4 必装插件管理器 vim-plug
1
2
| 下载 plug.vim 放到:
C:\Users\<USER>\vimfiles\autoload\plug.vim
|
.vimrc 加:
1
2
3
4
5
6
7
| call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree' " 文件树
Plug 'tpope/vim-fugitive' " Git 集成
Plug 'yggdroot/leaderf' " 模糊搜索
Plug 'jiangmiao/auto-pairs' " 自动括号
Plug 'vim-airline/vim-airline' " 状态栏
call plug#end()
|
启动 gVim 后 :PlugInstall 安装所有插件。
2.5 必背快捷键速查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| # 移动光标
h j k l 左/下/上/右
0 / $ 行首/行尾
gg / G 文件首/文件尾
H M L 屏首/屏中/屏尾
w b e 按单词前进/后退/到词尾
Ctrl+f / Ctrl+b 下/上翻页
Ctrl+d / Ctrl+u 下/上翻半页
Ctrl+e / Ctrl+y 下/上滚一行
zz / zt / zb 当前行移到屏中/顶/底
% 跳到匹配括号
# 模式切换
i a o 光标前/后/下行进入插入
I A O 行首/行尾/上行进入插入
ESC 退回正常模式
v V Ctrl+v 字符/行/块可视模式
# 编辑
x / X 删当前字符/前一字符
dw / de 删一个单词
dd 删整行
d$ 删到行尾
yy 复制整行
p / P 粘到下/上行
u / Ctrl+r 撤销/重做
r 替换单字符
R 进入替换模式
cw / ce 改写单词
# 搜索
/ ? 向下/向上搜
n / N 下一个/上一个匹配
* 搜索当前单词
:%s/old/new/g 全局替换
:%s/old/new/gc 全局替换并确认
# 标签与分屏
:vs xxx 垂直分屏
:sp xxx 水平分屏
Ctrl+w w 切换窗口
gt / gT 下一个/上一个标签
:tabnew xxx 新建标签
:q / :q! 退出/强制退出
:wa 全部保存
# 外部命令
:!chdir 执行 shell
:r !dir 把命令输出读到当前文件
:w test 另存为
# 全选/全删/全复
ggvG / ggVG 全选(字符/行)
ggyG 全部复制
ggdG 全部删除
|
冷技巧:在两个相邻的标点((、[、{)之间需要插入文本时,按 ESC + i 然后输入内容,Vim 临时进入 insert 模式会自动加配对符。
三、Emacs:神一样的存在
3.1 下载
GNU 官方 https://www.gnu.org/software/emacs/,下载 Windows 版的 emacs-28.x 压缩包。解压到 D:\portable\ide\emacs-28.1。
3.2 安装(注册到 Windows 资源管理器)
1
2
| cd D:\portable\ide\emacs-28.1\bin
双击 addpm.exe
|
这一步会在注册表里写入 .txt、.emacs 关联,但对 .md / .conf / .yml 等文本文件没有影响,想关联更多扩展名得手动加。
3.3 启动
1
| runemacs.exe # 推荐,单独的 GUI 进程不挂命令行
|
避坑:用 emacs.exe 启动会同时弹一个 cmd 窗口,关闭 cmd 时 Emacs 也跟着退。永远用 runemacs.exe。
3.4 配置文件 .emacs
C:\Users\<USER>\.emacs:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| ;; 禁用启动画面
(setq inhibit-startup-screen t)
;; 显示行号
(global-linum-mode t)
;; 自动加载文件变更
(global-auto-revert-mode t)
;; y/n 代替 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;; 备份文件放临时目录
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
;; 配对
(electric-pair-mode 1)
;; 中文编码
(set-language-environment 'utf-8)
(setq default-buffer-file-coding-system 'utf-8-unix)
|
3.5 内置教程
Emacs 自带完整交互式教程:
老实说,能完整跑完 C-h t 的人后来都成了大神。
四、draw.io:离线流程图工具
4.1 简介
draw.io(jgraph/drawio-desktop)是 JGraph 团队出品的开源绘图工具,支持:
- 流程图、UML、ER、网络拓扑、BPMN、架构图;
- 离线桌面版,不强制上传到云;
- 导出 PNG、SVG、PDF、VSDX;
- 集成 Confluence、Jira、Notion、Google Drive(云端版)。
4.2 Windows 绿色版
下载 draw.io desktop 的 .exe 安装包(Windows 也有免安装版但要找较老版本)。安装到 D:\portable\ide\draw.io\。
4.3 离线模式(重要)
第一次启动时不要登录任何云账号,直接关闭登录提示:
1
| File → New → Device (Default)
|
这样所有文件都存本地(.drawio 后缀实际是 XML),不会上传。
4.4 高频快捷键
1
2
3
4
5
6
7
8
9
10
| Ctrl + D 复制选中形状
Ctrl + Shift + D 在画布中央新建
Ctrl + G 编组
Ctrl + Shift + U 解组
Ctrl + Shift + L 切换图层
Ctrl + M 编辑样式
Ctrl + K 连接线
F2 重命名
Alt + 拖动 微调位置
滚轮 缩放
|
4.5 实战:用 draw.io 画 K8s 部署架构
1
2
3
4
| 1. 左侧形状库 → 搜索 "kubernetes" → 拖入 Pod/Service/Deployment
2. 用箭头连接 Pod 与 Service
3. 选中所有 → Format → Arrange → Vertical Stack / Horizontal Flow
4. File → Export as → PNG(@2x 给 PPT 用)
|
draw.io 的形状库是声明式 XML,可以自定义:在 Edit → Configure Shapes 里粘贴 GitHub 上 drawio/drawio-github 仓库里的 shape XML。
五、把这四件套放进"开机包"
5.1 目录约定
1
2
3
4
5
6
7
| D:\portable\
├── ide\
│ ├── vim90\ # Vim/gVim 9.0
│ ├── emacs-28.1\ # Emacs 28
│ └── draw.io\ # 离线版
├── path\
│ └── bin\ # 软链接 / 启动脚本
|
5.2 软链接到 PATH
把 gVim、Emacs、draw.io 的可执行文件软链到 D:\portable\path\bin\:
1
2
3
4
| # PowerShell 7+
New-Item -ItemType SymbolicLink -Path "D:\portable\path\bin\gvim.exe" -Target "D:\portable\ide\vim90\gvim.exe"
New-Item -ItemType SymbolicLink -Path "D:\portable\path\bin\runemacs.exe" -Target "D:\portable\ide\emacs-28.1\bin\runemacs.exe"
New-Item -ItemType SymbolicLink -Path "D:\portable\path\bin\drawio.exe" -Target "D:\portable\ide\draw.io\draw.io.exe"
|
把 D:\portable\path\bin 加入系统 PATH,一次配置全公司通用(新机器拷过去即用)。
5.3 跨机器同步
把 D:\portable\ 整个目录放进 OneDrive / 坚果云 / Git LFS,配置和插件一起同步:
1
2
3
| .gitattributes
*.ttf filter=lfs diff=lfs merge=lfs -text
*.vimrc text eol=lf
|
.vimrc 和 .emacs 提交到 dotfiles 仓库更靠谱,软链 + 同步是 Windows 生态下最优雅的方案。
六、常见坑与对策
| 现象 | 原因 | 对策 |
|---|
| gVim 中文乱码 | 字体不支持 | 装 Source Code Pro 或 Sarasa Mono SC |
| Vim 复制到系统剪贴板失败 | 未启用 clipboard 特性 | 装 win32-clipboard 或用 *yy / "+p |
| Emacs 中文乱码 | 编码设置 | 在 .emacs 加 (set-language-environment 'utf-8) |
| draw.io 启动后强制登录 | 云端模式 | 跳过登录,文件存本地 |
Vim :PlugInstall 卡死 | 网络不通 | 配 git config --global http.proxy |
七、下一步
- 进阶 Vim:
<leader>f 模糊找文件、<leader>gg 用 :GBrowse 跳转 GitHub; - 进阶 Emacs:装
use-package、Magit、lsp-mode 把它当 IDE 用; - 进阶 draw.io:在 Confluence 内嵌、导出为 Mermaid 反向编译回文本。
八、参考资料