zoukankan      html  css  js  c++  java
  • VIM

    1. 概述

    1. 标准模式下, 简单操作
      1. 移动
      2. 删除
      3. 复制粘贴
    2. 收益
      1. 熟练后, 编辑文本基本不需要鼠标操作了
    3. 思路
      1. 只讲最基本的, 避免初学时的混淆
      2. 把基本操作归类了, 方便理解

    2. 准备

    1. 一篇篇幅较长的文档
      1. 推荐 /etc/profile
      2. 退出时不保存即可
    2. 模式
      1. 标准模式
    3. <num>
      1. 表示参数是 数字
      2. 最好是 标准键盘区 的数字
    4. 案件说明
      1. ,
        1. a, b 表示先按 a, 再按 b, 当然间隔不要太长
      2. +
        1. a + b 表示 同时按 a 和 b

    2. 操作

    1. 移动

    1. 左右移动

    1. 概述

      1. 在一行内做 左右移动
    2. 基本移动

      1. 概述

        1. 左右移动
        2. 操作一次, 光标移动 一个单位
      2. 操作

        1. 左移: h
        2. 右移: l
      3. 疑问

        1. 我一次移动一个, 会不会有点慢啊
        2. 有更好的办法吗?
    3. 进阶移动

      1. 概述

        1. 一次左右移动多个单位
      2. 方式

        1. 以 单词 为单位的移动
        2. 以 长度 为单位的移动
        3. 直接跳转到 行首 或者 行尾
        4. 这些名字都好别扭, 啥时候能有个简单好记的名字
      3. 以 单词 为单位的移动

        1. 操作
          1. 左移, 定位到单词首字母: b
          2. 右移, 定位到单词首字母: w
          3. 定位到当前单词的尾字母: e
        2. 之前觉得没啥用, 现在发现真是的是一个不错的技能
        3. 这个操作, 会自动换到别的行
      4. 以 长度 为单位的移动

        1. 操作
          1. 左移 <num> 个字符: <num>, h
          2. 右移 <num> 个字符: <num>, l
      5. 直接跳转到 行首 或者 行尾

        1. 操作
          1. 跳转到行首: shift + 6;
            1. 也就是: ^
            2. 这里的行首, 指的是第一个 非空 字符
          2. 还是跳转到 行首: 0
            1. 这里的行首, 指的是 第一个字符, 包括了 空格 以及 tab
          3. 跳转到行尾: shift + 4
            1. 也就是: $
          4. 这些操作, 熟悉正则的同学基本没啥问题
      6. 行内查找

        1. 操作
          1. 向右查找
            1. f,
            2. 如果有 多个匹配字符, 按 ; 跳转到 下一个
          2. 向前查找
            1. F,
            2. 如果有 多个匹配字符, 按 ; 跳转到 上一个
    4. 疑问

      1. 我只能左右动不能上下动
        1. 这个编辑起文本来, 不也很麻烦?

    2. 上下移动

    1. 概述

      1. 上下移动文本
    2. 基本移动

      1. 概述

        1. 上下移动, 一次只移动 一行
      2. 操作

        1. 上移: k
        2. 下移: j
      3. 疑问

        1. 一次动一行, 还不如鼠标或者滚动条呢
          1. 别急, 你能想到的, VIM 的作者, 也能想到
    3. 进阶移动

      1. 概述

        1. 上下移动多行
      2. 方式

        1. 以 行数 为单位移动
        2. 直接跳转文件开头结尾
        3. 移动到 指定行
        4. 跳转屏幕内行首行尾
        5. 其他跳转
        6. 名字我也没想好, 感觉不太好记
      3. 以 行数 为单位

        1. 操作
          1. 上移<num>行: <num>, k
          2. 下移<num>行: <num>, j
        2. 怎么样, 这个思路, 是不是似曾相识
      4. 直接跳转文件开头结尾

        1. 操作
          1. 跳转到开头: g, g
            1. 你没看错, 就是 gg 思密达
          2. 跳转到结尾: shift + g
            1. 也就是 G
      5. 跳转到指定行

        1. 准备
          1. 打开行指示器

            # 进入 命令模式
            : set nu
            
          2. 操作

            1. 跳转到 行号为<num> 的行: <num> , g
      6. 跳转到屏幕内 行首 或者 行尾

        1. 操作
          1. 跳转到屏幕内行首: shift + h
            1. 也就是 H
          2. 跳转到屏幕内行尾: shift + l
            2. 也就是 L
          3. h 和 l 你俩不是管左右的吗, 怎么叛变了呢?
      7. 其他跳转

        1. 概述

          1. 其他跳转我理解的不够深入, 就不细说
          2. 大体上也是翻屏幕的
          3. 自己用用, 就能找到感觉
        2. 操作

          1. 上移一段距离: ctrl + u
            1. u = up
          2. 上移一屏: ctrl + b
            1. b = back
          3. 下移一段距离: ctrl + d
            1. d = down
          4. 下移一屏: ctrl + f
            1. f = forward
      8. 编辑位置移动

      9. 概述

        1. 在编辑过的位置之间跳转
      10. 场景

        1. 偶尔需要返回 上次编辑 的位置查看
        2. 看完了, 可能需要返回 继续编辑
      11. 操作

        1. 返回上次编辑的位置: ctrl + o

        2. 返回下次编辑的位置: ctrl + i

    2. 删除

    1. 行内删除

    1. 概述

      1. 行内的删除
    2. 基本删除

      1. 概述

        1. 删除的基本操作
        2. 一次只删除一个字符
      2. 操作

        1. 删除光标右边字符: x
        2. 删除光标左边字符: shift + x
          1. 也就是 X
      3. 疑问

        1. 我一次删一个, 删完得删到什么时候
          1. 还不如鼠标来的快
          2. 没关系, 还有补充道
    3. 进阶删除

      1. 概述

        1. 删除多个字符
        2. 删除光标到 行首 / 行尾
      2. 删除多个字符

        1. 操作
          1. 删除光标右边 <num> 个字符: <num>, x
          2. 删除光标左边 <num> 个字符: <num>, shift + x
      3. 删除到 行首 / 行尾

        1. 操作
          1. 删除到行首: x, shift + 6
            1. 也就是: x, ^
          2. 删除到行尾: x, shift + 4
            1. 也就是: x, $
      4. 疑问

        1. 我一次删一行, 也得删好久
          1. 别急, 后面还有解决方案

    2. 行级删除

    1. 概述

      1. 行级别的删除
      2. 所有的删除, 都包含光标所在的行
    2. 删除一行

      1. 操作
        1. 删除一行, 且 不留空行: d, d
          1. 后面的行, 会顶上来
        2. 删除一行, 且 留下空行: shift + d
          1. 也就是 D
          2. 原行位置, 会变为 空行
    3. 删除多行

      1. 操作

        1. 删除光标下的 <num> 行: d, <num>, d
          1. 总共删除 num 行
      2. 其他操作

        1. 这块操作有能力的同学可以掌握
        2. 个人感觉有点别扭, 但是能用
          1. 删除 光标所在行 上方<num>行 : d, <num>, k
          2. 删除 光标所在行 下方<num>行 : d, <num>, j
          3. 总共删除了 num + 1 行
            1. 相当于确定了删除的边界
            2. 并且连边界也一并删除
            3. 而且删除后, 也不留空行
    4. 删除到 开头 / 结尾

      1. 操作
        1. 删除到开头: d, g, g
        2. 删除到结尾: d, shift + g

    3. 复制粘贴

    1. 概述
      1. 复制与粘贴的操作

    1. 复制

    1. 概述

      1. 这里只讲整行的复制
      2. 复制行内内容, 需要到 v 模式下
      3. 复制内容包含光标所在行
    2. 复制一行

      1. 操作
        1. 复制一行: y, y
    3. 复制多行

      1. 操作
        1. 复制 <num> 行: y, <num>, y

    2. 粘贴

    1. 概述

      1. 有复制, 怎么能没粘贴
    2. 粘贴一次

      1. 操作
        1. 粘贴到 光标所在行下: p
        2. 粘贴到 光标所在行上: shift + p
          1. 也就是 P
    3. 粘贴多次

      1. 操作
        1. 粘贴到 光标所在行下 <num> 次: <num>, p
        2. 粘贴到 光标所在行上 <num> 次: <num>, shift + p

    3. 剪切

    1. 概述
      1. 什么, 你问我如果想剪切怎么办
        1. 这确实是个值得思考的问题
        2. 其实, 之前的 d,d 删除命令, 就是剪切
        3. 删除的内容, 可以通过粘贴命令, 粘贴出来
        4. 和 y 命令公用剪贴板

    3. 其他

    1. 感觉写的东西虽然乱, 但其实不少
      1. 思路没有之前清晰
    2. 本来还想写 标准模式 到 插入模式 的切换
      1. 感觉写的有点多, 就算了
      2. 这个内容, 以后再讲吧
      3. 这些东西讲完, VIM 的常规操作, 就剩个 命令模式搜索, 以及 多窗口应用 了
        1. 再讲自己就没东西了
        2. 得补
    尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出
  • 相关阅读:
    定时器
    Eclipse 启动时闪退问题解决方案
    VMware下安装centos6.7的步骤
    bin/mysqld: error while loading shared libraries: libnuma.so.1: 安装mysql
    CentOS系统bash: groupadd: command not found问题
    MyBatis Sql语句中的转义字符
    Postgresql 正则表达式
    JS生成GUID方法
    jqGrid 事件
    jqgrid 事件说明
  • 原文地址:https://www.cnblogs.com/xy14/p/10570459.html
Copyright © 2011-2022 走看看