任务:
- 熟练使用编辑,定位,选择,查找,替换等常用命令
vi具有两种模式,命令模式接收命令、编辑模式接收字符
vi打开时处于命令模式,按i进入编辑模式,按Esc进入命令模式
h ,j,k,l可以进行光标移动操作,对应左、下、上、右
w移动到下一个单词的第一个字符处,W以空白字符作为单词的分割
b移动上一个单词的第一个字符处,B以空白字符作为单词的分割
()按照句子移动,{}按照段落移动
0移动到行的开始,$移动到行的结束,^移动到行中第一个非空白字符处
G移动到文件的末尾,1G移动到文件的开始
删除d
x删除一个字符,dw删除当前字符之后的一个单词,dd删除当前一整行
删除命令可与其他一些命令结合,例如:
d$从当前位置开始删除,直至行尾
dt;从当前位置开始删除,直到出现;
d2}从当前位置开始删除,删除2个段落
d4b从当前位置开始删除,反向删除4个单词
d/pattern从当前位置开始删除,直到pattern出现处的第一个字符
y复制,p粘贴
v字符选择,光标经过的字符反白选择
V行选择,光标经过的行反白选择
Ctrl+v块选择,以长方形的形式反白选择
选择模式下,可以使用鼠标划取选择
u撤销,Ctrl+R回退
在输入命令之前输入数字,表示重复执行多次,例如7dd删除7行,5x删除五个字符
.指代上一次的命令,则删除7行,也可以按一次dd,再按6次.
/+字样,从当前位置向后搜索字样第一次出现处,如遇文件末尾则从文件开始搜索,直至搜索到当前位置
?+字样,从当前位置向前搜索字样第一次出现处,如遇文件开始则从文件末尾搜索,直至搜索到当前位置
//或/搜索上一次/搜索字样,??或?搜索上一次?搜索字样
//和??与/和?的区别在于,//和??为尝试查找,若中断命令则回到原先位置
搜索到第一次出现处后,n跳转到下一次出现处,N跳转到上一次出现处
查找模式中\c表示大小不敏感,\C 表示大小写敏感, eg,/foo\c
g*查找当前单词,*完全匹配查找当前单词(长度、大小写相同)
替换命令 :{作用范围}s/{目标}/{替换}/{替换标志}
:s/from/to ,将当前行中的第一个from,替换成to
:s/from/to/g,将当前行中的所有from都替换成to
:s/from/to/gc,将当前行中的所有from都替换成to,每次替换前向用户确认操作
:.s/from/to/g,在当前行进行替换操作
:33s/from/to/g,在第33行进行替换操作
:$s/from/to/g,在最后一行进行替换操作
:10,20s/from/to/g,对第10行到第20行的内容进行替换
:1,$s/from/to/g,对第一行到最后一行的内容进行替换
:1,.s/from/to/g,对第一行到当前行的内容进行替换
:%s/from/to/g,对所有行的内容进行替换
from可以是正则表达式
#####书签
m+字符,将当前位置记录标签,标签名为该字符,eg,ma
` +字符,移动到标签名为该字符的位置,eg,`a
vi提供了一些便于程序员开发的功能
Ctrl+N、Crtl+P补全已出现过的单词,若有多个选项则多次键入,Ctrl+N顺序遍历,Ctrl+P逆序遍历
命令模式,>>当前行增加一个缩进,<<当前行减少一个缩进
编辑模式,Ctrl+T当前行增加一个缩进,Ctrl+D当前行减少一个缩进
vi内置一些语言的正确缩进格式,命令模式=当前行设置为正确的缩进模式,10=设置10行,或者光标选择