这是当时初学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,如:/test\c,查找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基础知识整理(附思维导图)的更多相关文章

  1. JavaScript事件基础知识总结【思维导图】

    另外附上来自Nicholas C.Zakas<JavaScript高级程序设计 第3版>中的跨浏览器兼容EventUtil对象. var EventUtil = { //注册事件 addH ...

  2. Vue基础开发入门之简单语法知识梳理(思维导图详解)

    基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)

  3. 给力Mac下的思维整理软件,思维导图软件合辑

    给力Mac下的思维整理软件,思维导图软件合辑 1.Mindjet MindManager for mac 10.0.211 经典的头脑风暴思维导图软件 最新破解Mindjet MindManager ...

  4. 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...

  5. 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(31)下一个排列 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "双指针法 ...

  6. 33、搜索旋转排序数组 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(33)搜索旋转排序数组 一 题目描述! 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 & ...

  7. 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...

  8. 35、搜索插入位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(35)搜索插入位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "无视要 ...

  9. 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(36)有效的数独 前言 1)码农三少 ,一个致力于 编写极简.但齐全题解(算法) 的博主. 2)文末附赠 价值上百美刀 资料. 一 ...

随机推荐

  1. Tomcat8-源码编译及开发

    前言 下载Tomcat8源码进行分析,最好的方式,可以编译及运行,从网上查询了很多方式,总是不能完整的运行,由于本人采用idea编辑器,所以喜欢maven的方式,所以综合了网上的多种方案,最终可以在i ...

  2. 002---第一个Hibernate示例

    Hibernate压缩文件结构 下载Hibernate压缩文档,下面为文件结构: Hibernate3.jar:为Hibernate的核心jar包: build.xml:重新打包配置文件 build. ...

  3. Cohort Analysis and LifeCycle Grids mixed segmentation with R(转)

    This is the third post about LifeCycle Grids. You can find the first post about the sense of LifeCyc ...

  4. web socket教程

    web socket是一种网络通信协议,很多网页应用中都会使用到它,比如聊天室,选票等等. 一.为什么需要WebSocket? HTTP是无连接(无连接的含义是限制每次连接只处理一个请求.服务器处理完 ...

  5. AutoMapper总结

    AutoMapper是一个对象和对象间的映射器.对象与对象的映射是通过转变一种类型的输入对象为一种不同类型的输出对象工作的.让AutoMapper有意思的地方在于它提供了一些将类型A映射到类型B这种无 ...

  6. Chrome 开发者工具断点调试(视频教程)

    很多人不了解 Chrome Dev Tools (开发者工具)的使用方法和技巧. 其中很多技能,无论是前端开发从业者,还是普通用户,了解一些还是对日常很有帮助的. 本猿定期录制.甚至根据您的需求来订制 ...

  7. JavaScript实现上传图片预览[js前端实现]

    <body> <input type="file" id="file_input" onchange="show_image()&q ...

  8. 用java来实现验证码功能(本帖为转载贴),作为个人学习收藏用

    一.关于为何使用验证的解释 在目前的网页的登录.注册中经常会见到各种验证码.其目的便是为了:防止暴力破解  .因为只要CPU性能较强,便可以在慢慢尝试密码的过程中来破解用户账号,因而导致的结果是用户信 ...

  9. cpp(第十七章)

    1.baseic_ostream<charT,traits>& write(const char_type *s,streamsize n),cout.write()第一个参数提供 ...

  10. 活动页怎么切图photoshop

    一 切固定大小的单个图片 1.用pc打开图像 2.按ctrl+A(全选) 3.点击 选择 ->变换选区 ->拉参考线(把参考线放到最中央)->按回车 ->ctrl+d(取消全选 ...