vi的使用

首先vi分成三个形式:一般模式,编辑模式,命令模式
3.1 vim编辑器 - 图1
基础使用请看:http://cn.linux.vbird.org/linux_basic/0310vi_2.php


一般模式操作

行跳跃:

  • n<enter>:跳到向下n行

行定位:G

  • nG:去到第n行
  • gg:去第一行
  • G:去最后一行

字符操作(行内操作):0,$,x,X

  • n<space>:这行此光标向后跳n个字符
  • 0:改行首
  • $:改行尾
  • x:删除后面一个字符del
  • X:同backspace
  • nx:连续向后删除 n 个字符

删除操作:

  • 行删除:d
    • dd:删除该行
    • ndd:删除后面n行
    • d0:光标处删除到行首
    • d$:光标处删除到行尾
  • 字符删除:x
    • x:删除后面一个字符del
    • X:同backspace
    • nx:连续向后删除 n 个字符

复制操作:y

  • yy:复制该行
  • nyy:复制向下n行
  • y0:光标处复制到行首
  • y$:光标处复制到行尾

黏贴操作:p

  • p:黏贴到光标下一行开始
  • P:黏贴到光标上一行开始

撤销、重做:

  • 撤销:u
  • 重做:<ctrl>+r
  • .:重复前一个动作

搜索与替代

注意,最后不加c时,直接全部给你换完了,不会提示
image.png

一般模式进入编辑模式操作

i,l ,a,A,o,O,r,R

都常用??,我觉得最基础的是i,然后是o/O。有些时候R也可以。
image.png

命令模式操作

  • 快速退出:ZZ
  • 另存为::w filename
  • 开启行号::set nu
  • 回到文档初始状态::e!

image.png

特别注意,在 vi 中,『数字』是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前~那我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

速记图:
3.1 vim编辑器 - 图5

vim的额外功能

区块选择

就是选中的方法,有行选中,字符选中和矩形选中。选中后可以进行复制和删除。
上述的nyy只能进行行复制。
image.png

多档案编辑

使用vim hosts /etc/hosts打开多个文件。注意,这里要一次性打开,不能使用<ctrl>+z的方式打开。
用于从别的文件复制东西进来。
image.png
3.1 vim编辑器 - 图8

多窗口功能

  • :sp:多开一个当前文件的窗口
  • :sp filename:多开一个指定文件窗口
  • <ctrl>+w+↑,<ctrl>+w+↓:跳到上一个窗口/下一个窗口

3.1 vim编辑器 - 图9

注意

  • 可以使用 iconv 进行档案语系编码的转换
  • 使用 dos2unix 及 unix2dos 可以变更档案每一行的行尾断行字符。