9vMvsHFquH
命令模式(command mode)、插入模式(Insert mode)也叫做编辑模式、末行模式(last line mode)也叫底行模式。

在命令模式下按下的键都会当作命令去执行
| 命令 | 作用 |
|---|---|
| h/左键 | 光标左移一个字符 |
| j/下键 | 光标下移一个字符 |
| k/上键 | 光标上移一行 |
| l(小写L)/右键 | 光标下移一行 |
| 0(数字0) | 移动到光标所在行行首 |
| $ (Shift + 4) | 移动到光标所在行行尾 |
| gg | 移动到整个文件的首部(文件的第一个字符处) |
| Shift+g (G) | 移动到整个文件的尾部 (G可以是Shift+g,也可以是CapsLock开启大写键后直接按G键) |
| n Shift+g (n G) | 移动到第n行 (先按数字键指定n,然后按住Shift键不放,同时按g键) |
zt:移动屏幕使光标位于屏幕顶部
zz:移动屏幕使光标位于屏幕中央
zb:移动屏幕使光标位于屏幕底部
复制、粘贴、删除、剪切
删除的内容会放在剪切板上。其实,删除就是剪切,剪切就是删除,如果删除后不粘帖那就是删除,如果删除后进行粘贴操作,那就是剪切。
| 命令 | 作用 |
|---|---|
| x (小写x) | 删除光标后面的字符 |
| d+l(l小写L)/右键 | 删除光标后面的字符 |
| shift+x (大写X) | 删除光标前面的字符 (X可以是shift+x,也可以是CapsLk开启大写键后直接按X键) |
| d+h/左键 | 删除光标前面的字符 |
| d+方向键 (箭头或hjkl) | 删除相应方向的字符或行 (不建议用) |
| dw | 删除光标所在位置到光标所在单词的尾部 |
| d shift+4 (d+$) | 删除光标所在位置一直到行尾 (D可以是shift+d,也可以是CapsLk开启大写键后直接按D键) |
| shift+d (D) | 删除一整行 |
| ndd | 删除光标所在行开始的n行 |
删除是d加一个范围,以光标为基准,将范围内的字符剪切。或者是ndd 复制是y加一个范围,以光标为基准,将范围内字符复制。或者是nyy,Y依然是复制整行,与删除不同
复制粘贴,粘贴会新开辟一行然后把剪切板内容复制到新开辟的这一行(通过yy剪切的内容无法复制到其他windows系统上)
| 命令 | 作用 |
|---|---|
| yy | 复制光标所在的行到剪切板 |
| p | 将剪切板内容粘贴到光标所在位置的下一行 |
| P | 将剪切板内容粘贴到光标所在位置的上一行 |
查找命令
| 命令 | 用法及解释 |
|---|---|
| / | 命令模式下,直接输入 /string,回车,从文件顶部开始查找文件内所有string并高亮显示 |
| ? | 命令模式下,直接输入?string,回车,从文件底部开始查找文件内所有string并高亮显示 |
| # | 把光标移动到要查找的字符串string上,按#便可以查找所有string并高亮显示 |
| n | 向下遍历找到的字符串(依次选中下一个高亮显示的string) |
| N | 向上遍历找到的字符串(依次选中上一个高亮显示的string) |
替换命令
| 命令 | 作用 |
|---|---|
| r | 在输入一个字符c,就可以将光标后面的一个字符替换为c |
| shift+r (R) | 进入替换模式 |
| Esc | 退出替换模式 |
rc:将当前字符替换为c,只可替换单个字符
按R则进入替换模式,可连续的将光标所在字符替换为按下的字符
gu:进入切换小写模式,
gU:进入切换大写模式,按方向键触发,修改的时光标移动后所在的字符
g~:进入大小写互切换模式,按住方向键触发,光标不移动,修改当前光标所在字符
以上三个命令需按方向键触发,修改的是按下方向键后光标移动后所在的字符
按→,光标不移动,更改当前字符;按←,光标左移一字符,修改左边的字符,按↑↓键更改两行字符
xp:当前字符后移,就是先剪切再粘贴
. 重复执行上个命令
U:撤销上一次的改动行的操作
命令模式下按v就可以进入可视模式,可以通过选中来操作自己需要的任意个字符(相当于Windows下,你按住鼠标左键并拖动,这样一个选中功能)
| 命令 | 作用 |
|---|---|
| v | 命令模式下按v进入可视模式,通过移动光标来选中内容 |
| y | 复制 |
| d | 删除(剪切) |
| p | 在光标位置后面粘贴 |
| P (shift+p) | 在光标位置前面粘贴 |
选择文本
vi[ { < ( 选择括号内的内容,不包括括号va[ { < ( 包括括号内的内容() / b 选择()内的[] 选择 [] 内的{} / B 选择{}内的<> 选择<>内的" 双引号' 单引号it 选 HTML 标签内部内容 <div>foo</div> → foois 选择句子(不含前后空格)ip 选择段落(不含空行)iw 选当前单词(不含空格)iW 选当前字串(含符号,如 foo-bar)at 选 HTML 标签整体 <div>foo</div> → <div>foo</div>as 选当前句子(含前后空格)ap 选当前段落(含前后空行)aw 选当前单词(含前后空格)aW 选当前字串(含更多空格)di( → 删除 () 内部内容ci[ → 修改 [] 内部内容yit → 复制当前 HTML 标签内容可视化命令
代码格式化
| 命令 | 作用 |
|---|---|
| >> | 当前光标所在的行右移一个Tab |
| n>> | 当前光标所在的行开始往下数n行,全部右移一个Tab |
| << | 当前光标所在的行左移一个Tab |
| n<< | 当前光标所在的行开始往下数n行,全部左移一个Tab |
| gg=shift+g (gg=G) | 对整个文件的代码进行自动调整 |
>%:向右缩进(),{}内的区域,光标需位于括号上
<%:向左缩进(),{}内的区域,光标需位于括号上
>ib:向右缩进()内的区域
>at:向右缩进<>内的区域
3==:自动缩进3行
=%:自动缩进(),{}内的区域,光标需位于括号上
=iB:自动缩进{}内的区域,光标需位于括号上
gg=G:自动格式化整个文件
]p:粘贴并调整缩进至当前行
切换到插入模式
| 命令 | 作用(下面的插入是指进入插入模式后把光标放在哪) |
|---|---|
| i | 在光标前插入(如果是竖条光标表现为在光标当前位置插入,其实竖条光标对应的块状光标就是选中了竖条光标后面的一个字符) |
| I (shift+i) | 在行首插入 |
| a | 在光标后插入 |
| A (shift+a) | 在行尾插入 |
| s | 删除光标的元素,并进入插入模式 |
| S (shift+s) | 删除当前行的内容,并把光标放在行首进入插入模式 |
| o | 在光标所在行的下一行新开辟一行,并在行首插入 |
| O (shift+o) | 在光标所在行的上一行新开辟一行,并在行首插入 |
cc:删除当前行并进入编辑模式
C or c$:删除光标至行尾,然后进入编辑模式
末行模式 :(冒号) 进入末行模式,在末行模式下可以执行命令
其他操作命令(撤销反撤销、查看函数原型、保存退出)
撤销与反撤销
| 命令 | 作用 |
|---|---|
| u | 撤销上一个命令,撤销刚才的操作(相当于Windows下的ctrl+z),可以理解为一些集成开发环境的后退键 |
| ctrl + r | 取消刚才的撤销,反撤销,也就是取消刚才的u操作,可以理解为一些集成开发环境的前进键 |
进入man帮助手册
| 命令 | 作用 |
|---|---|
| K (shift+k) | 把光标移动到函数处,按K进入man帮助手册 |
| n K (n shift+k) | n是一个数字,表示进入man帮助手册的第n章 |
| q+Enter | 退出man帮助手册 |
保存并退出 ZZ (shift + z z) 保存并退出文件,直接在命令模式下敲击两个大Z即可保存并退出,相当于末行模式下的 :wq
只能在命令模式下按冒号:进入
保存与退出
| 命令 | 作用 |
|---|---|
| w | 保存 |
| q | 退出 |
| wq | 保存后退出 |
| x (小写) | 保存并退出 |
| q! | 强制退出(不保存) |
查找与替换
| 命令 | 作用 |
|---|---|
| s/src/des | 将光标所在行的第一个src替换为des |
| s/src/des/g | 将光标所在行的所有src替换为des |
| %s/src/des | 整个文件每一行的第一个sec都替换为des |
| %s/src/des/g | 整个文件每一行的所有sec都替换为des |
分屏显示
| 命令 | 作用 |
|---|---|
| sp filename | 横屏分屏显示filename文件,如果不加文件名,则分屏显示光标所在的文件(当前光标在哪一个文件就分屏再显示一个此文件) |
| vsp filename | 竖屏分屏显示filename文件,如果不加文件名,则分屏显示光标所在的文件(当前光标在哪一个文件就分屏再显示一个此文件) |
| q | 退出一个文件,不能加文件名,输一次q退出一个文件(关闭一个分屏),当前光标在哪个文件就退出那个文件 |
| w | 保存,保存当前光标所在分屏的文件(当前光标在那个文件就保存那个文件的修改) |
| qall | 退出所有文件,并回到shell |
| wqall | 保存并退出所有文件,回到shell |
| ctrl+w, w | 切换到下一个分屏(在分屏显示的各个文件之间切换) |
| : | 进入底行,输入命令 |
执行shell命令:!command, e.g. !ls,使用上下键可以查看历史命令
set -o vi,每次重新开机命令就失效set -o viset -o vi or bind -vset -o emacs or bind -e