VI的使用
vi的三种模式
一般模式
默认打开文件的模式。在这个模式中你可以移动光标,可以删除字符或删除整行,也可以复制,粘贴你的文件数据
编辑模式
在一般模式中,按下”i,I,o,O,a,A,r,R“等任何一个字母进入编辑模式,在按下这些按键时,在界面的左下方会出现INSERT或REPLACE字样,如果要回到一般模式,则必须按下[ESC]键
命令行模式
在一般模式中。输入”:,/,?“冒号,左斜线,问号,3个中的任何一个按键就可以将光标移动到最下面一行。在这个模式当中,可以提供你查找数据的操作,而读取,保存,大量替换字符,离开vi,显示行号等操作则是在此模式中完成的。
按键说明
一般模式
可用的按键说明,光标移动,复制粘贴,查找替换等
光标移动
h  左移一个字符
j  下移一个字符
k  上移一个字符
l  右移一个字符
如果想进行多次移动,如下移30行,可以使用30j的组合键
ctrl + f 屏幕向下移动一页,相当于 pagedown
ctrl + b 屏幕向上移动一页,相当于 pageup
ctrl + d 屏幕向下移动半页
ctrl + u 屏幕向上移动半页
0或功能键home: 移动到这一行的最前面字符处
$或功能键end :移动到这一行的最后字符处
H  光标移动到这个屏幕最上方的第一个字符处
M  光标移动到这个屏幕中央的那一行的第一个字符
L  光标移动到这个屏幕的最下方的那一行的第一个字符
G  移动到这个文件的最后一行(常用)
nG: n为数字,移动这个文件的第n行
gg: 移动到这个文件的第一行,相当于1G
N[Enter]: n为数字,光标向下移动n行(常用)
查找与替换
/word 向下寻找一个名称为word的字符串
?word 向上寻找一个名称为word的字符串
n 这个n是英文按键,代表重复前面一个查找的动作
N 这个N是英文按键,与n刚好相反,为”反向“进行前一个查找操作
:n1,n2s/word1/word2/g n1与n2为数字,在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2.如,在100到200行之间寻找vbird并替换成VBIRD则用:100,200s/vbird/VBIRD/g
:1,$/word1/word2/g  从第一行到最后一行查找word1字串,并将它替换为word2
:1,$/word1/word2/gc 从第一行到最后一行查找word1字串,并将它替换为word2,且在替换前提示用户确定是否需要替换(常用)
删除,复制与粘贴
x,X 在一行字当中,x为向后删除一个字符,X为向前删除一个字符(常用)
nx n为数字,连接向后删除n个字符,如10x
dd 删除光标所在的一行
ndd  n为数字,删除光标所在的向下n行
d1G  删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的数据
d$ 删除从光标所在到最后一个字符
d0 数字0,删除从光标所在处到该行的最前面一个字符
yy 复制光标所在一行64G:
nyy n为数字,复制光标所在的向下n行
y1G 复制光标所在行到第一行所的数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在处到该行行首的所有数据
y$  复制光标所在处到该行行尾的所有数据
p,P p为将已复制的数据在光标下一行粘贴,P则为光标上一行:
J 将光标所在行和下一行数据合成一行
c 重复删除多个数据,例如向下删除10行 10c
u 复原前一个操作(常用)
Ctrl +r 重做上一个操作
.  小数点,重复前一个操作的意思
一般模式切换到编辑模式的按键说明
i,I  进入插入模式,i为从目前光标的在处插入,I为在目前的所在行的非空格符处开始插入。
r,R  进入替换模式 r只会替换光标的那个字符一次,R会一直替换光标所在的文字,直到按下ESC键为止。
一般模式切换到命令模式可用的按键使用
:w 将编辑的数据定入硬盘文件
:w! 强制写入
:q 离开vi
: q!  若修改过文件,又不想保存,可以强制离开不保存文件 
:wq 保存后离开
:wq! 强制保存后离开 
:w[filename] 将编辑的数据保存为另一个文件 (类似于另存文件)
:r[filename] 在编辑的数据中,读入另一个文件的数据,将filename这个文件的内容加到光标所在行后面
:n1,n2 w [filename]  将n1到n2行的内容保存成filename这个文件 
:!command 暂时离开vi到命令模式下执行comand的显示结果,如”:!ls/home“ 即可在vi当中查看/home下面的ls输出的文件信息
:set nu 显示行号
:set nonu 与set nu 相反,取消行号
在一般模式下按下Ctrl+Z,vim会被丢到后台去执行
vim的块选择
v  字符选择,会将光标经过的地方反白选择
V 行选择 ,会将光标经过的地方反白选择
Ctrl +v  块选择,可以用长方形的方式选择数据
y  将反白的地方复制起来
d 将反白的地方删除
p 将复制的粘贴
vim的多文件编辑
:n 编辑下一个文件 
:N 编辑上一个文件 
:files 列出目前这个vim的打开的所有文件
如同时打开两个文件:vim 文件一 文件二
vim的多窗口功能
在命令模式输入:sp{filename},那个filename可有可无,如果想要在新窗口启动另一个文件,就加文件名,否则仅输入:sp时,出现的则是同一个文件在两个窗口
ctrl +w+向下功能键  向上功能键  光标在窗口间移动
ctrl + w + q  结束离开
DOS与linux的断行字符
dos2UNIX [-kn] file [newfile]
UNIX2dos [-kn] file [newfile]
-k 保留该文件原本的mtime时间
-n 保留原本的旧文件,将转换后的内容输出到新文件
语系编码转换
iconv --list 列出所有编辑
iconv -f 原本编码 -t 新编码 filenname [-c newfile]
-f from 后接原本的编码  
-t to后接新编码格式  
-o file 如果要保留原本的文件,那么使用-o新文件名,建立新编码文件

