继续上次的课题,这回写一下关于vi这个编辑器的学习笔记
首先说下地位吧,vi现在已经成为主流linux下的必备编辑器,它由最早的ed发展而来,当vi编辑器不能使用的时候,可使用ed代替
vi编辑器的默认安装位置一般在/bin/下

   root@OpenWrt:~# which vi
   /bin/vi

在有些发行版的linux下,vi会自动alias到vim,或者干脆把vim改名为vi
比如我现在用的linuxmint 17.1

   monolight@monolight-QTJ5 ~ $ whereis vi
   vi: /usr/bin/vi /usr/bin/X11/vi /usr/share/man/man1/vi.1.gz
   monolight@monolight-QTJ5 ~ $ alias
   alias grep='grep --colour=auto'
   alias ll='ls -al'
   alias ls='ls --color=auto'
   monolight@monolight-QTJ5 ~ $ vi --version
   VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:39:02)
   Included patches: 1-52
   Modified by pkg-vim-maintainers@lists.alioth.debian.org
   Compiled by buildd@


vim是全称是 Vi IMproved 即vi的升级版,所以现在基本上主要使用的是 vim 了,一般来讲,linux系统安装完之后都会自带这个,如果需要安装vim,可以去源里面安装一下
RedHat阵营:

   yum install vim 

Debian阵营:

   apt-get install vim

由于vim和vi的基本使用方法的区别不是太大,所以打算两个一起来说,在这里先唠叨一句,在如果vi和ed都没有的情况下,如果只是单纯的需要生成一个简单的文件,其实用touch或者echo命令就能完成了
比如生成一个空文件aa,直接touch即可

   $ touch aa
   $ ls
   aa

又比如说,把hello写入一个叫aa的文件,直接用echo加写入符即可

   $ echo hello > aa
   $ cat aa
   hello

PS:跟windows下一样,">"表示覆盖文件,">>"表示追加到文件
知道了这个之后,再来看vi,就能更深刻的理解vi的作用和特点了
这里继续以aa为例,编辑aa这个文件

   vi aa

如果当前位置下没有aa这个文件,vi将会生成一个新的文件
vi里面有三种模式:
    1. 命令模式
    2. 编辑模式
    3. 命令行模式
此时默认情况下会是命令模式,所有的指令都是直接按即生效的
在这里列举一下命令模式中常用的几个基本命令
   i:在当前光标位置插入编辑模式
   I:返回当前行的首部并进入编辑模式
   a:在当前光标位置后面进行追加
   A:在当前行的尾部进行追加
   o:往下方新起一行并进入编辑模式
   O:往上方新起一行并进入编辑模式
   s:删除当前光标位置的字符并进入编辑模式
   S:清空当前行并进入编辑模式
   r:替换当前位置的字符
   R:一直替换,替换到按Esc结束为止
   Esc:退出编辑模式
   数字0:定位到当前行行首
   $:定位到当前行行末
   G:定位到最后一行行首
   u:撤销
   Cirl+r:重做
   dd:删除整行
   dw:删除一个单词
   yy:复制一行(3yy复制三行)
   p:粘帖
   x:删除一个字符
PS:数字加命令,表示把当前行为重复多少次
命令行模式的几个常用命令
   :wq保存并退出
   :q退出
   :q!强制退出
   :e /etc/prpr 放弃当前文件去读取/etc/prpr文件
   :e! 放弃当前修改并重新读取当前文件
   :set nu显示行号
   :set nonu不显示行号
   :15 跳转到第15行
   :w aa.backup 将当前文档另存为到aa.backup中
   :r prpr 将prpr文件中的内容读入到文件末尾
   :r !ls 将ls命令的结果读入到文件末尾
   :1,5 w >> aa.backup 将1到5行追加到aa.backup中去
   :1,$s/haha/ahah/g 将当前文档中第一行到最后一行中的haha全部替换成ahah并忽略提示,c表示提示修改,g表示忽略提示
   /haha:查找"haha"这个字符串,使用n跳转到下一个
PS:如果要使显示行号功能随 vi 启动,需要编辑 ~/.vimrc 这个文件
vi多重编辑:
   vi -o /proc/devices /proc/iomem 上下分块
   vi -O /proc/devices /proc/iomem 左右分块
   Cirl+w切换不同分块
综合来讲,vi用熟不容易,要记的命令很多,但用熟了之后肯定会让人觉得很厉害,因为熟练使用vi的人编写文档的速度非常快。