
Vim
《Vim Tutor》
《Viim 实用技巧》
Vim Tutor
打开 保存 退出
在命令模式下
| 命令 | 功能 |
|---|---|
| :e test.md | 打开 test.md文件, 如果不存在则创建。 |
| :w | 保存 |
| :w! | 强制保存 |
| :q | 退出 |
| :wq | 保存并退出 |
| :x | 同:wq |
| :q! | 强制退出 不保存并退出 |
| hjkl | ←↓↑→ |
删除和追加
| 命令 | 功能 |
|---|---|
| x | 删除光标处的一个字符 |
| a | 追加文本 |
| i | 插入文本 |
关于对象的小清单
| 命令 | 功能 |
|---|---|
| w | 到下一个单词头,除开所在的第一个字符。 |
| b | 到上一个单词头,包括所在单词的第一个字符。 |
| e | 到下一个单词尾,包括所在单词的最后一个字符。 |
| $ | 到行尾,包括了最后一个字符。 |
| 0 | 到行首,包含空格。 |
| ^ | 到行首,不含空格。 |
| G | 到文本最后一行首 |
| gg | 到文本首行。 |
恢复命令
| 命令 | 功能 |
|---|---|
| u | 恢复之前的动作 |
| U | 恢复对一行的所有改变 |
| CTRL+R | 反恢复 |
删除操作
| 命令 | 功能 |
|---|---|
| d | 删除 |
| dd | 删除一行 |
| d3w | 删除三个词 |
粘贴
| 命令 | 功能 |
|---|---|
| p | 以在光标处粘贴先前删除的文本 |
| r | 替换 |
| c | 修改,功能等于删除单词并定位到插入模式。c 和 d 一样属于操作码 |
文件状态、光标定位
| 命令 | 功能 |
|---|---|
| Ctrl+G | 查看文件状态及光标定位 |
| 100G | 跳转到100行 |
搜索
| 命令 | 功能 |
|---|---|
| /keyword | 搜索 |
| ?keyword | 反向搜索 |
| n | 搜索下一条 |
| N | 搜索上一条 |
| CTRL+o | 搜索下一条 |
| CTRL+i | 搜索上一条 |
| % | 括号匹配搜索,可匹配 (,),[,],{ or },跳转到对应的起点/终点 |
替换命令
| 命令 | 功能 |
|---|---|
| :s/old/new | 替换本行第一个的 |
| :s/old/new/g | 替换本行所有的 |
| :%s/old/new/g | 更改全文件中的所有 |
| :%s/old/new/gc | 更改全文件中的所有,并给出替换与否的提示 |
| :#,#s/old/new/g | #,#是要更改的行号的范围 |
外部命令
| 命令 | 功能 |
|---|---|
| :!command | :!command 执行外部 shell 命令。例如 :!ls |
| :w FILENAME | 将当前的vim 文件以FILENAME 文件名写进磁盘 |
| v 对象 :w FILENAME | 保存选定选择行到FILENAME 文件 |
| :r FILENAME | 恢复磁盘文件FILENAME到光标下 |
| :r !ls | 读取 ls 命令的输出并粘贴到光标下 |
| 命令 | 功能 |
|---|---|
| o | 在光标后插入一行,并进入插入模式 |
| O | 以在光标前插入一行 |
| a | 在光标后插入文本 |
| A | 在行尾插入文本 |
| y | 复制命令 |
| p | 粘贴命令 |
| R | 进入替换模式,直到按下 |
| :set xxx | 进入替换模式,直到按下 |
| ‘ic’ ‘ignorecase’ | 搜索时忽略大小写,例如 :set ic |
| ‘is’ ‘incsearch’ | 部分显示匹配的搜索短语 |
| ‘hls’ ‘hlsearch’ | 高亮所有匹配的短语 |
| :set noic | 前置”no”以关闭选项 |
| 命令 | 功能 |
|---|---|
| :help | 或以打开帮助窗口 |
| :help cmd | 找出关于cmd的帮助 |
| CTRL+w | 跳转到另一窗口 |
| :command, press CTRL+d | 以查看可能的补齐 |
Vim实用技巧
. 命令会重复上次的操作
| 命令 | 功能 |
|---|---|
| . | 重复上次操作,是一个微型宏 |
| >G | 全文缩进 |
| A | =$a |
| f+ s + ;. |
替换+前后增加空格 var foo = “method(“+argument1+”,”+argument2+”)”; -> var foo = “method(“ + argument1 + “,” + argument2 + “)”; |