gpt4 book ai didi

vim - 为什么d {motion}命令与Vim中的{motion}命令不一致?

转载 作者:行者123 更新时间:2023-12-03 09:03:26 26 4
gpt4 key购买 nike

实验1

  • 打开Vim,然后仅在缓冲区中插入以下文本行。
    hello world

    换句话说,按i,键入hello world,然后按Esc。
  • 按0将光标定位在第一行的第一个字符处。
  • 按e。光标移动到o
  • 按0将光标再次定位在第一行的第一个字符处。
  • 按de。您会看到从ho的字符已被删除。仅保留以下文本。
     world

  • 实验2
  • 打开Vim,然后仅在缓冲区中插入以下文本行。
    hello world

    换句话说,按i,键入hello world,然后按Esc。
  • 按0将光标定位在第一行的第一个字符处。
  • 按w。光标移动到w
  • 按0再次将光标置于第一行的第一个字符处。
  • 按dw。您会看到从h的字符已被删除。仅保留以下文本。
    world

    但是,我期望从hw的所有内容都将被删除,仅保留以下文本。
    orld



  • 首先让我在下面引用 :help d
                                                            *d*
    ["x]d{motion} Delete text that {motion} moves over [into register
    x]. See below for exceptions.

    在实验1中,由于e引起的运动从 h移至 o,并确保删除了从 ho的所有内容(包括 ho)。

    在实验2中,由于w的运动从 h移到 w,但是从 hw的所有内容(包括 hw)都没有删除。为什么?

    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

    为什么三个命令的行为不一致?

    最佳答案

    de剪切从光标下面的字符到该世界的最后一个字符(包括该世界的最后一个字符)的所有内容,e是一个包容性的 Action 。
    dw将从光标下的字符(包括下一个单词)(包括下一个单词)中切下所有内容,w是排他性 Action 。

    您问题的答案不是:help d(dedw与之完全一致),而是:help e:help w(ew不必相同,因为正如医生所说,其中一个是包含性的,另一个是排他性的)。

    切记,Vim中的所有内容都与可组合性有关:de不是de,它是d应用于e

    关于vim - 为什么d {motion}命令与Vim中的{motion}命令不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23041326/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com