●第1章 開始Vim之旅 1
1.1 技術性要求 2
1.2 開始對話(關於模式界面) 2
1.3 安裝 3
1.3.1 在Linux繫統中設置Vim 3
1.3.2 在macOS繫統中設置Vim 4
1.3.3 在Windows繫統中設置Vim 9
1.3.4 可視化的Vim:gVim 12
1.3.5 安裝結果的驗證和故障排除 14
1.4 命令行Vim和gVim 16
1.5 通過.vimrc文件來配置Vim 17
1.6 常用操作(特別是如何退出Vim) 18
1.6.1 打開文件 19
1.6.2 修改文字 20
1.6.3 保存和關閉文件 21
1.6.4 關於交換文件 23
1.6.5 隨意移動:與編輯器對話 24
1.6.6 插入模式下的簡單編輯 27
1.6.7 持久性的撤銷和重復 29
1.6.8 通過:help閱讀Vim手冊 30
1.7 小結 33
第2章 高級編輯和文本瀏覽 34
2.1 技術要求 34
2.2 安裝插件 35
2.3 組織工作區 36
2.3.1 緩衝區 37
2.3.2 插件——unimpaired 39
2.3.3 窗口 39
2.3.4 標簽頁 45
2.3.5 折疊 46
2.4 文件樹的瀏覽 49
2.4.1 目錄瀏覽器Netrw 50
2.4.2 支持文件菜單的:e命令 51
2.4.3 插件——NERDTree 52
2.4.4 插件——Vinegar 54
2.4.5 插件——CtrlP 55
2.5 文本的瀏覽 56
2.5.1 切換到插入模式 59
2.5.2 用/和 搜索 60
2.5.3 利用文本對像 64
2.5.4 插件——EasyMotion 65
2.6 使用寄存器進行復制和粘貼 66
2.6.1 寄存器 68
2.6.2 從外部復制文本到Vim中 69
2.7 小結 70
第3章 使用先導鍵——插件管理 71
3.1 技術要求 71
3.2 插件的管理 71
3.2.1 vim-plug 72
3.2.2 榮譽推薦 75
3.2.3 分析運行慢的插件 78
3.3 模式詳解 82
3.3.1 正常模式 82
3.3.2 命令行模式和ex模式 82
3.3.3 插入模式 83
3.3.4 可視模式和選擇模式 83
3.3.5 替換模式和虛擬替換模式 85
3.3.6 終端模式 86
3.4 命令的重映射 87
3.5 先導鍵 90
3.6 插件的配置 91
3.7 小結 93
第4章 理解文本 94
4.1 技術要求 94
4.2 代碼自動補全 94
4.2.1 內置自動補全 95
4.2.2 YouCompleteMe插件 96
4.2.3 用標簽瀏覽代碼庫 99
4.3 撤銷樹和Gundo 103
4.4 小結 106
第5章 構建、測試和執行 107
5.1 技術要求 107
5.2 使用版本控制 108
5.2.1 版本控制和Git介紹 108
5.2.2 Git與Vim的整合(vim-fugitive) 115
5.3 用vimdiff解決衝突 118
5.3.1 比較兩個文件 118
5.3.2 vimdiff和Git 121
5.4 Tmux、Screen和Vim的終端模式 124
5.4.1 Tmux 125
5.4.2 Screen 130
5.4.3 終端模式 130
5.5 構建和測試 133
5.5.1 快速恢復列表 133
5.5.2 位置列表 135
5.5.3 構建代碼 135
5.5.4 測試代碼 137
5.5.5 用Linter來檢查語法 138
5.6 小結 142
第6章 用正則表達式和宏來重構代碼 144
6.1 技術要求 144
6.2 用正則表達式來搜索和替換 144
6.2.1 搜索和替換 145
6.2.2 用參數列表來處理多個文件 148
6.2.3 正則表達式基礎 150
6.2.4 魔法(magic)詳解 153
6.2.5 正則表達式的實際案例 154
6.3 宏的錄制和回放 158
6.3.1 宏的編輯 163
6.3.2 遞歸的宏 164
6.3.3 跨文件運行宏 166
6.4 用插件來實現代碼重構 166
6.5 小結 167
第7章 定制自己的Vim 168
7.1 技術要求 168
7.2 Vim用戶界面 169
7.2.1 配色 169
7.2.2 狀態欄 171
7.2.3 gVim相關的配置 174
7.3 配置文件的同步 175
7.4 健康的Vim定制習慣 176
7.4.1 優化工作流程 176
7.4.2 整理.vimrc 177
7.5 小結 179
第8章 卓爾不凡的Vimscript 181
8.1 技術要求 181
8.2 為什麼要用Vimscript 181
8.3 如何執行Vimscript 182
8.4 語法 184
8.4.1 設置變量 184
8.4.2 打印輸出 185
8.4.3 條件表達式 186
8.4.4 列表 188
8.4.5 字典 190
8.4.6 循環 192
8.4.7 函數 194
8.4.8 類 195
8.4.9 Lambda表達式 197
8.4.10 映射和過濾 197
8.4.11 與Vim交互 199
8.4.12 文件相關的命令 200
8.4.13 輸入提示 201
8.4.14 使用幫助 205
8.5 關於編程風格的指南 205
8.6 編寫一個插件 206
8.6.1 插件的文件布局 206
8.6.2 一個基本的插件 207
8.6.3 插件的重新組織 211
8.6.4 插件的改進 214
8.6.5 插件的發布 219
8.6.6 還能進行哪些改進 219
8.7 延伸閱讀 219
8.8 小結 220
第9章 Neovim 221
9.1 技術要求 221
9.2 為什麼需要另外一種Vim 221
9.3 Neovim的安裝和配置 222
9.3.1 檢查健康狀態 223
9.3.2 合理的默認選項 225
9.4 Oni 226
9.5 Neovim高亮顯示插件 228
9.6 小結 229
第10章 延伸閱讀 230
10.1 高效文本編輯的7個習慣 230
10.2 無處不在的模式界面 231
10.2.1 擁有Vim用戶體驗的網頁瀏覽器 232
10.2.2 無處不在的Vim 234
10.3 推薦的閱讀材料和社區 236
10.3.1 郵件列表 236
10.3.2 IRC 237
10.3.3 其他社區 237
10.3.4 學習資源 237
10.4 小結 238
作為全面介紹Vim使用方法的教程,本書介紹了各種常用的文本編輯方法和程序設計中的實用操作,深入Vim內部的數據結構和VimScript腳本編程,內容詳實。本書基於Vim 8平臺,介紹了前沿分支Neovim,還推薦了更優選的Oni編輯器,兼容並包,集Vim社區典型使用經驗和發展趨勢於一體。本書面向的讀者群體是所有使用Vim的程序員,書中的示例文本為Python代碼,並詳細介紹了Git和正則表達式。讀者需要對操作繫統和程序設計有基本的了解,特別是需要了解Linux操作繫統的基本使用。雖然本書嘗試兼顧三大操作繫統,但毫無疑問書中內容以Linux為主。本書可以幫助讀者完善Vim技能,增加程序設計的知識儲備。