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

news/2024/10/21 14:39:27/

接着上一篇文章,继续讲解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。


http://www.ppmy.cn/news/345156.html

相关文章

对于摄像机而言同样清晰度下25p和50i画质会有什么差别?

作者:worldream 链接:https://www.zhihu.com/question/26796732/answer/135024474 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 50i其实就是50fps——从摄像机的摄像管原始信号出发 模拟电视…

对视频50p,50i 还有25p,25i区别的粗劣解释

对视频50p,50i 还有25p,25i区别的粗劣解释 首先跟你解释p和i的概念,p是逐行扫描模式,i是隔行扫描模式。 帧速率有以下几种: 60帧/秒(实际为59.94帧/秒,为方便起见,记为60帧/秒) 50帧/秒、 3…

QT中信号和槽的概念

信号就是发生什么事件,槽就是触发什么函数,所以信号与槽就是发生什么事件(比如点击某个按钮)然后就会触发某个函数 connect(信号的发送者,发送的具体信号,信号的接受者,信号的处理) connect(myButton , &a…

【服务器数据恢复】热备盘激活失败导致raid5瘫痪的数据恢复案例

服务器数据恢复环境: 一台EMC存储中数块磁盘组建了一组raid5磁盘阵列,阵列中有2块热备盘;上层采用ZFS文件系统,划分了一个lun,供sun小机使用。 服务器故障&检测: 存储在正常运行中突然崩溃无法使用&…

网络安全零基础之从原理看懂的XSS

01、XSS 的原理和分类 跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆 故将跨站脚本攻击缩写为 XSS,恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页面时&…

NaveGo:MATLAB /GNU Octave 集成导航工具箱--介绍

对于惯性导航系统(INS)的应用领域,例如无人驾驶、无人机、机器人等,高效地处理和融合来自不同传感器的数据是至关重要的。如今,我们有幸介绍一款强大的工具箱——NaveGo,这是一个使用MATLAB/GNU Octave的集…

内网隧道代理技术(三)之使用SSH端口转发

使用SSH端口转发 SSH介绍 SSH通过网络远程访问主机提供保护,可以对客户端和服务端之间的数据传输进行压缩和加密,有身份验证、SCP、SFTP、和端口转发的功能 SSH转发常用的参数介绍: 参数作用-C请求压缩所有数据-D动态转发、即socks代理-f…

APIPA是什么

文章出处:http://lelezhang.blog.51cto.com/238211/50514 APIPA(Automatic Private IP Addressing,自动专用IP寻址),是一个DHCP故障转移机制。当DHCP服务器出故障时,APIPA在169.254.0.1到169.254.255.254的私有空间内分配地址&…