Vim 常用操作总结及课后习题

Vim 为全键盘操作的编辑器。在各种模式下都有跟多功能键。

#一,Vim 常用操作

  1. 分别向下,向右,向左,向右移动 6 个字符;
    答案 : 6j 6l 6h 6l

  2. 分别向下,向上翻两页;
    答案 : Ctrl+F 和 Ctrl+B

  3. 把光标移动到第 49 行;
    答案 : 49G

  4. 把光标移动到行尾,再移动到行首;
    答案: Shift+4 , Shift+6

  5. 移动到 1.txt 文件的最后一行;
    答案: G

  6. 移动到文件的首行;
    答案: gg

  7. 搜索文件中出现的 dnsmasq 字符串,并数一下该字符串出现的次数;
    答案: 输入 /dnsmasq,然后按 n

  8. 把从第一行到第十行出现的 dnsmasq 替换成 dns;
    答案 : 1,10s/dnsmasq/dns/g

  9. 还原上一步操作;
    答案: u

  10. 把整个文件中所有的 etc 替换成 cte;
    答案: 1,$s/etc/cte/g

  11. 把光标移动到 25 行,删除字符串 ly;
    答案: 输入 25G 后回车,然后按 j 向右移动光标找到 ly,按 v 选中,然后按 x

  12. 还原上一步操作;
    答案: u

  13. 删除第 50 行;
    答案: 50G dd

  14. 还原上一步操作;
    答案: u

  15. 删除第 37 行至第 42 行的所有内容;
    答案: 37G dd

  16. 还原上一步操作;
    答案: u

  17. 复制第 48 行的内容并将其粘贴到第 52 行下面;
    答案: 48G yy 52G p

  18. 还原上一步操作;
    答案: u

  19. 复制第 37 行至 42 行的内容并将其粘贴到第 44 行上面;
    答案: 37G 6yy 44G p

  20. 还原上一步操作;
    答案: u

  21. 把第 37 行至 42 行的内容移动到第 19 行下面;
    答案: 37G 6dd 19G p

  22. 还原上一步操作;
    答案: u

  23. 把光标移动到首行,把第一行的内容改为 #!/bin/bash;
    答案: 先按 gg,把光标定位到第一行,然后按字母 A,进入编辑模式,同时将光标移动到行末进行修改,完成后 Esc 键退出编辑模式。

  24. 在第一行下面插入新的一行,并输入 # Hello!;
    答案: 按 o 进入编辑模式,同时将光标下移另起一行,输入 #Hello !

  25. 保存文档并退出;
    答案: 按 Esc 键退出编辑模式,按 Shift+:,输入 :wq,回车。

#二,课后习题
1. vi 与 vim 有什么区别呢,它们之间有什么关系?
答案:简单的讲,vi 编辑器是 UNIX 早期自带的文本编辑器,更能简单,不支持语法颜色;vim 编辑器是在 vi 的基础上改进的版本,比 vi 功能更强大,支持语法颜色。vim 是 vi 的升级版。

  1. 如何查看当前系统 vim 的版本?
    答案:vim –version 或者 rpm -qa |grep vim

  2. 如果想把文档中出现的全部 "abc" 替换成 "def" 怎么做?又如何只替换每行中出现的第一个 "abc" 呢?
    答案:1,$s/abc/def/g 或者 %s/abc/def/g,不加 g 就只替换每行第一个“abc”

  3. 当搜索某个关键词时,光标所定位的关键词所在的行是如何决定的?也就是说,光标是定位到最顶端出现的关键词的那行还是最底端关键词出现的那行,还是另外的情况?如果想从当前关键词移动到下一个关键词怎么操作?移动到上一个关键词又怎么操作?
    答案:1. 正搜索使用 /,光标定位到最顶端出现关键词的行,n 移到下一个关键词,N 移到上一个关键词
    2. 逆搜索使用?, 光标定位到最低端出现关键词的行,N 移到下一个关键词,n 移到上一个关键词

  4. 当编辑完文档后,按 ESC 进入命令模式,输入命令 :x 会怎么样?
    答案:命令:x 会保存退出,相等于命令:wq

  5. 在一般模式下如何快速的把光标快速的向右或向左移动 10 个字符?
    答案:向左移动 10 个字符:10h 或 10←
    向右移动 10 个字符:10l 或 10→

  6. vim + filename 表示什么含义, vim +10 filename 将会发生什么?
    答案:vim filename 表示以 vim 编辑器打开文件 filename,如果不存在则创建,光标定位到第一行行首。vim +10 filename 表示以 vim 编辑器打开文件 filename,如果不存在则创建,如果内容行数大于等于 10 行则光标定位到第 10 行行首,如果不足 10 行则光标定位到最后一行行首。

  7. 用 vim 打开一个文档后,我想让光标跳到第 20 行,怎么做?跳到最后一行怎么做?
    答案:让光标调到第 20 行:20G
    让光标调到最后一行:G

  8. vim 打开文档后,默认是不显示行号的,如何做让它显示行号?
    答案:命令模式下输入:set no

  9. vim 打开文档后,我想把 20-50 行中的第一个’abc’ 替换为 ‘efg’ 怎么操作?如果是想替换所有呢?
    答案:(1) 20,50s/abc/efg/
    (2) 20,50s/abc/efg/g 替换 20-50 行所有‘abc’为’efg’
    1,$s/abc/efg/g 或 %s/abc/efg/g 替换全文所有’abc’为’efg’

  10. vim 打开文档后,如何快速删除前 100 行?
    答案:将光标定位到第一行,然后输入 100dd

  11. vim 打开文档后,如何复制一行,并粘贴到第 20 行的下面?
    答案:首先将光标定位到要复制的行,然后输入 yy 复制该行,接着输入 "20G" 指定到第 20 行,最后按小写字母“P”粘贴即可。