学习到了 Vim 中的一个新概念: exclusive 和 inclusive - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdhao
V2EX    Vim

学习到了 Vim 中的一个新概念: exclusive 和 inclusive

  •  
  •   jdhao 2019-05-18 08:22:29 +08:00 5317 次点击
    这是一个创建于 2408 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果你经常使用 dwde,你会发现两者的表现不太一致,另外 db 并不能删除当前光标所在处的字符,很蛋疼,为什么是这样呢?原来和 Vim 中一个动作的 exclusivity 有关。

    认真学习了一下,写了一篇短文: https://jdhao.github.io/2019/05/18/nvim_exclusive_inclusive_motion/

    不知道有多少人不知道的,欢迎讨论。。

    14 条回复    2019-05-18 21:31:43 +08:00
    vitovan
        1
    vitovan  
       2019-05-18 08:28:13 +08:00 via Android
    学习了,虽然没看太明白,VIM 太难了
    jdhao
        2
    jdhao  
    OP
       2019-05-18 08:31:39 +08:00
    @vitovan 哪里没明白。。这个这是一个简单的概念哈~
    carlclone
        3
    carlclone  
       2019-05-18 08:55:01 +08:00 via Android
    通常使用 ciw 删除和修改
    conanforever22
        4
    conanforever22  
       2019-05-18 08:58:47 +08:00   1
    学习了, 平时用 df{char} / dt{char} , 看 help 发现 f{char}/t{char}都是 inclusive, 加了 v 可以转换为 exclusive
    thedrwu
        5
    thedrwu  
       2019-05-18 09:03:05 +08:00 via Android
    手指对着空气比划了一下才想起来 dw 和 de 有什么区别。
    跟形码输入汉字一样,成为了肌肉记忆之后看着字母不知道它要干什么。。
    jdhao
        6
    jdhao  
    OP
       2019-05-18 09:16:20 +08:00 via Android
    @conanforever22 自带的 f 只能找一个字符,不精确,我用 vim-sneak 代替,可以找两个字符,精确度大大提升,基本上三个按键跳到眼睛能看到的任何地方
    shaco
        7
    shaco  
       2019-05-18 09:17:19 +08:00   1
    @jdhao #2 为啥我觉得 de 才是 exclusive,dw 才是 inclusive。因为根据这两个单词的意思,exclusive 的意思应该是把最后一个字符排除在外,也就是不删除最后一个字符。而 inclusive 应该是删除最后一个字符
    jdhao
        8
    jdhao  
    OP
       2019-05-18 09:27:19 +08:00 via Android   1
    @shaco 你还没理解正确,以 de 为例,e 跳到 hello 的 o 处,因为 e 是 inclusive,所以从 h 到 o 的所有字符都被删除了,如果 e 是 exclusive,那么字符 o 不会被删除
    vitovan
        9
    vitovan  
       2019-05-18 10:09:31 +08:00 via Android   1
    @shaco
    @jdhao

    我把这个贴到这里,可能会帮助理解:

    ```
    Many commands that text are made from an operator and a motion.
    The format for a follows:

    d motion

    Where:
    d - is the delete operator.
    motion - is what the operator will operate on (listed below).

    A short list of motions:
    w - until the start of the next word, EXCLUDING its first character.
    e - to the end of the current word, INCLUDING the last character.
    $ - to the end of the line, INCLUDING the last character.
    ```
    vitovan
        10
    vitovan  
       2019-05-18 10:11:25 +08:00 via Android
    然后,我想我理解了,谢谢楼主。
    jdhao
        11
    jdhao  
    OP
       2019-05-18 10:20:59 +08:00 via Android
    @vitovan 有 vim 的话上手用一下,结合文档,就比较容易明白这个概念
    mrvon
        12
    mrvon  
       2019-05-18 11:07:50 +08:00
    仔细一想, dw, de 两个命令中,w, e 两个 motion 与 d 结合之后,行为不一致了。为了适应使用者的直觉,所以搞了 exclusive 和 inclusive。感谢分享。
    mrcode
        13
    mrcode  
       2019-05-18 15:13:52 +08:00
    一般习惯用 df* 和 dt*
    jciba5n4y6u
        14
    jciba5n4y6u  
       2019-05-18 21:31:43 +08:00
    dw 经常用,de 没用过。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2693 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 03:55 PVG 11:55 LAX 19:55 JFK 22:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86