学习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。

时间: 2024-08-03 07:33:10

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

学习vi和vim编辑器(16):vim的多窗口功能(1)

vim默认是在一个窗口中编辑所有文件,在文件间移动或者移动到文件的不同部分时只显示一个缓冲区.但vim也提供了多窗口编辑功能,可以简化复合的编辑任务.这篇文章将学习如何在一个运行的vim进程里使用多窗口,包括多窗口编辑工作的初始化与启动,在窗口间移动光标,在显示区中移动窗口等. 启动多窗口编辑: 可以在打开vim时启动多窗口编辑,也可以在编辑会话中分割窗口. 从命令行(shell)启动多窗口: 默认情况下,vim为一个会话只打开一个窗口,即使打开时已经指定多个文件.如果想从命令行中打开多个窗口,

学习vi和vim编辑器(15):vim对vi的主要改进

vim对vi做了大量改进,本章将讨论在vim中添加的主要功能:包括内置帮助功能.启动与初始化选项.新的移动命令.扩展的正则表达式.扩展的撤销.自定义可执行文件等. 内置帮助功能: vim的说明文档超过10万行,几乎所有的说明都可以通过vim内置的帮助工具取得,使用它最简单的形式就是调用" :help "命令.使用内置的帮助功能需要了解vi的导航技巧,知道如何在标签间前进与后退.当光标处于某个标签上时,按下" CTRL+] "前往该标签,按下" CTRL+T

学习vi和vim编辑器(9):全局替换(2)

上一篇文章已经学习了如何通过vi编辑器中" :s "命令进行全局替换,而且可以在替换命令中使用正则表达式以进行强大的模式匹配.这一篇文章将学习模式匹配的更多范例,以进一步熟悉正则表达式. 模式匹配的范例: (1)匹配一个完整的单词:如下图所示,如果需要将文本里所有的child单词替换成为children,可能最先想到的就是下图所示的替换命令: 但是这个命令会把childrendish,Fabrichild这两个单词中的child都做替换,这不是我们想要的.替换的关键就是child要是一

学习vi和vim编辑器(13):vi同类品的功能总览

本章将学习vi同类品提供的相关功能. 它们都是我兄弟: 有许多可以自由取得的vi编辑器同类品.<vi和vim编辑器>重点介绍了vim编辑器,也简要地介绍了另外三种常用的同类品:nvi,elvis,vile.这些同类品都提供了vi之外的许多扩展功能,尽管方式可能不同,但这些同类品通常会提供相同的扩展功能.本篇文章将总体介绍这些同类品提供的扩展功能. 多窗口编辑:可以将屏幕分割成多个"窗口",从而在每个窗口编辑不同的文件,或者观察同一文件的不同部分.这使得同时在多个文件中工作更

学习vi和vim编辑器(11):高级编辑方法(2)

本章学习在vi编辑器中如何保存命令. 保存命令: vi和ex中提供了许多方法来保存一长串命令序列,这样当调用已保存的序列时,只需要输入几个字符即可. 单词缩写: 可以定义缩写,让vi在处于插入模式时替你自动将输入展开成原文.定义缩写的命令为:"  ab abbr phrase ",其中abbr就是给phrase指定的缩写.注意,在插入模式中,只有将缩写当成单个单词输入时,缩写才会被展开,单词内的abbr不会被展开.如下图所示,将"vi"定义为"visual

学习vi和vim编辑器(8):全局替换(1)

本章学习vi编辑器中的全局替换命令.通过全局替换命令,可以自动替换文件中所有出现过的某个单词.全局替换一般会用到两个ex命令:":g"(global),":s"(substitute). 替换命令: 替换命令的语法如下: " :s/old/new/ ",该命令会将当前这一行中第一个出现的old模式替换为new.其中斜线用来分隔命令的各部分(如果斜线位于该命令的最后一个字符,则该斜线可以省略). " :s/old/new/g "

学习vi和vim编辑器(17):vim的多窗口功能(2)

接着上一篇文章,继续学习vim编辑器的多窗口功能.本篇文章主要学习调整窗口尺寸.缓冲区及其与窗口的交互.分页编辑.关闭与离开窗口. 调整窗口尺寸: 在gvim中,可以使用鼠标调整窗口尺寸,只需要用鼠标点击及拖动窗口边界即可.如果是在vim中,只要开启mouse选型(" :set mouse=a "),也能够用鼠标调整窗口尺寸. 窗口尺寸调整命令: ^W=:试图调整所有窗口至相同尺寸(此命令受当前的winwidth和winheight选项值的影响).如果可用的屏幕块不能平均划分,vim也

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

UNIX系统中有很多编辑器,可以分为两种类型:行编辑器和全屏编辑器.行编辑器每次只能在屏幕中显示文件的一行,如ed和ex编辑器,全屏编辑器可以在屏幕上显示文件的一部分. vi(读为vee-eye)编辑器是UNIX_Like操作系统的标准文本编辑器.vi是 visual editor的缩写,vi编辑器属于全屏编辑器,可以在阅读文件时当场就修改,并且立刻看到修改后的结果.对于新手而言,vi编辑器难度还是非常大的,但是一旦熟悉了vi编辑器,可能就再也不想重新使用其他"简单"的编辑器了.学习v

学习vi和vim编辑器(12):高级编辑方法(3)

本章主要学习vi编辑器中的@功能,ex脚本以及ctags工具的使用. @功能: 命名缓冲区提供了另一种方法来创建"宏",即可以将复杂的命令序列保存到某个命名缓冲区中,再通过@命令执行缓冲区中的内容.举个例子,首先在插入模式中输入如下一行: 然后将该行内容删除并将其保存到" a "这个命名缓冲区中,之后便可以将光标移动到某个单词的首部,执行" @a ",就可以将缓冲区中的内容作为命令进行执行.在这个例子中就是将该单词修改为function,同时仍然