vi只是一个文本编辑程序
编辑模式到命令模式用i,a,o,r参数
编译模式到命令模式或其他模式esc键
vi filename :打开或者新建文件,并将光标置于第一行首
vi+n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename :打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正在vi编辑时发生系统崩溃,恢复filename
命令模式下:
h 向左 可以与数字一起用,如:30h:向左30位
j 向下
k 向上
l 向右
ctrl+f 向下移动一页 相当于page down键
ctrl+b 向上移动一页 相当于page up键
ctrl+d 向下半页翻
ctrl+u 向上半页翻
shift + 光标移动到非空格符的下一列
shift - 光标移动到非空格符的上一列
shift ^ 光标移动到行首
n+空格键 n表示数字,比如20+空格键 表示移动到该光标所在位置后20个字符处
0 数字0 :光标移动到该行的最前面的字符处
$ 光标移动到这一行的最后面字符处
H 光标移动到这一屏幕的最上方哪一行
M 光标移动到这个屏幕的中央哪一行
L 光标移动到这一屏幕的最下方的哪一行
G 移动到这个档案的最后一行
nG n为数字。移动到这个档案的第n行,例如:20G则会移动到这个档案的第20行
gg 移动到这个档案的第一行 相当于1G
n+Enter键 n为数字。光标向下移动n行
x,X 在一行字当中,x为向后删除一个字符(相当于del键)X为向前删除一个字符(相当于编辑模式下的backspace退格键)
nx n为数字,连续向后删除n个字符,例如:10x
dd 删除光标所在的那一整列
dw 删/剪切至词尾(对光标所在的单词操作)
ndw 删/剪切N个词
ndd n为数字,删除光标所在的向下n列,例如20dd则是删除20列
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
nd$ 删除光标所在处的后面n行
d0 数字0,删除光标所在处,到该行的最前面一个字符
yy 复制光标所在的哪一行 p键粘贴
yw 复制光标所在的那一词 p键粘贴
nyw 复制光标所在的n个词 p键粘贴
nyy n为数字,复制光标所在的向下n行,例如:20yy则是复制20列 p键粘贴
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p,P p为将已复制的数据在光标下一行贴上,P则为贴在光标的上一行,例如:我目前光标在第20行,且已经复制了10行,则按下p后,那10行数据会贴在原来的20行之后,亦即21行开始贴,但如果按下P,那么原本的第20行会被推到30行
J 将光标所在列与下一列的数据结合成同一列
c 重复删除多个数据,例如向下删除10行 c1j
u 复原前一个动作
U 取消一行内的所有更动
ctrl+r 重做上一行动作 ctrl+r与u都是很常用的按键
:e! 放弃所有变动,重新编辑
. 小数点,重复前一个动作的意思,如果您想要重复删除,重复贴上等等动作,按下小数点.就好了
/word 向光标以下寻找一个字符串为word
?word 向光标以上寻找一个字符串名称为word
n 英文按键n 代表重复前一个搜索动作,如前一个搜索/word 按下n键后会继续向下搜索
N 英文按键N 刚好与n相反 为反向进行前一个搜索 如?word 按住N键就是向下搜索
:n1,n2s/word1/word2/g -----n1 n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串取代为word2 例如:在100到200行之间搜索test并取代为TEST则:【:100,200s/test/TEST/g】
:1,$s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2
:1,$s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 且在取代前显示提示字符串给使用者确认(confirm)是否需要取代,提示出现,y:替换,n:不替换 a:全部替换 q:退出
vi 的编辑操作:
i,I 插入:在目前的光标所在处插入输入之文字,已存在的文字会后退,其中i为【从目前光标所在处插入】,I为【在目前所在处的第一个非空格符处开始插入】
a,A a为【从目前光标所在的下一个字符开始插入】,A为【从光标所在行的最后一个字符处开始插入】
o,O 这是英文字母o的大小写,o为【在目前光标所在的下一行处插入新的一行】;O为在目前光标所在处的上一行插入新的一行
r,R 取代:r会取代光标所在的哪一个字符;R会一直取代光标所在的文字,直到按下ESC为止
Esc 退出编辑模式,回到一般模式中
:w 将编辑的数据写入硬盘档案中
:w! 若档案属性为【只读】时,强制写入该档案,不过,到底能不能写入,还是跟你对档案的档案权限有关
:q 离开
:q! 若曾修改过档案,又不想储存,使用!为强制离开不储存档案
:wq 储存后离开,若为:wq!则为强制储存后离开
:x 保存退出
:e! 将档案还原到最原始的状态
ZZ 若档案没有改动,则不储存离开,若档案已经经过改动,则存储后离开
:w 【filename】 将编辑的数据存储成另一个档案(类似另存新档)
:r 【filename】 在编辑的数据中,读入另一个档案的数据,亦即将【filename】这个档案内容加到光标所在行后面
:n1,n2 w【filename】 将n1到n2行的内容存储成filename这个档案
:!command 暂时离开vi到指令列模式下执行command的显示结果!例如【:! ls/home】即可在vi当中察看/home地下ls输出的档案信息
set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
set nonu 与set nu相反,为取消行号
vi 高级命令
分割窗口:
vi -o file1 file2 水平分割窗口编辑两个文件
vi -O file1 file2 垂直分割窗口编辑两个文件
|