• VIM基础知识整理(附思维导图)


      这是当时初学VIM后做的一个思维导图,图片稍大,所以从freemind导出了html文本po在下面;图片在最下方,放大可清晰浏览。

    VIM

    • 普通模式
      • 普通编辑命令
        • 功能:浏览,普通编辑

          x:删除光标所在字符  (=d+h)

          X:删除光标前一个字符  (=d+l)

          D:删除当前行光标位置到行尾的字符  (=d+$)

          dd:删除光标所在的行

          J:删除光标所在行的换行符

          p:在光标后粘贴

          P:在光标前粘贴,粘贴行时,p是粘贴在光标的下方,P粘贴在光标上方

          xp:交换两个字符的位置

          ddp:交换两行的位置

          u:撤销前一个操作

          Ctrl+r:恢复前一个操作,可以配合数字n进行n次批量操作;如3x,则删除当前光标及其后两个字符。

          注1:删除命令执行后,删除的内容保存在缓冲区。

          注2:粘贴命令调用缓冲区内最近的内容。

      • 控制命令
        • 字符级命令
          • h或键盘向左键:光标左移一个字符
          • l或键盘向右键:光标右移一个字符
          • j或键盘向下键:光标下移一行
          • k或键盘向上键:光标上移一行
          • 可以配合数字n进行n次批量操作
        • 单词级命令
          • w:下一个单词的词首

            W:空白字符分割的下词词首

            b:上一个单词的词首

            B:空白字符分割的上词词首

            e:下一个单词的词末

            E:空白字符分割的下词词末

            ge:上一个单词的词末

            GE:空白字符分割的上词词末

            注3:光标在单词内时,b/e命令的结果是移动到本单词的词首/词末

            注4:命令前+数字n,执行n次命令

        • 行级命令
          • $:当前行行尾
          • 0(数字0):当前行的第一个字符
          • ^:当前行的第一个非空字符
          • 移动到指定字符
            • f+单个字符:在本行内向右移动到指定字符
            • F+单个字符:在本行内向左移动到指定字符
            • t+单个字符:在本行内向右移动到指定字符的前一个字符
            • T+单个字符:在本行内向左移动到指定字符的前一个字符
            • 同样可以在命令前加数字n来定义移动到行呗第几个指定字符
            • 使用“;”来查找下一个,“,”来查找上一个
          • %:在“( )”、“[ ]”、“{ }”类符号的首尾间切换
          • 1G或gg:文本第一行行首
          • nG:移动到第n行行首
          • n%:按百分比近似定位到某行
          • G:文本末行行首
        • 屏幕级命令
          • H:屏幕顶部行首
          • M:屏幕中央行首
          • L:屏幕底部行首
          • zt:使光标所在位置移动到屏幕的顶部(所有内容做位移)
          • zz:使光标所在位置移动到屏幕的中央(所有内容做位移)
          • zb:使光标所在位置移动到屏幕的顶部(所有内容做位移)
          • ctrl+b:上移一屏
          • ctrl+f:下移一屏
          • ctrl+u:上移半屏
          • ctrl+d:下移半屏
          • ctrl+e:上滚一行
          • ctrl+y:下滚一行
        • 提示信息
          • Ctrl+g:显示当前行的位置信息(第几行,相对整个文本行数的百分比)(当次生效)

        • 保存并退出VIM:ZZ
      • 替换命令
        • r:替换当前字符

          R:(进入replace模式)持续替换光标所在字符,直到使用ESC退出替换模式。

      • 标记mark
        • m+[a~z] :在当前光标做标记,如ma
        • `+(mark):光标返回指定标记,如`a,则光标返回标记a的位置
        • ‘+(mark):光标返回指定标记所在的行,如’a,则光标返回到标记a所在行首
        • ‘:回到跳转前的位置
        • “:跳转到最后编辑的位置
        • 【:最后修改的开始位置
        • 】:最后修改的结束位置
        • 一些特定的标记可以跳转到其他文本,具体情况以后再做了解
    • “.”命令:重复上一次操作
      • 例:

        1:/word1  \查找单词word1

        2:cw word2  \把word1修改为word2

        3:n  \下一个匹配点

        4:.  \重复步骤2

        “.”命令重复的对象:

           普通编辑命令(普通模式下的命令),组合命令(操作符+动作);

              不能重复命令行下的命令。

    • 多线操作
      • vim file1 file2 file3...:

        可在文本间切换编辑。

            :n:进入下一文本

            :N:进入上一文本

    • 命令行模式
      • 设置命令“:”
        • 保存、退出

          • :+w :保存文本,不退出vim

            :+wq:保存并退出vim(不管有否修改,文件修改时间都会更新)

            :+x:若有修改,则保存并退出vim,若无修改,则直接退出vim

            :+q :未对文本进行修改时,可使用该命令直接退出vim

            :+q!:强制退出vim(放弃修改)

            :+e!:放弃修改并重新打开该文本

          环境设定

          • :+set nu[mber]:显示行号

            :+set nonu[mber]:隐藏行号

            :+set ruler:显示光标位置信息

            :+set noruler:隐藏光标位置信息

            :+set hlsearch:高亮匹配

            :+set nohlsearch:取消高亮匹配

            :+nohlsearch:临时取消高亮(只取消一次查询的高亮)

            :+set ic或ignorecase):忽略大小写

            :+set noic(或noignorecase):区分大小写

            当前命令忽略大小写:查找命令+c,如:/testc,查找test,忽略大小写

            :+set incsearch:在输入字符串过程中显示匹配点

            :+set nowrapscan:找到文尾后停止查找

            :+set wrapscan:恢复为到文尾后自动从头开始

          替换(查找然后替换)

          • :s/old/new/ :当前行的第一个old替换为new(old和new可以是字符也可以是字符串)

            :x,ys/old/new/g:x行到y行的所有old替换为new(注意末尾的参数g,不加参数g则只替换每行的第一个old)

                    参数“x”替换为“.”,则从当前行开始

                    参数“y”替换为“$”,则到最后一行为止

            :%s/old/new/gc:全局替换,替换文本中所有old为new(注意最后的参数“c”,即为每次替换均需要确认)

          :+e filename:vim下打开指定文本

          :+!command:vim下执行某shell命令

          :marks:查看已有的标记

          :delmarks 标记名:删除某标记

      • 查找命令
        • /+字符或字符串:在文本内从光标位置向下查找指定字符/字符串

          ?+字符或字符串:反向查找

          查找命令执行后,可使用:

                  n:查找下一个

                  N:查找上一个

                 (对于?查找,移动方向也相应变化)

                  n/N命令前也可以使用数字n来查第n个

      • 退回普通模式:ESC
    • 可视模式
      • 可视模式的功能是选择区域,选择区域后的其他操作参见其他模式!!

        v:字符选择,可进行字符的逐个选择;

                选中从进入可视模式时的光标位置到当前光标位置的内容,光标控制可以参见普通模式的控制命令以提高效率。

        V:按行选择,参照字符选择。

        Ctrl+v:列块选择

        • 选择屏幕的一个矩形区域;以进入可视模式时的光标位置为一角,以光标当前位置为对角。光标控制可以参见普通模式的控制命令以提高效率。

          o:把光标移动到矩形的对角

          O:把光标移动到水平位置的另一角

    • insert模式
      • i:在光标前插入字符

        I:在行首插入字符

        a:在光标后插入字符

        A:在行尾插入字符

        o:在光标下发插入空行

        O:在光标上方插入空行

        s:删除光标位置字符,并进入insert模式  (=c+l)

        S:删除光标所在行,并进入insert模式  (=c+c)

        C:删除光标位置到行尾的字符,并进入insert模式  (=c+$)

      • 退回普通模式:ESC

    • 操作符
      • 三种操作符

        • d:delete  把选择的内容存入寄存器。

          c:change  把选择的内容存入寄存器,使用新的内容覆盖原内容。

          y:copy  把选中的内容拷贝到寄存器中。

          •   yw:拷贝一个单词    

            ynw:拷贝n个单词

            ye: 拷贝一个单词,不包括单词结尾空格。

            yne:拷贝n个单词。

            yy:拷贝一行

            nyy:浮躁从光标所在行起的n行,注意n在最前面。

            y$:拷贝从当前位置到行尾

            yG:拷贝从当前位置到文尾

          三种操作符存入寄存器的内容都适用于p/P粘贴命令。

          三种操作符与普通命令组合的思想一致!!!

      • 操作符+动作
        • 动作:普通模式下的控制命令;动作前有操作符时,动作的作用是覆盖一段文本;动作所走过的轨迹即操作符将要操作的对象。

          如:d+w,结果是删除光标位置(含)到下以单词首(不含)直接的字符。

      • 可视模式+操作符
        • 在可视模式下选择要操作的区域,然后使用操作符进行操作
      • 操作符+文本对象
        • daw:删除一个单词,包含单词的边界(空格)。

          da【:删除[ ]整个块,包含符号本身;

          da<;da(;da{;da";da'同理

          diw:删除一个单词,不含单词的边界。

          di【:删除[ ]内的字符,不含符号本身;

          di<;di(;di{;di";di'同理

          常见文本对象:

                  ap 一个段落;  aW 一个字符串;as 一个句子; at 一个HTML标签

    VIM初级知识

  • 相关阅读:
    使用Aspose.Cell控件实现Excel高难度报表的生成(三)
    使用Aspose.Cell控件实现Excel高难度报表的生成(二)
    使用Aspose.Cell控件实现Excel高难度报表的生成(一)
    利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
    新中新身份证阅读器不显示图片
    spring security 3 自定义认证,授权示例
    Spring Security教程
    Spring Security3实现,权限动态获取
    mybatis 做 insert操作的时候返回插入的那条数据的id
    如何在spring中获取request对象
  • 原文地址:https://www.cnblogs.com/lobo/p/3473597.html
Copyright © 2020-2023  润新知