每日vim插件--vim中的文本对象及相关插件
最近在个人博客上 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中的文本对象及相关插件的更多相关文章
- [Eclipse插件] Eclipse中如何安装和使用GrepCode插件
Java是开源的世界,如何快速的搜索到你需要的Java源码呢?2009年7月17日,GrepCode团队发布了一个有趣的 Java源码搜索引擎-GrepCode .与现有的各种搜索引擎相比,Java源 ...
- 通常Struts框架会自动地从action mapping中创建action对象
开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...
- javascript 学习笔记之JQuery中的Deferred对象
Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...
- vim中对文本的选择
本文主要解说vim中对文本的选择,vim中选择文本分为: (1)选择字符 ---- 命令行模式下输入小写v (2)选择行 ---- 命令行模式下输入大写V (3)选择块 ---- ...
- 【Linux】中默认文本编辑器 vim 的入门与进阶
Linux 基本操作 vim 篇 vim 简介 vim 是 Linux 上最基本的文本编辑工具,其地位像是 Windows 自带的记事本工具,还要少数的 Linux 系统自带 leafpad 编辑器, ...
- Vim,一个开放源代码的文本编辑器(转)
Vim,http://linux.21ds.net/2002/03/13/0268dc26fd9c725c23dae68d797935f3/ 作者:Bram Moolenaar 翻译:slimzhao ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- 无插件VIM编程技巧(网摘)
无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...
- Linux下使用vim命令编辑与修改文本内容
输入 vim --help VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jul 26 2017 20:13:43) 用法: vim [参数] [文件 .. ...
随机推荐
- Investigating Your RAM Usage
转载自:http://developer.android.com/intl/zh-cn/tools/debugging/debugging-memory.html Because Android is ...
- Android中使用POI加载与显示word文档
最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...
- 发现新大陆-JMX
今天接触到这个东西,觉得好有趣,可以用很多第三方的显示层jar包直接在UI界面上操作指定的java对象,网上将这个东西的也挺多的,我个人觉得这个比webServer还强大了.webserver只是公布 ...
- JS思维之路菜鸟也能有大能量(1)--模拟push
因为本系列文章属于思维类,所以不做基础方法的讲解. 任务:首先我定义了一个变量var arr = [0,1,2,3,4,5];我现在想模拟push方法在这个数组的5后面加东西,我们应该怎么做?给你5分 ...
- linux 硬盘分区,分区,删除分区,格式化,挂载,卸载笔记
linux 虽然一直都有在玩,但是对硬盘操作确实不是很熟悉今天有空,就整理了下. 1, 创建分区 先查看下是否有磁盘没有分区 fdisk -l 其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没 ...
- teamcity设置
建立项目后首先要设置svn地址,并绑定 名字随便起 url是svn的地址 之后来做build step 有一个按钮可以自动检测,一般都能检测出来 执行这个似乎需要代理装什么东西 可以查看目前代理有那些 ...
- android 代码控制控件的长宽,小技巧
要在代码里改变ImageView 的长宽,如图 通过拿到contentImage这对象的控件参数,再去改变,再设置 , 上图的contentImage为ImageView对象: 而这里 要提醒的是,L ...
- 直接拿来用!最火的Android开源项目
GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...
- Android的init过程(二):初始化语言(init.rc)解析
Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析i ...
- js页面跳转参考代码大全
整理一下JS页面跳转参考代码 第一种: <script language=/"javascript/" type=/"text/javascript/&qu ...