关于vi的使用
先说一下文本编辑器和字处理软件
文本编辑器:
  在windows下,文本编辑器主要就是记事本
  在linux下,文本编辑器有好多,比如nano,emacs,vi
字处理软件
  在windows下,主要有office,wps,写字板等
  在linux下,主要有openOffice等
第个系统管理员都至少会一种命令行界面的文字处理器,以便管理系统的日常工作,linux
下的文字管理工具非常多,但建议使用vi这个正规而且通用的文字处理器,这是因为,vi几乎对于任何一个类unix的机器中都存在,学会它,会轻松很多,现在vi已有vim这个高级的
版本了,可用的功能也比vi多很多,vi是shell编程与服务器配置非常重要的工具,所以,
一定要学好。
vi设计的思想就是用键盘代替所有的操作,所以,我们可以不用鼠标,就能完成文字处理的所有操作。
还记得什么是纯文本文件吗?就是主要以ascii码为主的文件,不论用什么编辑器打开这样
的文件,都可以看到内容,而不会呈现乱码的情况,就是纯文本文件。
无论如何,要想学好linux,就必须要手工配置文本文件,而vi是最好的工具了。
下面就来讲讲vi 的使用了。
使用vi,就要知道 vi的三种模式,而且这三种模式可以自由切换的。
1.一般模式:在这种模式下,按下i,a,o,等键,可以进入编辑模式了。按下esc键,可以退
     回一般模式了。
     按下:键,可以进入命令模式。
2.编辑模式:在这种模式下,按下esc键,可以返回一般模式。
3.命令模式:在命令模式下,不可以直接进入编辑模式。
下面说说这几种模式下的作用。
1.一般模式:光标移动,搜索,替换,删除字符,删除整行,复制整行,粘贴整行等。
2.编辑模式:在这种模式下,可以输入任何字符,就像是在windows的记事本中一样。
3.命令行模式:读取,存储文件以及其它附加功能。
如何保存文件?
在一般模式下,按下:wq 就可以保存并且退出了。
如何建立文件?
在命令行中直接在vim后面输入文件名就可以了。如
vim test.txt
就是在当前目录下建立一个test.txt文件了。
如此一来,文件test.txt就可以建好了,很简单。需要注意的是,如果文件权限不对的话,那么可能无法写入,可以用“强制写入”的方式,使用“:wq!”,就是保存退出多加一个
叹号即可。

一般模式下:移动光标的方法
h或向左的方向键:光标向左移动一个字符
j或向下的方向键:光标向下移动一个字符
k或向上的方向键:光标向上移动一个字符
l或向右的方向键:光标向右移动一个字符
如果想要多次进行移动的话,例如向下移动30行,可以用“30j”或“30向下的方向键”
即加上想要进行的次数(数字)即可。
ctrl+f :向下翻屏
ctrl+b :向上翻屏
ctrl+d :向下翻半屏
ctrl+u :向上翻半屏
+:光标移动到非空格符的下一行
-:光标移动到非空格符的上一行
n<space> :n表示“数字”,例如,21.按下数字后再按空格键,光标会向右移动这一行的n个字符,例如 17<space>则光标会向后面移动17个字符距离
0 :移动到光标所在行的绝对行首,有空格也算。
$:移动到光标所在行的行尾。
H :光标移动到这个屏幕的最上方那一行。
M :光标移动到这个屏幕的中央那一行。
L :光标移动到这个屏幕的最下方的那一行。
G : 移动到这个文件的最后一行。
nG :n为数字,可以移动到这个文件的第n行,例如20G则会移动到第20行。
gg :移动到这个文件的第一行。
nENTER :n数字,光标向下移动n行。
一般模式下:搜索与替换。
/word 从光标处开始,向下寻找一个名为word的字符串
?word 从光标处开始,向上寻找一个名为word的字符串
n 是英文按键,表示“重复前一个搜索动作”,举例来说,如果刚刚执行 /word 去向下搜   索word字符串,则按下n,会向下继续搜索下一个名称为word 的字符串,如果执行 ?word  的话,那么按下n ,则会向上继续搜索名称为word的字符串。
N 这个N 是英文键,与n刚好相反,为"反向"进行前一个搜索动作,例如/word 后,按下N则  表示“向上”搜索word

一般模式下:搜索与替换
:n1,n2s/word1/word2/g  n1,n2为数字,在第n1行和第n2行寻找word1的单词,并用word2替  换掉word1,例如 :2,24s/apple/banana/g 就是在第2行和第24行之间查找apple这个单词
  并用banana替换掉。
:1,$s/word1/word2/g  $表示最后一行,所以就是在第1行和最后一行查找word1并用word2
   替换掉word1.
:1,$s/word1/word2/gc  与上面一样,只是在替换时,给用户一个提示,是否要替换。
一般模式下:删除,复制与粘贴。
x,X  在一行字中,x为向后删除一个字符,X相当于向前删除一个字符。
nx   n为数字,表示向后删除n个字符,举例来说,要连续删除10个字符,则输入10x
dd   删除光标所在的那一整行
ndd  n为数字,从光标所在位置开始,向下删除n行。
d1G  删除光标所在位置到第一行的所有数据
dG   删除光标所在位置到最后一行的所有数据
d$   删除光标所在位置到该行的最后一个字符
d0   d后面的是数字0,删除光标所在位置到该行的第一个字符
yy   复制光标所在行
nyy  从光标所在行,向下复制n行。
y1G  复制光标所在位置到第一行所有数据
yG   复制光标所在行到最后一行所有的数据
y0   复制光标所在的那个位置到该行的行首
y$   复制光标所在的那个位置到该行的行尾
一般模式:删除,复制与粘贴
p P  p为将已复制的数据粘贴到光标所在行的下一行。P则为将复制的数据粘贴到光标所在
     行的上一行
J    将光标所在行与下一列的数据结合成同一行
c    重复删除多个数据,例如向下删除10行
u    复原前一个操作,就是撤消的意思
ctrl+r   重做上一个操作
一般模式:删除,复制和粘贴
.  这就是小数点,意思是重复上一个动作,如果想要重复删除,重复粘贴,按下小数点.就   可以了
:w  保存
:w! 若文件为只读时,强制写入该文件,不过,到底能不能写入,与文件权限有关
:q  退出
:q! 若曾修改过文件,但又不想保存,使用!为强制退出不存储文件
:wq 保存并退出
:e! 将文件还原到最原始的状态
ZZ  将文件没有修改,则不存储退出,若文件有修改,则存储退出
:w [filename]  将编辑的数据存储为另一个文件,类似另存为新文件
:r [filename]  在编辑的数据中,诗篇另一个文件数据,即将filename这个文件内容加到
   光标所在行的后面。
:!command  暂时离开vi回到命令模式下执行command的显示结果,例如“:!command”,即
   可在vi中查看/home中以ls输出的文件信息
:set nu 显示行号,设置后,会在第一行的前缀显示该行的行号
:set nonu  与set nu 相反,为取消行号
 以上所讲的就是vi的大部分的用法了。学好vi,你会方便很多