然后文章,继续评论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. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...

  2. Oracle单表的复杂查询

    Oracle单表的复杂查询 select avg(sal),max(sal),deptnofrom empgroupby deptno; orderby deptno; 查询工资高于500或者是岗位为 ...

  3. [WPF] 使用Grid与GridSplitter排版布局

    原文:[WPF] 使用Grid与GridSplitter排版布局 前言 在開發應用程式時,一個很重要的工作項目就是設計使用者介面的排版布局.WPF中所提供的Grid控制項,讓開發人員擁有將版面分割為欄 ...

  4. 用KnockoutJS实现ToDoMVC代码分析

    体验地址 Knockout 版todo web app在线体验 http://todomvc.com/examples/knockoutjs/ 源码地址 项目源码地址,此地址包含了各种JS框架实现的t ...

  5. Flash-使用变形面板制作花朵

    在Flash中利用"变形"面板的"重置选取和变形"button(在变形面板右下角),能够自己主动将对象进行创造性变形地画图 步骤: (1)先导入一幅图像 (2) ...

  6. 【Unity Shaders】使用Unity Render Textures实现画面特效——画面特效中的亮度、饱和度和对照度

    本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...

  7. VirtualBox安装ubuntu14.04和文件共享

    因为机器的VMware使用很卡,占用更多的内存,所以我想,以取代VirtualBox.已安装ubuntu14.04使用与VMware在相同的. VirtualBox下载链接:https://www.v ...

  8. add-apt-repository

    也许你早已注意到,我们在介绍软件的时候,在安装这块一般都提供 PPA 源安装方式,这是一种快速方便的软件安装方法,但对于一些新手来说,对 PPA 并不是很熟悉,下面我们就详细介绍一下. # 我们先了解 ...

  9. jquery 如何动态绑定传递到后台上传组件参数

    $("#upload_photo").uploadify({ 'auto' : false, 'method' : "post", 'height' : 20, ...

  10. java中间==、equals和hashCode差额

    java于==.equals().hashCode()和比较两个对象. 关于== ==是easy理解的.java设计java就是要比較两个对象是不是同一个对象. 对于引用变量而言.比較的时候两个引用变 ...