然后文章,继续评论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,依旧能恢复到原来的样子,例如以下图所看到的,是须要删除的十行:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVjaGVuY29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

在连续按下十个" 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。

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

学习vi和vim编辑(3):一个简单的文本编辑器(2)的更多相关文章

  1. python使用wxPython创建一个简单的文本编辑器。

    ubuntu下通过'sudo apt-get install python-wxtools'下载wxPython.load和save函数用于加载和保存文件内容,button通过Bind函数绑定这两个函 ...

  2. 学习vi和vim编辑(4):高速移动定位

    平时.第一步是编辑文本需要做将光标移动到需要编辑.因此,根据需要,将光标移动到目标数字键来编辑文本的速度在一定程度上. 一篇文章.主要介绍怎样高速移动光标. 依据屏幕来移动: 在一个有几千行文本的文件 ...

  3. 一个简单的文本编辑器。(是在DEV C++下写的)

    //头文件// main.h #define CM_FILE_SAVEAS 9072 #define CM_FILE_EXIT 9071 #define CM_FILE_OPEN 9070 #defi ...

  4. C++ 容器的综合应用的一个简单实例——文本查询程序

    C++ 容器的综合应用的一个简单实例——文本查询程序 [0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例.通过实现一个简单的文本查 ...

  5. 原生JS实现简单富文本编辑器2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 原生JS实现简单富文本编辑器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 学习vi和vim编辑器(1):vi文本编辑器

    UNIX系统中有非常多编辑器.能够分为两种类型:行编辑器和全屏编辑器.行编辑器每次仅仅能在屏幕中显示文件的一行,如ed和ex编辑器.全屏编辑器能够在屏幕上显示文件的一部分. vi(读为vee-eye) ...

  8. QML学习笔记(五)— 做一个简单的待做事项列表

    做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...

  9. GNU Make 学习系列一:怎样写一个简单的Makefile

    编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果.尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题.大多数的开发者都经历过这 ...

随机推荐

  1. Java与C/C++有什么区别

    JDK包含JRE, 1-08: Helloworld: 01-08:classpath配置: 运行其它目录下的class文件: classpath一般不加分号,只找classpath下的文件: 后面加 ...

  2. Maven, Ivy, Grape, Gradle, Buildr, SBT, Leiningen, ant

    Maven, Ivy, Grape, Gradle, Buildr, SBT, Leiningen, ant

  3. cfa,cpa,

    CFA考试内容分为三个不同级别,分别是方式是Level I.Level II和Level III. 考试在全球各个地点统一举行,每个考生必须依次完成三个不同级别的考试.CFA资格考试采用全英文,候选人 ...

  4. 《Javascript高级程序设计》读书笔记之闭包

    闭包 function createComparisonFunction(propertyName) { return function (object1, object2) { var value1 ...

  5. python之字符串的分割和拼接

    关于string的split 和 join 方法 对导入os模块进行os.path.splie()/os.path.join() 貌似是处理机制不一样,但是功能上一样. 1.string.split( ...

  6. android面试题 不单单为了面试也是一次非常好的学习

    以以下试题都是在网上找的总结出来的,谢谢大家的分享!希望,我们共同进步,找到自己梦想的公司: 1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dal ...

  7. accept功能

    accept()功能 系统调用 accept() 这将是一个有点陌生的地方! 你可以想象发生 这种事情:这是非常远离你通过倾听 (listen()) 的port连接 (connect()) 你的机器. ...

  8. linux经常使用解压缩命令

    1.tar.gz 解压 tar -zxvf source.tar.gz 压缩 tar -zcvf target.tar.gz source1 source2 2.bz2 解压 tar -jxvf so ...

  9. Android含文档server结束(client UI接口异步请求的一部分)三

    在本文中,AsyncTask为了实现异步请求,详细代码如下所示的: public class downloadActivity extends Activity { private TextView ...

  10. CentOS 安装memcached

    一,安装libevent 安装位置 /usr/lib #tar -zxvf libevent-2.0.21-stable.tar.gz # cdlibevent-2.0.21 # ./configur ...