[Vim 精粹] :文本对象: 从 1 到 N - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
banxi1988
V2EX    Vim

[Vim 精粹] :文本对象: 从 1 到 N

  •  1
     
  •   banxi1988 2018-10-05 21:17:34 +08:00 3834 次点击
    这是一个创建于 2595 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Vim 精粹开篇词

    一直以来想写一个关于 Vim 精粹的文章。 但是本系统文章并不是入门指引,而是精粹总结。 同时本系列文章主要参考自《 Vim 实用技巧》一书。

    文本对象: 从 1 到 N

    以前我的编辑对象主要是 字符。 当打错一个单词,我们有两种选择。 1 )狂按退格键,以删除输入的单词。 2 )用鼠标选中要删除单词,然后删除。

    不管第一种选择还是第二种选择都不够优雅。导致这种问题的根本原因是,我们编辑对象的基本元素 字符. 为了扩大编辑对象的范围,我们不得不求助于鼠标。而使用鼠标,则意味着中断放在键盘上的右手。选中要编辑的范围然后再操作。

    文本对象

    基本文本对象

    Vim 之所以能极大的提高编辑效率,基本一点就是因为 Vim 的编辑的基本元素不仅仅是 字符 ,而是文本对象。当然字符也是一个文本对象。 Vim 中文本对象,正是我们一般所认为的文本元素的划分。也就是如下文本块。

    • wword 单词([a-zA-Z0-9_])
    • WWORD 字串(以空格分隔)
    • ssentence 句子
    • pparagraph 段落

    面向程序员的文本对象

    Vim 提供了基于代码块的文本对象。主要是以匹配如下符号对 (){}、[]<><tagname></tagname>` 的文本对象。

    • () 圆括号代码块,显然对于编辑函数的参数,无论形参还是实参都很有用。
    • {} 用于编辑 C 系风格的代码块,非常合适。
    • [] 用于编辑数组或列表中的元素,非常合适。
    • <> 用于编辑比如 C++,Java 等的模板或者泛型参数,是非常合适。或者编辑 XML ( HTML ) 开始标签。
    • <tagName></tagName> 显然是用来编辑 XML ( HTML ) 标签的。此文本对象以字符 t 表示。

    文本对象的里和外。

    <tagName></tagName> 文本对象为例。

    <blockquote> Vim is the *光标* best editor</blockquote> 

    当我们的光标在 <blockquote> 元素块的中间时,我们想删除元素块的内容。我们可以使用,

    • it 表示 <tagName></tagName> 文本块里面包含的内容。即 Vim is the best editor
    • at 表示 `整个文本块. 即
      <blockquote> Vim is the best editor</blockquote> 

    其中 i 可以理解为 inside, a 可以理解为 aroundall

    而对于基本的文本对象来说,比如

    • aw 表示当前单词及后面的一个空格。
    • aW 表示当前字串及后面的一个空格。
    • as 表示当前句子及后面的一个空格。
    • ap 表示当前的段落及后面的一个空行。
    7 条回复    2018-12-25 08:34:37 +08:00
    shuperjolly
        1
    shuperjolly  
       2018-10-06 08:18:17 +08:00 via iPhone
    收藏先,养肥了看
    qinfensky
        2
    qinfensky  
       2018-10-06 08:19:05 +08:00
    目前在使用 VSCode,有什么优点能吸引人切换到 Vim 吗?对这个的了解不多。
    banxi1988
        3
    banxi1988  
    OP
       2018-10-06 08:21:56 +08:00   1
    @qinfensky 事实上我也是用 VS Code 的。VS Code 上用 Vim 插件即可。
    所以我这里的 Vim 主要是指其背后代表的一种高效的编辑方式,逻辑思想,或者说思想。
    Vim 编辑思想,嗯。
    iwfan
        4
    iwfan  
       2018-10-06 09:01:02 +08:00 via iPhone
    写的很好,收藏了。什么时候讲讲寄存器 呢。
    yujincheng08
        5
    yujincheng08  
       2018-10-06 11:45:49 +08:00 via Android
    马克
    feelinglucky
        6
    feelinglucky  
       2018-10-06 22:52:23 +08:00
    搞个 github 的项目呗,一起写
    nG29DOMuRYTWfcSr
        7
    nG29DOMuRYTWfcSr  
       2018-12-25 08:34:37 +08:00 via Android
    收藏一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3872 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 00:56 PVG 08:56 LAX 16:56 JFK 19:56
    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