VI编辑常用命令

普通模式进入插入模式:
i/a
从光标所在位置之前、之后开始插入
I/A
光标移到行首、行尾,然后开始插入
o/O
光标所在行的下、上新插入一行,然后开始插入 


普通模式下光标移动:

光标移动到文件最后一行的行首
nG
相对文件的开始的第n行开始,如:1G光标移到第1行开始
$
光标移到当前所在行的行尾
n$
光标移到第n行的行尾 
0
光标移到当前所在行的行首
n+/n-
光标上移或下移n行
^
光标移到所在行的第一个非空格字符
h/j/k/l
光标左、下、上、右移动
H
光标移至当前屏幕左上角
M
光标移至当前屏幕显示文件的中间行行首
L
光标移到当前屏幕最后一行行首
           

        
普通模式下替换删除:
rc
用字符c替换光标所指向的当前字符
nrc
用字符c替换从光标开始的n个字符
x
删除光标所在处的字符
nx
删除从光标所在位置开始向右的n个字符
dw
删除一个单词。若光标处在某个词中间,则从光标所在位置开始删除至词尾并连同空格
ndw
删除n个指定的单词
db
删除光标所在位置之前的一个词
ndb
删除光标所在位置之前的n个词
dd / D
删除光标所在整行
ndd
删除光标所在行及之后的n-1行
dG
删除光标所在位置至文件尾的所有内容
d1G
删除光标所在位置到文件首的所有内容
d$
删除光标所在位置到当前行的末尾的内容
d0
删除光标所在位置到当前行的开始的内容 


普通模式下的复制和粘贴:
yy
将当前行的内容复制到缓冲区
nyy 
将当前开始的n行内容复制到缓冲区
yG
将当前光标所在位置到最后一行的所有内容复制到缓冲区
y1G
将当前光标所在位置到第1行的所有内容复制到缓冲区
y$
将当前光标所在位置到当前行的末尾的内容复制到缓冲区
y0
将当前光标所在位置到当前行的开始的内容复制到缓冲区
p
将缓冲区的内容写出到光标所在位置



普通模式下的搜索字符串:
/str
向右移动到有str的地方
?str
往左移动到有str的地方
n
向相同的方向移动到下一个有str的地方
N
向相反的方向移动到下一个有str的地方


普通模式下的撤销和重复:
u
撤销前一次操作


普通模式下退出Vi:
ZZ
存盘退出
ZQ
不保存退出


命令模式下的跳行:
:n 直接输入要移动到的行号即可实现跳行


命令模式下搜索和替换字符串:
:/str/
从当前光标开始往右移动到有str的地方
:?str? 
从当前光标开始往左移动到有str的地方
:/str/w file
将包含有str的行写到文件file中
:/str1/,/str2/w file
将从str1开始到str2结束的内容写入file文件中
:s/str1/str2/
将找到的第1个str1替换为str2
:s/str1/str2/g
将找到的所有str1替换为str2
:n1, n2s/str1/str2/g
将从n1~n2行找到的所有str1替换为str2
:1,.s/str1/str2/g
将第1行到当前位置的所有str1替换为str2
:.,$s/str1/str2/g
将从当前位置到结尾的所有str1替换为str2
:1,$s/str1/str2/gc
 将从第1行到最后一行的所有str1替换为str2,并在替换前询问


  
命令模式下文本复制、移动、删除:
:n1,n2 co n3
把从n1开始到n2为止的所有行的内容复制到n3行的后面
:n1,n2 m n3
把从n1开始到n2为止的所有行的内容移动到n3行的后面
:d
 删除当前行
:nd
删除从当前所开始的n行
:n1,n2 d
删除从n1开始到n2为止的所有行的内容
:.,$d 
删除从当前行到结尾的所有内容
:/str1/,/str2/d
删除从str1开始到str2为止的所有内容
   


命令模式下的文件相关命令:
:w 将当前编辑的内容存盘
:w file 将当前编辑的内容写到file文件中
:n1,n2w file 将从n1开始到n2结束的行写入到file中
:nw file 将第n行写入到file中
:1,.w file 将从第1行到当前光标位置的所有内容写入到file中
:.,$w file 将从当前光标位置到文件结尾的所有内容写入到file中
:r file 找开另一个文件file
:e file 新建file文件
:f file 把当前文件改名为file



命令模式下执行shell命令:
:!Cmd 运行Shell命令Cmd
:n1,n2 w ! Cmd 将n1~n2行的内容作为Cmd命令的输入,如果不指定,则将整个文件作为命令的输入
:r ! Cmd 将命令运行结果写入当前行位置



命令模式下退出Vi
:q 退出Vi
:wq 退出保存Vi
:q! 不保存退出Vi
    


命令模式下设置Vi环境  
:set autoindent 缩进每一行,使之与前一行相同。
:set noautoindent 取消缩进
:set number 在编辑文件时显示行号
:set nonumber 不显示行号
:set ruler 在屏幕底部显示光标所在的行、列位置
:set noruler 不显示光标所在行、列位置
:set tabstop=value 设置显示制表符空格字符个数
:set wrapmargin=value 设置显示器的右页边。当输入进入所设置的页边时,编辑器自动回车换行
:set  显示设置的所有环境选项
:set all  显示所有可以设置的环境选项
    




















转载于:https://my.oschina.net/jasonli0102/blog/551715

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值