VIM操作摘记
deran pan, vim-001
1. VIM的多标签操作:
| 命令 | 说明 |
|---|
| :tabnew file | 对新文件建立一个tab |
| :tabc | 关闭当前的tab |
| :tabo | 关闭其他的所有的tab |
| :tabs | 查看所有打开的tab |
| :tabp | 前一个 |
| :tabn | 后一个 |
| :tabfirst | 移动到第一个标签页 |
| :tablast | 移动到最后一个标签页 |
标准模式下gt,gT也可以直接在tab之间切换。
:help table 可以看到所有的帮助
2. VIM中vimgrep查找命令
用法:
vimgrep /{partten}/g {file} …
| 参数 | 说明 |
|---|
| 参数g | 匹配每一行每一个匹配点,否则只匹配第一个匹配点 |
| 参数j | 查找结果只更新到结果列表(quickfix),否则跳转至第一个匹配点 |
example:
在当前目录下所有文件中查找字符串“main”
:vimgrep /main/ .
在当前目录及其子目录下所有文件中查找字符串“main”
:vimgrep /main/ */.*
附:查找的结果可以用:copen查看
| 命令 | 说明 |
|---|
| :copen | 打开quickfix |
| :cclose | 关闭quickfix |
| :cc | 跳转到当前查找位置 |
| :cn | 转到下一个位置 |
| :cp | 转到上一个位置 |
3. 代码折叠
设置折叠
:set fdm = <option>
option有以下6种选项
| 选项 | 说明 |
|---|
| manual | 手工定义折叠 |
| indent | 更多的缩进表示更高级别的折叠 |
| expr | 用表达式来定义折叠 |
| syntax | 用语言高亮来定义折叠 |
| diff | 对没有更改的文本进行折叠 |
| marker | 对文中的标志折叠 |
折叠命令:
| 命令 | 说明 |
|---|
| zc | 折叠 |
| zC | 对所在范围内所有嵌套的折叠点进行折叠 |
| zo | 展开折叠 |
| zO | 对所在范围内的所有折叠进行展开 |
| [z | 到当前打开的折叠的开始处 |
| ]z | 当当前打开的折叠的结束处 |
| zj | 到下一个折叠的开始处 |
| zk | 到上一个折叠的开始处 |
使用marker方式折叠的还有以下命令:
| 命令 | 说明 |
|---|
| zf | 创建折叠 |
| zd | 删除折叠 |
| zD | 删除所有嵌套折叠 |
| zE | 除去窗口所有折叠 |
4. 光标移动
| 命令 | 说明 |
|---|
| h | 左 |
| j | 下 |
| k | 上 |
| l | 右 |
| ^ | 移动到行首 |
| & | 移动到行尾 |
| ctrl + b | Page Up |
| ctrl + f | Page Down |
| G | 移动到末行 |
| gg | 移动到首行 |
| 50G | 移动到50行 |
| H | 移动到当前窗口首行 |
| M | 移动到当前窗口中间位置 |
| L | 移动到当前窗口的最后一行 |
| w | 移动到下一个单词首 |
| e | 移动到下一个单词尾 |
| b | 移动到前一个单词首 |
| ( | 移动到下一个句子 |
| ) | 移动到上一个句子 |
| { | 移动到上一个段落 |
| } | 移动到下一个段落 |
| ctrl + o | 返回上一次光标位置 |
| ctrl + i | 返回下一次光标位置 |
| ctrl+f | 向前翻一页 |
| ctrl+b | 向后翻一页 |
| ctrl+u | 向前翻半页 |
| ctrl+d | 向后翻半页 |
| ctrl+y | 向前一行 |
| ctrl+e | 向后一行 |
| zt | 将光标定位当屏幕顶部 |
| zz | 将光标定位到屏幕中间 |
| zb | 将光标定位到屏幕底部 |
5. Mark标记
在某一行上进行标记之后,则可以在任意处跳转至标记处。相关命令如下:
| 命令 | 说明 |
|---|
| m+(a~z,A~Z) | 添加标记 |
| ‘ | 跳转至 |
| :marks | 查看所有标记 |
| :delmarks | 删除相应标记 |
6. Vim选中
| 命令 | 说明 |
|---|
| viw/vaw(a word) | 选中一个单词 |
| wip/vap(a paragraph) | 选中一个段落 |
| vis | 选中一个句子 |
| vib | 选中一个block |
| ctrl + v | 区域选中 |
7. VIM删除操作
| Vim命令 | 说明 |
|---|
| dl | 删除当前字符,功能等同于x |
| d0 | 删除光标位置至行首 |
| d^ | 删除光标位置至行首(不包括空格和TAB) |
| dw/d3w | 删除光标位置至光标所在单词的尾部 |
| db | 删除光标位置至光标所在单词的开始部分 |
| dW | 删除光标位置至光标所在单词的尾部(以空格作为单词分隔) |
| dB | 删除光标位置至光标所在单词的开始部分(以空格作为单词分隔) |
| d) | 删除光标所在位置至光标所在语句的结束部分 |
| d( | 删除光标所在位置至光标所在语句的开始部分 |
| dd | 删除当前行 |
| d/text | 删除光标所在位置至下一次出现text文本之间的内容 |
| dfc | 删除光标所在位置至当前行向后出现字符c之间的内容,包含字符c |
| dtc | 删除光标所在位置至当前行向后出现字符c之间的内容,不包含字符c |
| D/d$ | 删除光标所在位置至当前行行尾 |
8. VIM多窗口操作
1. 窗口间游走
| Vim命令 | 说明 |
|---|
| ctrl + w + h | 向左移动窗口 |
| ctrl + w + j | 向下移动窗口 |
| ctrl + w + k | 向上移动窗口 |
| ctrl + w + l | 向右移动窗口 |
| ctrl + w + w | 在所有窗口中循环移动 |
| ctrl + w + t | 移动到最左上角的窗口 |
| ctrl + w + b | 移动到最右下角的窗口 |
| ctrl + w + p | 移动到前一个访问的窗口 |
2. 移动窗口
| Vim命令 | 说明 |
|---|
| ctrl + w + r | 向右或向下交换窗口(当前窗口不变) |
| ctrl + w + x | 向右或向下交换窗口(当前窗口为交换后的窗口) |
| ctrl + w + K | 将当前窗口移动到最上方,并占用全部宽度 |
| ctrl + w + J | 将当前窗口移动到最下方,并占用全部宽度 |
| ctrl + w + H | 将当前窗口移动到最左方,并占用全部高度 |
| ctrl + w + L | 将当前窗口移动到最右方,并占用全部高度 |
| ctrl + w + T | 以当前窗口新建一个Tab,并占用全部位置 |
3. 调整窗口尺寸
| Vim命令 | 说明 |
|---|
| ctrl + w + = | 让所有窗口调整至相同尺寸 |
| ctrl + w + - | 让当前窗口的高度减少一个单位 |
| ctrl + w + + | 让当前窗口的高度增加一个单位 |
| ctrl + w + < | 让当前窗口的宽度减少一个单位 |
| ctrl + w + > | 让当前窗口的宽度增加一个单位 |
| ctrl + w + | | 将当前窗口的宽度调整至最大 |
4. 窗口关闭
| Vim命令 | 说明 |
|---|
| ctrl + w + q | 离开当前窗口 |
| ctrl + w + c | 关闭当前窗口 |
| ctrl + w + o | 关闭当前窗口以外的所有窗口 |
http://www.cnblogs.com/suncoolcat/archive/2013/09/09/3310668.html