zoukankan      html  css  js  c++  java
  • 学习vi和vim编辑(3):一个简单的文本编辑器(2)

    然后文章,继续评论vi编辑简单的文本编辑命令。

    本文主要是删除的文字。复制,运动命令。

    删除文本:

    正如上一篇文章中讲过的,对于删除命令("d")也具有“(command)(TextObject)”的使用形式。当中command代表的是如删除("d"),替换("c")等命令,而TextObject指的是光标移动命令,代表command影响的文本对象范围。仅仅要记住了这一点,接下来的删除命令的组合就不须要记了:

    dw:删除光标所在的位置到该单词的结尾(w就是光标移动命令中的向后移动一个单词),注意该命令会将这个单词之后的空白也删除;

    de: 和dw命令一样,可是不会删除单词之后的空白;

    dE: 删除到包含标点符号在内的单词结尾;

    d$: 删除光标所在位置到该行结尾处。和D命令效果一样

    d0: 删除光标所在位置到该行開始处;

    dd: 不管当前光标处于该行的哪个位置。都直接删除一整行;

    d命令和光标移动命令的组合不仅仅这么多,这里就不一一举例了,仅仅要理解这样的组合的使用形式,就根本不须要记。

    这里补充两个光标移动命令:" e "和" E " ,这两个命令都将光标移动到单词结尾,可是" e "命令移动到单词本身结尾,而" E "命令移动到该单词的标点符号之后。

    假设须要删除字符,有更简单的命令。当然这些命令也能够加上数值參数:

    x:删除光标所在的字符。

    X: 删除光标之前的一个字符;

    删除文件时发生的问题:假设误删了文本,该怎样补救呢?能够使用u命令撤销上一个命令

    可是由于u仅仅会撤销近期的一个命令。因此u命令恢复仅仅能用在还没有下达其它编辑命令时。个人认为书上这里讲的有问题,由于我连续删除十行的的时候,然后接着连续按下10个u,依旧能恢复到原来的样子,例如以下图所看到的,是须要删除的十行:

    在连续按下十个" dd "命令时。再接着连续按十个" u "命令进行恢复。依旧能恢复到最原始的样子,所以认为书上讲的有问题。临时先记录下来吧。

    移动文本:

    vi编辑器中移动文本是通过“删除后再放置文本实现的”,每次须要移动文本块时。先删除该文本块,这样文本块的内容就会存储在特殊的缓冲区中。然后将光标移动到正确的位置,使用放置命令(p)将刚刚删除的文本放在新的位置。从而实现文本的移动。

    p:将缓冲区的文本放在光标之后,假设移动了一行及一行以上的文本,则是放置在光标之后的新的一行。假设移动不到一行,则将移动的文本放置在光标之后的同一行。

    P:与p命令类似,仅仅只是是将缓冲区中的文本放置到光标之前;

    须要说明的是," p "命令是将刚刚删除的文本放置到新的位置,所以一定要在做下一个删除动作前,将眼下删除的本文恢复过来否则假设做了一个影响缓冲区的编辑动作(删除,拖曳等),那么当前被删除的文本就会消失。

    类似的,能够通过" xp "命令完毕两个字母的对调。

    复制文本:

    复制文本是通过两个命令" y "(拖曳)和" p "(放置)来实现的。" y "命令也具有(command)(TextObject)的使用形式。因此能够将拖曳命令和光标移动命令进行组合使用。从而指定须要拖曳的文本范围。

    这里就不再列出拖曳命令和光标移动命令的组合了,可是有个特殊情况," Y "命令等同于" yy "命令。都表示拖曳一整行(而在删除,替换命令中,D等同于d$。C等同于c$)。

    拖曳命令和删除命令共用一个缓冲区,所以每个新的删除或拖曳命令都会覆盖缓冲区中的内容。

    反复:

    反复命令为“.”,直接反复上一个命令。

    撤销命令:

    前面提过,当出现错误操作时,能够使用" u "命令撤销上一个操作。

    U "命令能够撤销全部对同一行的编辑动作,可是须要光标还在这一行,一旦光标离开了这一行,就无法使用U命令对原先的这一行进行恢复了。

    很多其它插入文本的方法:

    上一篇文章已经讲了" i "和" a "两个命令来插入文本,事实上还有多个插入文本的命令:

    A: 在一行的结尾处加入文本。

    I:在一行的开头处加入文本;

    o:在光标所在位置的下一行加入新的一行;

    O:在光标所在位置的上一行加入新的一行;

    并且之前讲过的全部插入命令中。除了o与O命令,都能够接受数值參数。比如" 50i*ESC "就能够直接插入50个" * "字符," 10a*-ESC "就能够直接加入10个" *- "字符对。" 2r* "能够直接将当前光标之后的两个字符替换为两个" * "。

    例如以下图所看到的:按键顺序为" 50。i。*,ESC "。则出现了50个" * "。感觉并非立即就出来了,要等将近1秒钟:

    用J命令合并两行,假设在J命令前面加上数值參数,则能够指定须要合并的行数。


    本章vi编辑器命令总结:

    d。D。dd,e,E,p。y,Y,yy,.,u,U,A,I,o,O,J。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    继承
    接口
    匿名内部类
    抽象类和接口的区别
    多态
    重载和覆写的区别|this和super区别
    Visual C# 2008+SQL Server 2005 数据库与网络开发――2.2.1 变量
    Visual C# 2008+SQL Server 2005 数据库与网络开发――2.3.1 选择语句
    Visual C# 2008+SQL Server 2005 数据库与网络开发―― 2.5错误和异常处理
    Visual C# 2008+SQL Server 2005 数据库与网络开发―― 2.3 语句
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4729220.html
Copyright © 2011-2022 走看看