vi 编辑器的使用

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

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

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

1
2
3
4
5
6
7
8
9
10
11
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 阵营:

1
yum install vim

Debian 阵营:

1
apt-get install vim

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

1
2
3
$ touch aa
$ ls
aa

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

1
2
3
$ echo hello > aa
$ cat aa
hello

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

1
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 的人编写文档的速度非常快。