Vim模式
模式切换
普通模式 -> 插入模式
- i – 在光标前进入插入模式
- I – 在行首进入插入模式
- a – 在光标后进入插入模式
- A – 在行尾进入插入模式
- o – 在当前行下方新建一行并进入插入模式
- O – 在当前行上方新建一行并进入插入模式
- c – 删除选中字符并插入
- cc – 删除当前行并插入
- C – 删除到行尾并插入
- s – 删除当前/选中字符并插入,删除当前字符并进入插入模式时等价于cl
- S – 等价于cc
普通模式 -> 可视模式
- v – 进入字符可视模式
- V – 进入行可视模式
- Ctrl+v – 进入块可视模式
普通模式 -> 命令行模式
- : – 进入命令行模式
- 执行外部命令(原生)
- :!<cmd> – 执行shell命令
- :r !<cmd> – 插入命令输出
- :r <file> – 插入文件内容
- 选项设置(原生)
- :set all – 查看所有选项
- :set <option> – 开启选项
- :set no<option> – 关闭选项
- :set <option>? – 查看选项值
- :set <option>=<value> – 设置选项值
其余模式 -> 普通模式
- ESC- 返回普通模式
移动操作
基本移动
- j – 下移
- J – 将两行文本连接成一行
- k – 上移
- l – 右移
- h – 左移
- w – 移动到下一个词开头
- W – 移动到下一词开头(以空格划分词)
- e – 移动到下一个词末尾
- E – 移动到下一个词末尾(以空格划分词)
- b – 移动到上一个词开头
- B – 移动到上一个词开头(以空格划分词)
行内移动
- 0 – 移动到行首
- $ – 移动到行尾
- ^ – 移动到行首第一个非空白字符
- % – 移动到配对的字符处
- f<char> – 移动到当前行下一个<char>字符
- F<char> – 移动到当前行上一个<char>字符
- t<char> – 移动到当前行下一个<char>字符前
- T<char> – 移动到当前行上一个<char>字符后
- ; – 重复上次f/F/t/T命令
- , – 反向重复上次f/F/t/T命令
- 折行内移动
- gj – 移动折行视觉上的下一行
- gk – 移动到折行视觉上的上一行
- g0 – 移动到折行视觉上的开头
- g$ – 移动到折行视觉上的末尾
- g^ – 移动到折行视觉上的第一个非空字符
跨行移动
- gg – 移动到文件开头
- g, – 移动到最近一次编辑位置(原生)
- G – 移动到文件末尾
- <num>G – 移动到指定行号,是:<num>的快捷键
- H – 移动到屏幕顶部
- M – 移动到屏幕中间
- L – 移动到屏幕底部
- } – 移动到下一个段落
- { – 移动到上一个段落
- ]] – 移动到下一个函数/代码块
- [[ – 移动到上一个函数/代码块
视图调整
- Ctrl+y – 向上一行
- Ctrl+e – 向下一行
- Ctrl+f – 向下翻页
- Ctrl+b – 向上翻页
- Ctrl+u – 向上半页
- Ctrl+d – 向下半页
- zz – 聚焦光标
标记定位
- m<letter> – 设置标记
- '<letter> – 跳转到标记行首
- :marks – 查看当前文件所有标记
- :delmarks <letter> – 删除对应标记
编辑操作
文本缩进
- >> – 普通模式下向右缩进当前行
- > – 可视模式下向右缩进当前行
- << – 普通模式下向左缩进当前行
- < – 可视模式下向左缩进当前行
文本折叠(原生)
- zf – 对选中行创建折叠
- zd – 删除选中行的折叠
- zo – 打开折叠
- zc – 关闭折叠
- zj – 移动到下一个折叠
- zk – 移动到上一个折叠
- :mkview – 保存折叠
- :loadview – 加载折叠
文本剪切
- x – 剪切当前字符,等价于dl
- X – 剪切前一个字符
- d – 剪切选定内容
- dd – 普通模式下剪切当前行
- D – 剪切到当前行结尾
复制粘贴
- y – 复制选中内容
- yy – 普通模式下复制整行
- Y – 等价于yy(历史原因不是复制到行尾)
- p – 在光标后粘贴
- P – 在光标前粘贴
- "<reg>y – 复制到指定寄存器
- "<reg>p – 从指定寄存器粘贴
重复、撤销&重做
- . – 重复上次编辑操作
- u – 撤销
- Ctrl+r – 重做
查找替换
- /<pattern> – 向下查找<pattern>
- ?<pattern> – 向上查找<pattern>
- n – 重复上次查找
- N – 反向重复上次查找
- u/U – 切换选中的文本为小写/大写
- ~ – 切换当前字符大小写
- 替换命令,其中分隔符可以是/、.或|
- :s|old|new – 替换当前行第一个匹配
- :s|old|new|g – 替换当前行所有匹配
- :'<,'>s|old|new|g – 替换当前选中行所有匹配
- :'<,'>s|old|new|gc – 交互式替换当前选中行匹配
- :%s|old|new|g – 替换整个文件所有匹配
- :%s|old|new|gc – 交互式替换整个文件匹配
批量操作
组合命令
- 3j – 向下移动3行
- 5dd – 删除5行
- 10x – 删除10个字符
- 2p – 粘贴2次
- daw – 删除一个单词(包括周围空格)
- d2w – 删除两个单词
- di( – 删除括号内内容
- ci" – 修改引号内内容
- yit – 复制HTML标签内容
宏&寄存器
- q<reg> – 开始录制到寄存器
- q – 停止录制
- @<reg> – 执行寄存器中的宏
- @@ – 重复上次执行的宏
- "<reg> – 指定寄存器
- :reg – 查看寄存器内容
- :reg <reg> – 查看特定寄存器内容
文件操作
信息统计
- Ctrl+g – 显示光标位置状态(原生)
保存退出
- :w – 保存文件
- :w <file> – 另存为
- 😡 – 保存并退出,是:wq的快捷键
- :q – 退出
- :q! – 强制退出不保存
文件跳转
- :e – 创建缓存文件(原生)
- tab – 提示与补全当前目录下的文件(夹),左右选择当前目录下的文件,上下选择上/下一级目录
- :ls – 查看缓存文件
- :b+<编号> – 切换缓存文件
- :bp/bn – 上下切换缓存文件
- :bd – 删除当前缓存文件
- :<编号>+bd – 删除对应编号缓存文件
- Ctrl+o – 跳转到上一个文件中
- Ctrl+i – 跳转到下一个文件中
- gd – 跳转到局部定义
- gD – 跳转到全局定义
- Ctrl+z – 挂起vim,返回终端中(通过在终端中用fg命令返回)
- 当有多个任务被挂起,通过jobs在终端查看任务编号n
- 通过fg %n返回
窗口分割(原生)
- :vs – 垂直分割窗口
- :sp – 水平分割窗口
- Ctrl+w h/j/k/l – 在窗口间移动
- Ctrl+w w – 切换到下一个窗口
- Ctrl+w c – 关闭当前窗口
- Ctrl+w o – 关闭其他窗口
- Ctrl+w r – 交换窗口位置
- 窗口宽度/高度调整
- Ctrl+w > – 增加窗口宽度
- Ctrl+w < – 减少窗口宽度
- Ctrl+w + – 增加窗口高度
- Ctrl+w – – 减少窗口高度
- 窗口宽度/高度最大化/回归默认
- Ctrl+w | – 最大化当前窗口宽度
- Ctrl+w _ – 最大化当前窗口高度
- Ctrl+w = – 均衡窗口大小
标签页管理(原生)
- :tabe <file> – 新建标签页
- :tabc – 关闭当前标签页
- :tabo – 关闭其他标签页
- gt – 下一个标签页
- gT – 上一个标签页
- ngt – 切换到第n个标签页
- :a – 全选所有标签页
Vim配置
打开文件时,所有配置都会在默认配置的基础上执行。而在配置文件中用:so的时候,则是在当前配置的基础上执行。
基本配置
" 设置行号
set number
" 设置<leader>
nnoremap <Space> <Nop>
let mapleader = " "
" 在视觉行移动
nnoremap j gj
nnoremap k gk
nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^
" 让复制粘贴使用系统剪切板
vnoremap y "+y
vnoremap x "+x
nnoremap p "+p
nnoremap <leader>p ""p
" 全选
nnoremap <C-a> ggVG
" 保存
nnoremap <C-s> :w<CR>
" 窗口间移动
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" 取消高亮
nnoremap <silent><Esc> :nohl<CR>
" 消除^M
nnoremap <C-m> :%s.\\r..g<CR>
评论前必须登录!
注册