最近在个人博客上 http://foocoder.com  每天都会介绍一个vim插件,想起来园子也好久没更新了,也来更新一篇。

今天按读者留言的要求,介绍下文本对象。同时还会介绍我在用的几个文本相关的插件.

所谓文本对象,简单来说就是以一定标准分隔符来标识一段文本,比如一个单词,一句话,一段话。

使用文本对象后你会发现你在vim中的移动和操作速度提升了不是一点半点。

在vim中编辑命令的结构如下:

 <number><command><text object or motion>

可以看到文本对象和motion的操作是完全一致的,第一个是数字,比如3w,就向前移动三个单词。

文本对象大致有以下几种:

w  s  p '' ""  <>  []  ()  {} <tag>

其中w表示word,s表示句子,p表示段落,其他的就是昨天介绍过的包围符号,标签用t表示。

文本对象的操作范围有两种,一种用i表示,是inner的意思,即不包括单词边上的空格符,亦或是<包围符号本身。一种用a表示,是arround的意思,和i相反,使用a就包括了空格符或者包围符号本身。

文本对象的编辑命令就是vim中的几个常用编辑命令,分别是

`y:复制`,`d:删除`,`c:替换`,`v:选中`

说的有点多了,来几个例子相信大家就立刻理解了。(例子中*都是光标所在位置)

比如:

<*h2>Sample Title</h2>

按下cit,文本变为:

<h2>*</h2>

再比如:

  console.log(“stay hungry,” + “stay *foolish”)

按下da",文本变为:

console.log("stay hungry," +*)

再按下di),文本变为:

console.log()

比如

Hello Worl*d

按下diw,文本变为:

Hello

很容易理解是不是?有没有发现为什么说文本对象会非常方便了?无论光标在文本的哪个位置,都可以直接操作整个文本。体验箭步如飞的感觉吧。

vim还允许使用脚本来自定义文本对象,这就是我们今天要介绍的插件了,这些插件自定义了一些文本对象。

1.CamelCaseMotion

该插件是把驼峰词语的每个单词分开,举个例子:

get*ElementsByClassName

按下di,w,则文本变为:

getByClassName

非常方便。

2.argtextobj

该插件定义了函数内的参数文本对象。比如:

foo(text, ti*mes, option) {}

按下daa,则文本变为:

foo(text, option) {}

今天暂时就介绍到这里。都快0点了,赶紧发出来。任何问题都可以回复给我。

每日vim插件--vim中的文本对象及相关插件的更多相关文章

  1. [Eclipse插件] Eclipse中如何安装和使用GrepCode插件

    Java是开源的世界,如何快速的搜索到你需要的Java源码呢?2009年7月17日,GrepCode团队发布了一个有趣的 Java源码搜索引擎-GrepCode .与现有的各种搜索引擎相比,Java源 ...

  2. 通常Struts框架会自动地从action mapping中创建action对象

    开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...

  3. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  4. vim中对文本的选择

    本文主要解说vim中对文本的选择,vim中选择文本分为: (1)选择字符  ----  命令行模式下输入小写v (2)选择行     ----  命令行模式下输入大写V (3)选择块     ---- ...

  5. 【Linux】中默认文本编辑器 vim 的入门与进阶

    Linux 基本操作 vim 篇 vim 简介 vim 是 Linux 上最基本的文本编辑工具,其地位像是 Windows 自带的记事本工具,还要少数的 Linux 系统自带 leafpad 编辑器, ...

  6. Vim,一个开放源代码的文本编辑器(转)

    Vim,http://linux.21ds.net/2002/03/13/0268dc26fd9c725c23dae68d797935f3/ 作者:Bram Moolenaar 翻译:slimzhao ...

  7. 无插件Vim编程技巧

    无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim  相信大家看过<简明Vim教程& ...

  8. 无插件VIM编程技巧(网摘)

    无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...

  9. Linux下使用vim命令编辑与修改文本内容

    输入 vim --help VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jul 26 2017 20:13:43) 用法: vim [参数] [文件 .. ...

随机推荐

  1. JavaScript备忘录(1)——内置类型

    JavaScript有一些内置类型,还有很多常用的内置的方法,本文稍作总结,以备查阅. 值类型 我的理解,值类型是分配在栈上的,而引用类型(当然也包括引用类型内部的值类型)是分配在堆上的.值类型是不可 ...

  2. Sass学习之路:注释、变量以及导入

    前言 由于.sass不兼容CSS代码,所以以下内容完全使用.scss的语法. Sass注释 Sass中除了提供CSS中的标准注释之外,还提供了一种静默注释: /* 我是标准注释 */ // 我是静默注 ...

  3. 编写高质量JS代码的68个有效方法(十一)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  4. 说说你所熟知的MSSQL中的substring函数

    说说你所熟知的MSSQL中的substring函数 *:first-child { margin-top: 0 !important; } body>*:last-child { margin- ...

  5. DDD:如何更好的使用值对象

    背景 大师们让我们多使用“值语义”的对象(并非一定是是值对象),我们工作中也没有少使用(int.bool.date等等),只是大多数人都没有多的自定义“值语义”的类型(我也其中之一),本文不说其它的, ...

  6. Tips11:用[Rang]来限制Inspector中的变量

    我们在写脚本的过程中可能会用到很多Public变量,如INT型,Float型,这些变量在项目中可能有着一个默认的实际范围,如血量不能为负数,而且int float本来就是有一个范围的,如果对这些变量加 ...

  7. Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制

    今天分享一些基础控制的脚本 1.位置(Position): 控制位置很简单,首先要知道要在xyz哪几个轴上移动,确定好后定义代表着那些轴的移动变量,速度(m_speed在函数外定义为全局变量)然后通过 ...

  8. 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】

    最近一直用ASP.NET MVC 4.0 +LINQ TO SQL来开发设计公司内部多个业务系统网站,在这其中发现了一些问题,也花了不少时间来查找相关资料或请教高人,最终都还算解决了,现在我将这些问题 ...

  9. Redis设计与实现-持久化篇

    redis数据库 默认16个数据库,每个数据库由一个redis.h/redisDb结构表示,此结构里的dict字典与expires字典,其中dict保存了该库所有键值对,此字典即为键空间:expire ...

  10. Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)

    Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)  1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...