文章目录
  1. 1. 基本模式
  2. 2. 打开文件
  3. 3. 模式转换
    1. 3.1. 编辑模式 –> 输入模式
    2. 3.2. 输入模式 –> 编辑模式
    3. 3.3. 编辑模式 –> 末行模式
    4. 3.4. 末行模式 –> 编辑模式
  4. 4. 关闭文件
  5. 5. 光标跳转
    1. 5.1. 字符间跳转
    2. 5.2. 单词间跳转
    3. 5.3. 行首行尾跳转
    4. 5.4. 行间移动
    5. 5.5. 句间移动
    6. 5.6. 段落间移动
  • vim的编辑命令:
    1. 1. 字符编辑
    2. 2. 替换命令(r, replace)
    3. 3. 删除命令
    4. 4. 粘贴命令(p, put, paste)
    5. 5. 复制命令(y, yank)
    6. 6. 改变命令(c, change)
    7. 7. 其它编辑操作
      1. 7.1. 可视化模式
      2. 7.2. 技巧
        1. 7.2.1. 1. 删除连续的行首的#
        2. 7.2.2. 2. 在指定的行首加#
    8. 8. 撤消此前的编辑
    9. 9. 撤消此前的操作
    10. 10. 重复前一个编辑操作
    11. 11. 翻屏操作
    12. 12. vim自带练习教程
    13. 13. Vim中的末行模式
      1. 13.1. 1. 地址定界
        1. 13.1.1. 使用方式:
      2. 13.2. 2. 查找
        1. 13.2.1. 3. 查找并替换
        2. 13.2.2. 练习:
    14. 14. 多文件模式
    15. 15. 窗口分隔模式
    16. 16. 单文件窗口分割
    17. 17. 定制vim的工作特性:
      1. 17.1. 1. 行号
      2. 17.2. 2. 括号匹配
      3. 17.3. 3. 自动缩进
      4. 17.4. 4. 高度搜索
      5. 17.5. 5. 语法高度
      6. 17.6. 6. 忽略大小写:
      7. 17.7. 获取帮助
    18. 18. 练习
  • 基本模式

    • 编辑模式:命令模式
    • 输入模式
    • 末行模式:内置的命令行接口

    打开文件

    1
    # vim [OPTION]... FILE...

    +#:打开文件后,直接让光标处于第#行的行首;
    +/PATTERN:打开文件后,直接让光标处于被PATTERN匹配到的行首;

    vim + /path/to/file :打开文件时定位到文件的尾部;

    模式转换

    编辑模式 –> 输入模式

    字母 描述 备注
    i insert, 在光标所在处输入;
    a append,在光标所在处后面输入;
    o 在当前光标所在行的下方打开一个新行;
    I 在当前光标所在行的行首输入;
    A 在当前钞票所在行的行尾输入;
    O 在当前光标所有行的上方打开一个新行;
    c
    C

    输入模式 –> 编辑模式

    • ESC

    编辑模式 –> 末行模式

    末行模式 –> 编辑模式

    • ESC

    关闭文件

    字母 描述 备注
    :q 退出
    :q! 强制退出,丢弃做出的修改
    :wq 保存退出
    :x 保存退出
    :w /path/to/file 另存为指定文件
    ZZ 保存退出

    光标跳转

    字符间跳转

    • h:左
    • j:下
    • k:上
    • l:右

      #COMMAND: 跳转由#指定的个数的字符;

    单词间跳转

    字母 描述 备注
    w 下一个单词的词首;
    e 当前或下一个单词的词尾;
    b 当前或前一个单词的词首;
    • #COMMAND: 跳转由#指定一次跳转的单词数;

    行首行尾跳转

    字母 描述 备注
    ^ 跳转至行首的第一个非空白字符;
    0 中转至行首;
    $ 跳转至行尾;

    行间移动

    字母 描述 备注
    #G 跳转至由#指定的行;
    G 最后一行;
    1G,gg 第一行;

    句间移动

    段落间移动

    • {
    • }

    vim的编辑命令:

    字符编辑

    字母 描述 备注
    x 删除光标处的字符;
    #x 删除光标处起始的#个字符;
    xp 交换光标所在处的字符及其后面的位置;

    替换命令(r, replace)

    • r:替换光标所在处的字符

    删除命令

    • d:删除命令,可结合光标跳转字符,实现范围删除;
    命令 描述 备注
    d$ 删除光标处至行尾
    d^ 删除光标处至行首
    d0 删除光标处至行首
    dw 删除光标所在处单词
    de 删除光标所在处至词尾
    db 删除光标所在处至词首
    • #COMMAND
      dd:删除光标所在的行
    • #dd:多行删除;

    粘贴命令(p, put, paste)

    • p:缓存区存的如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至当前光标所在处的后面;
    • P:缓存区存的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在处的前面;

    复制命令(y, yank)

    • y:复制,工作行为相似于d命令;
    命令 描述 备注
    y$ 复制光标处至行尾
    y0 复制光标处至行首
    y^ 复制光标处至行首
    ye 复制光标所在处单词
    yw 复制光标所在处至词尾
    yb 复制光标所在处至词首
    • #COMMAND

    • yy:复制行

    • #yy: 复制多行;

    改变命令(c, change)

    • c:修改,编辑模式–> 输入模式
    命令 描述 备注
    c$
    c^
    cb
    c0
    ce
    cw
    • #COMMAND
      cc:删除并输入新内容

    其它编辑操作

    可视化模式

    • v: 按字符选定
    • V:按行选定

    NOTE:经常结合编辑命令;
    d, c, y

    技巧

    ctrl + v:指定列,shift + v:指定行

    1. 删除连续的行首的#

    在可视化模式,按ctrl+v ,j , d

    2. 在指定的行首加#

    将光标移动到第一列,
    ctrl + v,进入可视模式
    选中全部行的第一列,最好的方式,shift + g 快速移动到最后一行
    shift + i,进入 insert 模式
    输入 #
    两次 esc

    撤消此前的编辑

    u(undo):撤消此前的操作;

    #u:撤消指定次数的操作;

    撤消此前的操作

    • Ctrl+r

    重复前一个编辑操作

    • .

    翻屏操作

    Ctrl+f: 向文件尾部翻一屏;
    Ctrl+b: 向文件首部翻一屏;

    Ctrl+d: 向文件尾部翻半屏;
    Ctrl+u: 向文件首部翻半屏;

    vim自带练习教程

    vimtutor

    Vim中的末行模式

    内建的命令行接口

    1. 地址定界

    :start_pos, end_pos

    命令 描述 备注
    # 具体第#行,例如2表示2行;
    #,# 从侧#表示起始,到右侧#表示行结尾;
    #,+# 从侧#表示的行起始,加上右侧#表示的行数;
    . 当前行;
    $ 最后一行; ., $-1
    % 全文,相当于1,$
    /pat1/,/pat2/ 从第一次被pat模式匹配到的行开始,一直到第一次被pat2匹配的行结束;
    #,/pat/ 从指定的行开始,一直到被pat匹配的行结束;
    /pat/,$ 从第一次被pat匹配的行开始,一直到最后一行结束;

    使用方式:

    后跟一个编辑命令

    命令 描述 备注
    d 删除
    y 复制
    w /PATH/TO/SOMEFILE 将范围内的行另存至指定文件中;
    r /PATH/FROM/SOMEFILE 在指定位置插入指定文件中的所有内容;

    2. 查找

    • /PATTERN: 从当前光标所在处向文件尾部查找;
    • ?PATTERN: 从当前光标所在处向文件首部查找;
      n: 与命令同方向;
      N:与命令反方向;

    3. 查找并替换

    s: 在末行模式下完成查找替换操作;
    s/要查找的内容/替换为的内容/修饰符

    • 要查找的内容:可使用模式
    • 替换为的内容:不能使用模式,但可以使用\1, \2,…等后向引用符号,还可以使用&引用前面查找时查找到的整个内容
    • 修饰符:
      i: 忽略大小写
      g:全局替换,默认情况下,每一行只替换第一次出现;

    查找替换中的分隔符/可替换为其它字符, 例如:s@@@,
    s###

    练习:

    1. 复制/etc/grub2.cfg至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;

      1
      :%s/^[[:space:]]\+//
    2. 复制/etc/rc.d/init.d/functins文件至/tmp目录,用查找替换命令为/tmp/functios的每行开头为空白字符的行首添加一个#号;

      1
      :%s/^[[:space:]]/#&/g

    多文件模式

    • vim FILE1 FILE2 FILE3….
    命令 描述 备注
    :next 下一个
    :prev 前一个
    :first 第一个
    :last 最后一个
    :wall 保存所有
    :qall 退出所有

    窗口分隔模式

    • vim -o|O FILE1 FILE2….
    -o:水平分割
    -O:垂直分割
    

    在窗口之间切换使用:ctrl+w, Arrow(方向键)

    单文件窗口分割

    Ctrl+w, s :split,水平分割
    Ctrl+w, v :vertical,垂直分割
    

    定制vim的工作特性:

    • 配置文件:永久有效

      1
      2
      全局: /etc/vimrc
      个人: ~/.vimrc
    • 末行:当前vim进程有效

    1. 行号

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

    2. 括号匹配

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

    3. 自动缩进

    缩进:set ai
    取消:set noai
    

    4. 高度搜索

    启用:set hlsearch, 简写 hl
    取消: set nohl,简写 nohl
    

    5. 语法高度

    启用:syntax on
    禁用:syntax off
    

    6. 忽略大小写:

    启用:set ic
    禁用:set noic
    

    获取帮助

    :help
    

    练习

    1. 复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/syscofnig/init/var/log;

    2. 删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;

    文章目录
    1. 1. 基本模式
    2. 2. 打开文件
    3. 3. 模式转换
      1. 3.1. 编辑模式 –> 输入模式
      2. 3.2. 输入模式 –> 编辑模式
      3. 3.3. 编辑模式 –> 末行模式
      4. 3.4. 末行模式 –> 编辑模式
    4. 4. 关闭文件
    5. 5. 光标跳转
      1. 5.1. 字符间跳转
      2. 5.2. 单词间跳转
      3. 5.3. 行首行尾跳转
      4. 5.4. 行间移动
      5. 5.5. 句间移动
      6. 5.6. 段落间移动
  • vim的编辑命令:
    1. 1. 字符编辑
    2. 2. 替换命令(r, replace)
    3. 3. 删除命令
    4. 4. 粘贴命令(p, put, paste)
    5. 5. 复制命令(y, yank)
    6. 6. 改变命令(c, change)
    7. 7. 其它编辑操作
      1. 7.1. 可视化模式
      2. 7.2. 技巧
        1. 7.2.1. 1. 删除连续的行首的#
        2. 7.2.2. 2. 在指定的行首加#
    8. 8. 撤消此前的编辑
    9. 9. 撤消此前的操作
    10. 10. 重复前一个编辑操作
    11. 11. 翻屏操作
    12. 12. vim自带练习教程
    13. 13. Vim中的末行模式
      1. 13.1. 1. 地址定界
        1. 13.1.1. 使用方式:
      2. 13.2. 2. 查找
        1. 13.2.1. 3. 查找并替换
        2. 13.2.2. 练习:
    14. 14. 多文件模式
    15. 15. 窗口分隔模式
    16. 16. 单文件窗口分割
    17. 17. 定制vim的工作特性:
      1. 17.1. 1. 行号
      2. 17.2. 2. 括号匹配
      3. 17.3. 3. 自动缩进
      4. 17.4. 4. 高度搜索
      5. 17.5. 5. 语法高度
      6. 17.6. 6. 忽略大小写:
      7. 17.7. 获取帮助
    18. 18. 练习