vi & vim
这俩都是文本编辑器。vi是Linux默认的编辑器,类似于windows的记事本。vim是vi的拓展,比vi更强大。可以用于在Linux中编辑文件内容。笔记中使用vim。它有两种模式,命令模式和编辑模式,在命令模式中可以做一些检索、筛选等操作。在编辑模式中可以对文档进行修改。
进入 & 退出
进入命令模式
方法:vim <文件名>。此时进入命令模式,不能对文件内容进行操作。对文档的检索是在这种模式下进行的。
进入编辑模式:
i:编辑位置在当前光标位置之前
按下i再按_


I:在光标所在行的行首插入新增文本
按下I再按_


a:在该命令之后输入的字符都插到光标之后
按下a再按_


A:在光标所在行的行尾添加文本
按下A再按_


o:在光标所在行的下面新开辟一行,随后输入的文本就插入在这一行
按下o再按_


O:在光标所在行的上面新开辟一行,随后输入的文本就插入在这一行上
按下O再按_


r:替换光标所在的哪一个字符
按下r再按_


R:一直替换光标所在的文字,直到按下ESC为止
按下R再按三次_再按Esc


退出编辑模式
在编辑模式下按 Esc 键。
退出命令模式
需要使用转义字符:
:q:若未修改文件,此命令可以退出编辑器。:wq:把编辑缓冲区的内容写入文件中,退出编辑器,回到Shell下。:ZZ或:x:仅当作过修改时才将缓冲区内容写到文件上。:q!: 强行退出vi。告诉vi,无条件退出,丢弃缓冲区内容。
vim流程图

命令模式下的光标跳转
- 方向键和Backspace键的使用和正常情况下相同。
- 移动到上一行,列不变:
k - 移动到上一行行头:
- - 移动到下一行,列不变:
j - 移动到下一行行头:
+ - 如果在相应命令的前面加上一个数字
n,相应命令执行n次。如2k表示向上移动两行,列不变。 - 移至行首:
^或0 - 移至行尾:
$ - 移至指定行:行号
G。如2G,移动到第二行行首。 - 移至指定列:列号
|。如2|,移动到本行第2列。
文本删除
- 命令
x(小写字母)删除光标所在的字符。 - 命令
X(大写字母)删除光标前面的那个字符 - 命令
dd删除光标所在的整行 - 命令
D从光标位置开始删除到行尾 d<光标移动命令>删除从光标位置开始至光标移动命令之间的所有字符。如:d0:从光标位置(不包括光标位)删至行首。d3l:从光标位置(包括光标位)向右删3个字符。d$:从光标位置(包括光标位)删至行尾。与D相同。d5G:将光标所在行至第5行都删除。
复原命令
u:取消前面刚执行的插入或删除命令的效果,恢复到此前的情况。U:总是把当前行恢复成它被编辑之前的状态。
重复命令
.:在命令模式下,重复执行前一次插入命令或删除命令
补充文本编辑
命令方式下
d0:删至行首d$:删至行尾ndd:删除当前行及其后的n-1行yy:复制当前行的文本10yy:复制包括当前行及其后面9行文本p:在当前行后面插入一个空行,把缓冲区的内容粘贴过来P:在当前行前面插入一个空行,把缓冲区的内容粘贴过来
ex转移方式下
:n1,n2 d:将n1行到n2行的内容删除:n1,n2 co n3:将n1行到n2行的内容复制到n3行下:n1,n2 m n3:将n1行到n2行的内容移到n3行下
字符串检索
- 向下检索:/模式〈Enter〉。例如:/int
- 向上检索:?模式〈Enter〉。例如:?flout
字符串替换
:n1,n2s/word1/word2/g:n1和n2为数字。在n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2。例如:100,200s/a/A在100行到200行之间搜索a并替换成A。:1,$s/word1/word2/gc:全局搜索word1,替换成word2。g改成gc表示要用户确认。:%s/$/s2/g:在整个行的末尾添加s2。- 全局替换命令g:
:g/模式/命令表。 :g/s1/p:打印文本中有s1的行。p命令表示打印。
块选择
ctrl+v,然后使用方向键选择块。
y:复制反白的地方d:将反白的地方删除掉p:插入复制的内容
参考:https://jingyan.baidu.com/article/84b4f565c6b9e560f6da3291.html。
