1 vim 基本动能
区块选择

多档案编辑

多窗口编辑

vim环境设置

1 | $ cat ./viminfo # 记录vim动作的档案 |

vim常用指令示意图

中文编码的问题

2 指令和快捷键列表
文件操作
| 文件操作 | 说明 |
|---|---|
| w | 保存 |
| wq | 保存退出 |
| q! | 不保存退出 |
删除命令
| 删除命令(在命令模式下输入) | 说明 |
|---|---|
| dw | 按回车,就删除了光标所在位置字符 |
| d | 就是删除所在行的所有字符(这个对于我们写程序的比较有用) |
| dd | 删除行 |
| u | 撤销操作 www.2cto.com |
搜索命令
| 搜索命令 | 说明 |
|---|---|
| /string | string这里就是你要搜索的字符串。 |
| n | 跳到当前所在搜索目标的下一个目标处。 |
| shift+n | 往回搜索。 |
括号匹配命令
| 括号匹配命令 | 说明 |
|---|---|
| % | 将光标放在单括号下面,输入%就会光标自动跳到匹配的括号下,这个对写程序很有用。 |
复制和选择
| 复制和选择 | 说明 |
|---|---|
| ggyG | 全部复制 |
| dG | 删除光标以后的内容(光标移动到最前面就可以删除所有内容了) |
| p | 在光标出粘帖缓存区内容 |
| yy | 复制当前行 |
| nyy | 复制光标所在向下n行内容 |
光标移动命令
| 光标移动命令 | 说明 |
|---|---|
| 0 | 移动到光标所在行最前面 |
| $ | 移动到光标所在行最后面 |
| H | 移动当前屏幕第一行第一列 |
| M | 移动当前屏幕中间行第一列 |
| L | 移动当前屏幕最后行第一列 |
| nG | 移动到第n行 |
| n- | 向上移动n行 |
| n+ | 向下移动n行 |
| G | 移动到最后一行行首 |
在vim 中执行 shell 命令
:[起始行号, [结束行号]] [r|w] !命令
单纯的执行命令
:!命令: 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
1 | :!ls -l |
将结果插入当前行下一行
:r !命令
将shell命令command的结果插入到当前行的下一行
1 | :r !date # 读取系统时间并插入到当前行的下一行 |
将结果插入指定行
:起始行号,结束行号 !命令
将起始行号和结束行号指定的范围中的内容输入到shell命令处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
- 可以只指定起始行
- 当前光标所在行,除可以指定行号外,也可以用.表示
1 | # 将62行到72行的内容进行排序 |
将指定行内容作为命令的输入
:起始行号,结束行号 w !命令
将起始行号和结束行号所指定的范围的内容作为命令的输入。不会改变当前编辑的文件的内容
1 | # 将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域 |
将指定行内容作为命令本身执行
其实仍然是“将制定行内容作为命令的输入”,只不过命令采用的是 bash、zsh等,因此输入内容就被当作了命令来执行
1 | # 把第62行的内容作为bash命令来执行并显示结果,而且不会改变当前编辑的文件的内容 |