>打开Vim,并在缓冲区中只插入以下一行文本。
hello world
换句话说,按i,键入hello world并按Esc。
>按0将光标定位在第一行的第一个字符。
>按e。光标移动到o。
>按0将光标重新定位在第一行的第一个字符处。
>按de。您将看到从h到o的字符已删除。只剩下下面的文本。
world
实验2
>打开Vim,并在缓冲区中只插入以下一行文本。
hello world
换句话说,按i,键入hello world并按Esc。
>按0将光标定位在第一行的第一个字符。
>按w。光标移动到w。
>按0将光标重新定位在第一行的第一个字符处。
>按dw。你会看到从h到的字符已被删除。只剩下下面的文本。
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
为什么三个命令的行为不一致?
dw从光标以下的字符中切除所有内容,并将其包括到下一个字,并排除下一个字,w是独占运动。
你的问题的答案不在于:help d(de和dw完全一致),但在:help e和:help w(e和w不必工作相同,因为,因为文档说,一个是包容性的,另一种是排他性的)。
始终记住,Vim中的一切都是关于可组合性:de不是de,它应用于e。
原文地址:https://www.jb51.cc/vim/389368.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。