Featured image of post 文本编辑器与绘图工具:Vim / gVim / Emacs / draw.io 绿色版实战手册

文本编辑器与绘图工具:Vim / gVim / Emacs / draw.io 绿色版实战手册

Windows 程序员必装:Vim 8/9 + gVim 鼠标右键集成、Emacs 28 绿色版、draw.io 离线绘图工具的下载、配置与常用快捷键速查

一、为什么在 Windows 上还要"折腾"这些老古董编辑器

IDE 是现代开发的主战场,但每天还是会遇到这些场景:

  • 在客户服务器上改个 nginx.conf、改个 hosts、临时调个 docker-compose.yml,没有 IDE;
  • 在没有图形界面的 Server Core 上远程编辑,鼠标不可用;
  • 写文档、画流程图、画架构图,临时需要一个不依赖云、不上传数据的工具;
  • 调试嵌入式设备、串口工具里 vinotepad 强十倍。

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

1
PATH=D:\portable\vim90

Win+R 输入 vim 即可启动,验证版本:

1
:version

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 自带完整交互式教程:

1
C-h t     # 启动 tutorial

老实说,能完整跑完 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 ProSarasa 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-packageMagitlsp-mode 把它当 IDE 用;
  • 进阶 draw.io:在 Confluence 内嵌、导出为 Mermaid 反向编译回文本。

八、参考资料

使用 Hugo 构建
主题 StackJimmy 设计