Vim 入门指南
vim,linux
Photo by Rostyslav Savchyn / Unsplash
光标移动
| 操作 |
描述 |
| h,j,k,l |
依次是左,上,右,下 |
| w |
向后移动动到单词开头 |
| e |
向后移动到单词末尾 |
| b |
从当前光标位置移动到上一个单词开头 |
| ge |
从当前光标位置移动到上一个单词末尾 |
| 数字 + w/e/b |
向前/后移动指定数字的单词 |
| 0 |
移动到行首 |
| $ |
移动到行尾 |
| gg |
移动到文件开头 |
| G |
移动到文件结尾 |
| 数字 + G |
移动到指定数字行 |
| Ctrl+b |
屏幕往“后”移动一页。(b:backwards) |
| Ctrl+f |
屏幕往“前”移动一页。(f:forwards) |
| Ctrl+u |
屏幕往“后”移动半页。(u:up) |
| Ctrl+d |
屏幕往“前”移动半页。(d:down) |
文本编辑
| 操作 |
描述 |
| . |
可重复前一次操作 |
| i |
在光标所在位置之前插入字符 |
| I |
在光标所在行的开头插入字符 |
| a |
在光标所在位置之后插入字符 |
| A |
在光标所在行末尾插入字符 |
| o |
在光标所在行下一行插入字符 |
| O |
在光标所在行上一行插入字符 |
删除(剪切),复制,粘贴与恢复
| 操作 |
描述 |
| x |
删除光标所在位置的字符 |
| X |
删除光标左侧位置字符 |
| dw |
删除至下一个单词起始处,不包括下一个单词的第一个字符 |
| de |
删除至当前单词末尾,包括最后一个字符 |
| d0 |
删除至当前行开头 |
| d$,D |
删除至当前行末尾 |
| dd |
删除当前行 |
| 数字+ dd |
删除指定数字的行数 |
| u |
撤销最后执行的命令 |
| U |
撤销对整行的修改 |
| CTRL-R |
撤销以前的撤销命令,恢复之前的操作结果 |
| v |
进入字符可视化模式 |
| V |
进入行可视化模式 |
| Ctrl+v |
进入块可视化模式 (I/A 进入插入模式,可以进行多光标操作,esc退出后生效) |
| yy |
复制当前行 |
| 数字 + yy |
复制指定行数 |
| p |
粘贴 |
替换与更改
| 操作 |
描述 |
| r[CHAR] |
输入 r 和一个字符替换光标所在位置的字符 |
| R |
连续替换多个字符,与插入模式类似,不过每个输入的字符会替代光标当前字符,与键盘使用了 insert 键进入改写模式的情况类似 |
| cw |
更改文本直到该单词末尾 |
| ce |
更改文本直到下一单词开始 |
| c$ |
更改文本直到行末 |
| c [数字] motion |
基本格式 |
搜索与修改
| 操作 |
描述 |
| /[STRING] |
正向查找string表示的字符串 |
| ?[STRING] |
逆向查找string表示的字符串 |
| CTRL-O \ N |
回到前一个位置 |
| CTRL-I \ n |
到下一个位置 |
| :s/old/new |
在光标所在行第一次出现的 old 表示的字符串替换为新的字符串 new |
| :s/old/new/g |
在光标所在行替换所有出现的 old 所表示的字符串替换为新的字符串 new |
| :#,#s/old/new/g |
在两行内替换所有的字符串 old 为新的字符串 new |
| :%s/old/new/g |
在文件内替换所有的字符串 old 为新的字符串 new |
| :%s/old/new/gc |
进行全文替换时询问用户确认每个替换 |
其他
| 操作 |
描述 |
| F[CHAR] |
光标移动到上一个 char 所指字母所在位置 |
| f[CHAR] |
光标移动到下一个 char 所指字母所在位置 |
| F * |
光标移动到当前光标所指单词相同的下一个位置 |
| F # |
光标移动到当前光标所指单词相同的上一个位置 |
| CTRL-g/G |
显示当前编辑文件中当前光标所在行位置以及文件状态信息 |
| % |
可查找匹配对的括号) \ ] \ } |
| :![COMMAND] |
执行command所代表的外部命令 |
| :r FILENAME |
提取磁盘文件 FILENAME 并将其插入到当前文件光标当前位置后 |
| :r !command |
读取command命令的输出插入到当前文件光标当前位置后 |
| :help <回车> / 键 |
帮助 |
| :split / :vsplit |
分屏 |
| CTRL-W |
窗口切换 |
| :reg |
查看剪切板 |
| "np |
粘贴剪切板内容(n表示剪切板的序号,【0-12】)eg: "5p |
| :set invlist |
显示不可见字符 |
vim tutor