热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

试图理解Vim中删除的逻辑

如何解决《试图理解Vim中删除的逻辑》经验,为你挑选了1个好方法。

我用Google搜索了这个,但无法找到任何明确的解释.

很多人都称赞Vim是一种内部一致的语言,但我没有看到它的一致性.

由于hjkl左下:

dh 就像"删除左"一样,删除光标左侧的字符,到目前为止是有意义的.

dl 就像"删除权限"但删除了...当前字符?

dj 就像"删除"一样,我假设这只是删除下面的行,但它实际上也删除了当前行!

'dk'就像是"删除",同样我希望它只是清除上面的行,而是清除当前行和它上面的行.

谁能解释这里的逻辑是什么?我可以在同一行删除+左右处理字符,并删除+上下处理行,但为什么行为如此不一致?我在这里缺少什么逻辑?

或者它真的更像是"这里没有一致的逻辑,只是记住它"的事情?



1> Doktor OSwal..:

这是一致的.将其视为文本游标,而不是块游标,例如:

abc
 ^

你在这里用光标.对于删除命令,它实际上是这样的:

a|bc

Vim始终适用于范围.如果你没有指定一个范围,只有一个目标,那么范围的第一个点总是光标位置:所以dh从这里删除h,其h位置如下:

|abc

所以你告诉vim删除a|bc,|abc因此删除了光标位置之间的所有内容.

dl从去另一个方向a|bcab|c> - a|b|c因此,只有b将被删除.

jk运动,它是基于行的,但基本上是相同的.

因此,如果您按下dk以下情况:

abc

abc
 ^

你告诉vim删除每一行,直到你到达以下位置:

abc
 ^
abc

这与vim中的所有其他命令一致,并且是使vim如此强大的一部分.想想搜索/命令,例如:

 abc
 a|bc
 abc
 dfe
 dfe 
 dfe

如果你按d/dfe它不会只删除dfe,它将删除,直到dfe.所以你将有两个光标位置:

 abc
 a|bc
 abc
 |dfe    
 dfe 
 dfe

介于两者之间的所有内容都将被删除,您将最终得到:

 abc
 a
 dfe    
 dfe 
 dfe

每个其他运动都是这种情况.


推荐阅读
author-avatar
混事珊远_692
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有