每日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 [参数] [文件 .. ...
随机推荐
- 对C#对象的Shallow、Deep Cloning认识【转】
好像园内比较多博客对 Shallow.Deep Cloning的翻译是深拷贝.浅拷贝,当时我懵了,这个叫法怎么怪怪的. 就好像看军情观察室,台湾评论员,导弹叫飞弹. 至于它们的区别,一张图就可以解释. ...
- 【Android】IntentService & HandlerThread源码解析
一.前言 在学习Service的时候,我们一定会知道IntentService:官方文档不止一次强调,Service本身是运行在主线程中的(详见:[Android]Service),而主线程中是不适合 ...
- Probabilistic Graphical Models
http://innopac.lib.tsinghua.edu.cn/search~S1*chx?/YProbabilistic+Graphical+Models&searchscope=1& ...
- Android事件传递机制
http://blog.csdn.net/awangyunke/article/details/22047987 1)public boolean dispatchTouchEvent(MotionE ...
- JavaScript进阶内容1:各种对象类型判断
该文章主要用来介绍JavaScript中常用的一些对象检测判断方法,整理资源来自书本和网络,如有错误或说明不详之处,望评论提出,本菜定提名感谢……(本文章知识比较基础,大牛请提些意见再绕道,三克油^_ ...
- zepto - scrollLeft
<div style="border:1px solid black;width:100px;height:130px;overflow:auto"> The long ...
- CSS 块状元素和内联元素
在用CSS布局页面的时候,我们会将HTML标签分成两种,块状元素和内联元素(我们平常用到的div和p就是块状元素,链接标签a就是内联元素) 块状元素一般是其他元素的容器,可容纳内联元素和其他块状元素, ...
- JavaScript 变量生命周期
变量在它声明时初始化. 局部变量在函数调用时创建,当函数执行完毕后销毁,这和为什么要使用闭包也有一点关系,当然这是另外的话题了. 全局变量在页面(当前页面)关闭后销毁.
- [python]pip常用命令(转载)
用阿里云服务器,使用pip安装第三方库的时候卡的要死.所以我就想pip能不能安装本地的包. 找到了这篇博客: http://me.iblogc.com/2015/01/01/pip%E5%B8%B8% ...
- SQL Server里强制参数化的痛苦
几天前,我写了篇SQL Server里简单参数化的痛苦.今天我想继续这个话题,谈下SQL Server里强制参数化(Forced Parameterization). 强制参数化(Forced Par ...