一、为什么学习Vim?
Vim是从Vi发展而来的文本编辑器,被称作”编辑器之神”,是Linux/Unix系统标配。
1.1 Vim特点
1 2 3 4 5 6 7 8 9 10
| ┌─────────────────────────────────────────────────────────────────┐ │ Vim特点 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ⚡ 高效 → 不用鼠标,纯键盘操作 │ │ 🔥 强大 → 插件丰富,功能无限扩展 │ │ 🌍 通用 → 几乎所有Linux系统都预装 │ │ 💪 装逼 → 程序员必备技能 😂 │ │ │ └─────────────────────────────────────────────────────────────────┘
|
1.2 核心概念
| 概念 |
说明 |
| Normal模式 |
默认模式,用于导航和命令 |
| Insert模式 |
插入文本,类似普通编辑器 |
| Visual模式 |
可视化选择,用于选中区域 |
| Command模式 |
执行命令,按 : 进入 |
1.3 模式切换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ┌─────────────────────────────────────────────────────────────┐ │ │ │ :命令 ──────────┐ │ │ ↑ │ │ │ │ ↓ │ │ Normal ──→ Insert ←── Visual │ │ ↑ │ │ │ │ │ │ │ │ │ └──────────┘ ↓ │ │ │ │ Normal: i/a/o 进入Insert │ │ Insert: Esc 回到Normal │ │ Normal: v/V/Ctrl+v 进入Visual │ │ Normal: : 进入Command │ │ │ └─────────────────────────────────────────────────────────────┘
|
二、基础操作
2.1 进入和退出
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vim filename vim newfile.txt
:q :q! :w :wq :x ZZ
:wq filename
|
2.2 移动光标
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
| h j k l
w e b
0 $ ^ g_
gg G Ctrl+u Ctrl+d Ctrl+b Ctrl+f H M L
:100 100G
|
2.3 编辑操作
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
| i a I A o O s S
x X dd dw d$ d0 dG dgg
cc cw
yy yw y$ p P dd
|
2.4 撤销和重做
三、高级编辑
3.1 可视模式
1 2 3 4 5 6 7 8 9 10 11 12
| v V Ctrl+v
y d c ~ U u
|
3.2 文本对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
diw daw di( / di) di{ / di} di[ / di] di" / di' # 删除引号内内容 dit # 删除标签内内容
# 整个 yaw # 复制单词(含空格) yap # 复制段落 ci( # 修改括号内内容
|
3.3 查找替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| /word ?word n N *
:s/old/new/ :s/old/new/g :%s/old/new/g :1,10s/old/new/g :.,+5s/old/new/g :%s/old/new/gc
|
3.4 重复命令
1 2 3 4 5 6 7 8 9 10 11 12
| .
3dd 5x 3w 5j
d3w c2j
|
四、多文件操作
4.1 缓冲区
1 2 3 4 5 6 7 8 9 10 11 12
| vim file1.txt file2.txt vim *.txt
:ls :bnext :bprev :bfirst :blast :buffer 2 :bdelete
|
4.2 窗口分屏
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| :sp filename :vsp filename Ctrl+w s Ctrl+w v
Ctrl+w h/j/k/l Ctrl+w w Ctrl+w t Ctrl+w b
Ctrl+w = Ctrl+w _ Ctrl+w | :resize 20 :vertical resize 40
|
4.3 标签页
1 2 3 4 5 6 7 8 9 10 11
| :tabnew filename :tabe filename gt gT :tabfirst :tablast :tabm 0 :tabm :tabclose :tabdo command
|
五、快捷键汇总
5.1 移动类
| 快捷键 |
说明 |
h/j/k/l |
左/下/上/右 |
w/e/b |
词前进/词尾/词尾 |
0/$ |
行首/行尾 |
gg/G |
文件开头/结尾 |
H/M/L |
屏幕顶/中/底 |
5.2 编辑类
| 快捷键 |
说明 |
i/a |
光标前/后插入 |
o/O |
下/上行插入 |
x/dd/dw |
删除字符/行/词 |
yy/p |
复制/粘贴 |
u/Ctrl+r |
撤销/重做 |
5.3 查找类
| 快捷键 |
说明 |
/ |
查找 |
n/N |
下/上一个 |
* |
查找当前词 |
5.4 其他
| 快捷键 |
说明 |
v/V/Ctrl+v |
可视模式 |
: |
命令模式 |
. |
重复命令 |
六、Vim配置
6.1 创建配置文件
6.2 常用配置
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 56 57 58 59 60 61
| " ~/.vimrc
" ====== 通用设置 ====== " 开启语法高亮 syntax on
" 显示行号 set number
" 相对行号(便于跳转) set relativenumber
" 括号匹配高亮 set showmatch
" 搜索高亮 set hlsearch
" 增量搜索 set incsearch
" 忽略大小写搜索(智能忽略) set ignorecase set smartcase
" 自动缩进 set autoindent set smartindent
" Tab宽度 set tabstop=4 set shiftwidth=4 set expandtab
" 允许退格键删除 set backspace=2
" 开启鼠标支持 set mouse=a
" 命令行补全 set wildmenu
" 显示状态栏 set laststatus=2
" 底部显示当前模式 set showmode
" 滚动距离 set scrolloff=5
" ====== 外观 ====== " 配色方案 colorscheme molokai
" 高亮当前行 set cursorline
" 高亮当前列 set cursorcolumn
|
七、实用技巧
7.1 快速注释
1 2 3 4 5 6 7 8 9 10 11
| Ctrl+v 进入块可视 选择多行 I 进入行首插入 输入注释符(如 Esc 退出
Ctrl+v 进入块可视 选择注释符 d 删除
|
7.2 宏录制
1 2 3 4 5 6 7 8 9
| qa ... q
@a @@ 10@a
|
7.3 快速跳转
1 2 3 4 5 6 7 8
| ma 'a # 跳转到标记a :marks # 查看所有标记
# 跳转列表 Ctrl+o # 后退 Ctrl+i # 前进
|
7.4 代码折叠
1 2 3 4 5 6 7 8 9 10 11 12 13
| zf zF
zo zc zR zM
set foldmethod=indent set foldmethod=syntax
|
八、插件推荐
8.1 插件管理器
1 2 3
| curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
8.2 常用插件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes'
Plug 'scrooloose/syntastic'
Plug 'jiangmiao/auto-pairs'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'morhetz/gruvbox'
call plug#end()
|
8.3 安装插件
九、替代方案
| 工具 |
特点 |
| Neovim |
现代Vim分支,更好的扩展性 |
| VSCode Vim插件 |
VSCode中体验Vim |
| Neovim VSCode |
VSCode中使用Neovim |
| Kakoune |
类似Vim的操作方式 |
十、学习资源
1 2 3 4 5 6 7 8 9 10 11 12 13
| ┌─────────────────────────────────────────────────────────────────┐ │ Vim学习路线 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 入门: 移动 → 编辑 → 保存退出 │ │ │ │ 进阶: 查找替换 → 可视模式 → 宏 │ │ │ │ 高级: 分屏 → 插件 → 配置 → Neovim │ │ │ │ 练习: vimtutor → 每天练习 → 形成肌肉记忆 │ │ │ └─────────────────────────────────────────────────────────────────┘
|
参考资料
持续更新中…欢迎收藏!
#Vim #编辑器 #效率 #Linux #教程