为什么d {motion}命令与Vim中的{motion}命令不一致?
实验1
>打开Vim,并在缓冲区中只插入以下一行文本。 hello world 换句话说,按i,键入hello world并按Esc。 world 实验2 >打开Vim,并在缓冲区中只插入以下一行文本。 hello world 换句话说,按i,键入hello world并按Esc。 world 然而,我期待从h到w的一切都被删除,只剩下下面的文本。 orld 题 首先让我引用:help d下面。 *d* ["x]d{motion} Delete text that {motion} moves over [into register x]. See below for exceptions. 在实验1中,由于从h移动到o并且确保从h到o(包括h和o)的足够的一切的运动被删除。 在实验2中,由于w从w移动到w,但是从h到w(包括h和w)的一切都不被删除。为什么? dw,de和db的行为总结如下。 Command Deletes character under the Deletes character under the initial cursor position? final cursor position? ------- --------------------------- --------------------------- dw Yes No de Yes Yes db No Yes 为什么三个命令的行为不一致?
从包括光标以下的字符到包括世界的最后一个字符的所有东西,e是包含的运动。
dw从光标以下的字符中切除所有内容,并将其包括到下一个字,并排除下一个字,w是独占运动。 你的问题的答案不在于:help d(de和dw完全一致),但在:help e和:help w(e和w不必工作相同,因为,因为文档说,一个是包容性的,另一种是排他性的)。 始终记住,Vim中的一切都是关于可组合性:de不是de,它应用于e。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |