~[3M{81Q[DYXG@)O]6ZRT_1.png

命令模式

光标跳转

  • 上下左右

    上下左右:kjhl

    command:跳转#个字符

  • 单词跳转

    w:下个单词的词首 e:当前单词的词尾 b:上个单词的词首

    command:跳转#个单词

  • 行首行尾跳转

    ^:行首(非空白字符) 0:行首 $:行尾

  • 行间移动

    G:跳转至第#行

    1G:跳转至第1行,或gg

文本编辑

  • 删除文本

    d:删除,配合光标跳转 d^ d$ d0 dw de db dd:删除光标所在行

    dd:从当前行(包括当前行)开始删除#行

    x,X:在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)

  • 复制文本:y,与删除使用方式一样(常用yy复制游标所在的那一行。nyy复制光标所在的向下 n 行)

  • 粘贴命令:p(p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。)
  • 撤销命令:u(撤销前一次),#u(撤销前#次)
  • 搜索命令

    搜索操作: :/ | ? n:查找下一个匹配 N:跳转上一个匹配

进入其他模式

a 进入插入模式,光标停在选中字母后
i 进入插入模式,光标停在选中字母的位置
o 进入插入模式,光标停在选中一行的下面,新建一行空行
A 进入插入模式,光标停在行尾 : 进入末行模式(扩展命令模式)
I 进入插入模式,光标停在行首
O 进入插入模式,光标停在选中一行的上面,新建一行空行

V 进入可视行模式
^v 进入可视块模式
R 进入替换模式

行末模式

保存退出

:10 进入第10行 :w 保存 :q 退出 :wq 保存并退出 :w! 强制保存 :wq! 强制保存退出

查找替换

:范围 s/old/new/选项

/word 向光标之下寻找一个名称为 word 的字符串。
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 下一个
N 上一个
:n1,n2s/old/new/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 old这个字符串,并将该字符串取代为 new 。/g表示global,不加的话就只是把每一行第一个检索到的替换。
:1,$s/word1/word2/gc:%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!

:1,5 s/root/aaron/ 从1-5行的root 替换为aaron 每行替换第一个 :5,$ s/root/aaron/ $表示最后一行 :1,$ s/root/aaron/g = :% s/root/aaron/g %表示全文 g表示全局 :% s#/dev/sda#/var/ccc#g :,8 s/root/aaron/ 从当前行到第8行 :4,9 s/^#// 4-9行的开头#替换为空 :5,10 s/./#&/ 5-10前加入#字符(.整行,&引用查找的内容)

读写另存为

:w 存储到当前文件
:w /tmp/aaa.txt 另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt 将1-3行保存到文件
:r /etc/hosts 读入文件到当前行后
:5 r /etc/hosts 读入文件到第5行后

设置环境

  • 临时设置

    行号 显示:set number,简写为set nu 取消显示:set nonumber,简写为set nonu

    括号匹配 匹配:set showmatch,简写为set sm 取消:set nosm

    自动缩进 启用:set ai 禁用:set noai

    高亮搜索 启用:set hlsearch 禁用:set nohlsearch

    语法高亮 启用:syntax on 禁用:syntax off

    忽略字符的大小写 启用:set ic 不忽略:set noic

    获取帮助 : help

  • 设置永久环境

修改文件:

/etc/vimrc 影响所有用户 ~/.vimrc 影响一个用户

习题

1153062-20171030143045371-1042839500.png
1153062-20171030143142527-195884680.png
/

  1. mkdir /tmp/vitest
  2. cd /tmp/vitest
  3. cp /etc/man.config /tmp/vitest
  4. vi man.config
  5. :set nu
  6. 58G(移动到58行)、40l 40➡(向右移动40个字符)
  7. gg(移动到第一行)、/bzip2(向后搜索bzip2这个字符串)
  8. :50,100s/man/MAN/gc #这里按a可以全部改掉,按y一个一个改,按u复原
  9. u或者:q!不保存强制退出
  10. 65G(先跳转到65行)、9yy(复制往下9行)、G(移动到最后一行)、p(在光标下一行粘贴)
  11. 21G(光标移动到21行)、22dd(从当前行开始往下22行数据删除)
  12. :w man.test.config
  13. 27G15x
  14. 1GO(在光标上一行输入新的一行)、输入 i am a studentesc(退出)
  15. :wq