• [转]vi指令详细表


    (一)、基本编辑指令:
    新增 (append)
    a : 从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
    A: 从光标所在列最後面的地方开始新增资料。
    插入 (insert)
    i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
    I : 从光标所在列的第一个非空白字元前面开始插入资料。
    开始 (open)
    o : 在光标所在列下新增一列并进入输入模式。
    O: 在光标所在列上方新增一列并进入输入模式。
    x: 删除光标所在字符。
    dd : 删除光标所在的行。
    r : 修改光标所在字元,r 後接著要修正的字符。
    R: 进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。
    s: 删除光标所在字元,并进入输入模式。
    S: 删除光标所在的行,并进入输入模式。
    (二)、光标移动指令:
    由於许多编辑工作是藉由光标来定位,所以 vi 提供许多移动光标的方式,这个我们列
    几张简表来说明(这些当然是指令模式下的指令):
    ┌—————┬—————————————┬—————┐
    │指令        │说明                            │功能键     │
    ├—————┼—————————————┼—————┤
    │0           │移动到光标所在行的最前面   │[Home]   │
    ├—————┼—————————————┼—————┤
    │$           │移动到光标所在行的最後面   │[End]      │
    ├—————┼—————————————┼—————┤
    │[CTRL][d] │向下半页                      │              │
    ├—————┼—————————————┼—————┤
    │[CTRL][f] │向下一页                    │[PageDown]│
    ├—————┼—————————————┼—————┤
    │[CTRL][u] │向上半页                         │          │
    ├—————┼—————————————┼—————┤
    │[CTRL][b] │向上一页                      │ [PageUp]│
    └—————┴—————————————┴—————┘
    ┌——┬—————————————————┐
    │指令│说明                                       │
    ├——┼—————————————————┤
    │H   │移动到视窗的第一行                     │
    ├——┼—————————————————┤
    │M   │移动到视窗的中间行                     │
    ├——┼—————————————————┤
    │L    │移动到视窗的最後行                     │
    ├——┼—————————————————┤
    │b    │移动到下个字的第一个字母             │
    ├——┼—————————————————┤
    │w   │移动到上个字的第一个字母             │
    ├——┼—————————————————┤
    │e   │移动到下个字的最後一个字母           │
    ├——┼—————————————————┤
    │^   │移动到光标所在列的第一个非空白字元│
    └——┴—————————————————┘
    ┌——┬———————————————————┐
    │指令│说明                                  │
    ├——┼———————————————————┤
    │n-  │减号移动到上一列的第一个非空白字元     │
    │     │前面加上数字可以指定移动到以上 n 行    │
    ├——┼———————————————————┤
    │n+  │加号移动到下一列的第一个非空白字元     │
    │     │前面加上数字可以指定移动到以下 n 行    │
    ├——┼———————————————————┤
    │nG  │直接用数字 n 加上大写 G 移动到第 n 行 │
    └——┴———————————————————┘
    注:这里的n不是字母,代指数字,即100-表示上移100行,300G表示移到第300行
    ┌————┬———————————————┐
    │指令     │说明                                  │
    ├————┼———————————————┤
    │fx       │往右移动到 x 字元上               │
    │Fx       │往左移动到 x 字元上              │
    ├————┼———————————————┤
    │tx       │往右移动到 x 字元前               │
    │Tx       │往左移动到 x 字元前              │
    ├————┼———————————————┤
    │;         │配合 f&t 使用,重复一次         │
    │,         │配合 f&t 使用,反方向重复一次 │
    ├————┼———————————————┤
    │/string  │往右移动到有 string 的地方     │
    │?string  │往左移动到有 string 的地方     │
    ├————┼———————————————┤
    │n        │配合 /&? 使用,重复一次         │
    │N        │配合 /&? 使用,反方向重复一次 │
    └————┴———————————————┘
    ┌————┬———————————————————┬——————————┐
    │指令     │说明                                            │备注                     │
    ├————┼———————————————————┼——————————┤
    │n(       │左括号移动到句子的最前面                   │句子是以                │
    │          │前面加上数字可以指定往前移动 n 个句子  │! . ? 三种符号来界定 │
    │n)       │右括号移动到下个句子的最前面              │                          │
    │          │前面加上数字可以指定往後移动 n 个句子 │                          │
    ├————┼———————————————————┼——————————┤
    │n{       │左括弧移动到段落的最前面                   │段落是以               │
    │          │前面加上数字可以指定往前移动 n 个段落 │段落间的空白列界定   │
    │n}       │右括弧移动到下个段落的最前面             │                          │
    │          │前面加上数字可以指定往後移动 n 个段落 │                          │
    └————┴———————————————————┴——————————┘
    (三)、更多的编辑指令
    这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如 dw 是由删除指令 d 与范围 w 所
    组成,代表删除一个字 d(elete) w(ord) 。
    指令列表如下:
    d 删除(delete)
    y 复制(yank)
    p 放置(put)
    c 修改(change)
    范围可以是下列几个:
    e 光标所在位置到该字的最後一个字母
    w 光标所在位置到下个字的第一个字母
    b 光标所在位置到上个字的第一个字母
    $ 光标所在位置到该行的最後一个字母
    0 光标所在位置到该列的第一个字母
    ) 光标所在位置到下个句子的第一个字母
    ( 光标所在位置到该句子的第一个字母
    } 光标所在位置到该段落的最後一个字母
    { 光标所在位置到该段落的第一个字母
    说实在的,组合这些指令来编辑文件有一点点艺术气息。不管怎麽样,它们提供更多编辑文字的能力。值得
    注意的一点是删除与复制都会将指定范围的内容放到暂存区里,然後就可以用指令 p 贴到其它地方去,这
    是 vi 用来处理区段拷贝与搬移的办法。
    某些 vi 版本,例如 Linux 所用的 elvis 可以大幅简化这一坨指令。如果稍微观察一下这些编辑指令
    就会发现问题其实是定范围的方式有点杂,实际上只有四个指令罢了。指令 v 非常好用,只要按下 v 键,
    光标所在的位置就会反白,然後就可以移动光标来设定范围,接著再直接下指令进行编辑即可。
    对於整行操作, vi 另外提供了更方便的编辑指令。前面曾经提到过删除整行文字的指令 dd 就是其中一个
    ;cc 可以修改整行文字;而 yy 则是复制整行文字;指令 D 则可以删除光标到该列结束为止所有的文字。
    (四)、文件操作指令
    文件操作指令多以 : 开头,这跟编辑指令有点区别。
    :q 结束编辑(quit)
    :q! 不存档而要放弃编辑过的文件。
    :w 保存文件(write)其後可加所要存档的档名。
    :wq 即存档後离开。
    ZZ 功能与 :wq 相同。
    :x 与:wq相同

  • 相关阅读:
    Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the same entity解决方法
    基于注释配置bean和装饰bean
    Oracle 11g+oracle客户端(32位)+PL/SQL develepment的安装配置
    SpringData JPA的学习笔记之环境搭建
    Maven+struts2+spring4+hibernate4的环境搭建
    springmvc集成Ueditor插件实现图片上传2、
    c博客作业函数
    C语言博客作业2循环结构
    C语言第0份作业
    c博客作业分支、顺序结构
  • 原文地址:https://www.cnblogs.com/bo083/p/2294937.html
Copyright © 2020-2023  润新知