vi text :建立一个text文件
命令模式-->编辑模式: 按i,a,或o,a命令在目前光标位置后面插入,o,在目前这一行开启新的一行
再按ESC键回到命令模式
命令模式下:x,会将光标下的字符删除
dd,删除整行 再按p命令可以重新插入,大写P会把文字插入到当前这行的前面,小写p会吵到后面
u ,把刚才所做的改变复原
dw,删除光标所在位置的单词
R,替换光标所在位置之后的文字,r替换光标下的单一字符
~,将光标所在的字符由大写改为小写,或是将小写改为大写
w,会将光标移到下个单词的开头,b会把光标移动到目前所在单词的开头位置,而0会把光标移动到目前这行的开头
$, 把光标移到行末
Ctrl-f 会把光标向前移动一整个屏幕,Ctrl-b 会向后移动整个屏幕
G 将光标移到文件末尾,10G会将光标移动到文件的第十行
键入/ 且后面接着样式(字符串)然后回车会跳到光标之后该样式第一次出现的位置 使用?取代/ ,就会从光标的位置向前搜索
(正则表达式)
d$ 会删除从光标位置到该行行末的任何内容,dG会将光标所在位置到文件结尾的所有都删除
扩展模式: 命令模式下按:
存储按:w
存储并离开:wq,相当于命令模式下的ZZ
:q!强制退出
:e 文件名 编辑另一个文件
:e! 文件名 编辑另一个文件,但不会存储对旧文件所作的修改
:r 文件名 引入另一个文件的内容进入vi缓冲区,会把这个文件的内容插入到目前所在那行的后面
:! 可以键入外部命令的名称,如 :! ls -F
:r!和:!相似,但是会将该命令的标准输出放到缓冲区
:[x,y]s/pattern/repalcemant/flags
:x,ys/字符串1/字符串2 会在缓冲区地x行和第y行间搜索字符串1,并以字符串2替换,如果未指定行号,可以用%来代表整个
文件,$是指文件的最后一行,如果把x或y其中之一留为空白,代表目前所在的那一行。
flags中,g可以替换每行中出现的pattern,c是在每次替换之前都会询问,以确定是否进行这个替换动作。也可以使用“标
记”来代表 某些行。移动光标至文件中的某个位置并键入ma(Mark a)就表示该行标记为a,使用`a(反引号)将光标直接移至标
记a的位置,使用一般的单引号 'a会将光标移至标记a所在该行的开头位置。
:'a, .s/字符串1/字符串2 其中'a表示包含标记a的那一行,而.代表目前这一行。
10dd,删除从目前位置算起的十行文字,yy将文字取出而不删除,p可以把文字粘贴
d$删除光标位置到行尾的文字,同理,y$则取出光标位置一行到行尾的文字,使用y'a命令,这会取出光标位置到标记a的文字
''a 代表寄存器a,''ayy 目前所在的这一行就会被取出到寄存器a,''ap会把寄存器a中的文字粘到目前光标所在这一行的后面
:x,y!command 会把第x行到第y行的文字当成标准输入,执行名为command的命令
: set a 设置vi的各种选项