每日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 [参数] [文件 .. ...
随机推荐
- 注意啦!10 个你需要了解的 Linux 网络和监控命令
下面列出来的10个基础的每个Linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些:hostname, ping, ifconfig, iwconfig, netstat, nslooku ...
- MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found
1) Assets/Standard Assets/Scripts/MeshCombineUtility.cs(27,74): error CS1061: Type `UnityEngine.Mesh ...
- label标签跳出循环
出场: 首先我们来说说为什么需要label标签,虽然我们已经知道有break,continue跳出循环,但如果是多重循环那么它们就显的无能为力了,所以就出现了label这个标签来为我们服务. 我们先来 ...
- codeforces B. Strongly Connected City(dfs水过)
题意:有横向和纵向的街道,每个街道只有一个方向,垂直的街道相交会产生一个节点,这样每个节点都有两个方向, 问是否每一个节点都可以由其他的节点到达.... 思路:规律没有想到,直接爆搜!每一个节点dfs ...
- css - position relative与display table-cell深入分析
在很多时候,想使用 display: table; 以及其子元素使用 display: table-cell 都只是为了使用 vertical-align 这一属性.这是一个很简单的常识,但这次在项目 ...
- iOS-给UIView添加点击事件
一.当遇到一些UIView 或者 UIView的子类时,比如点击UIImageView要放大图片等. 二.步骤: 1.首先要确保打开控件的用户交互,userInteractionEnabled设置成Y ...
- 关于 CommonJS AMD CMD UMD 规范的差异总结
一.CommonJS 主要是用于服务器端的规范,比如目前的nodeJS. 根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函 ...
- Linq专题之匿名对象
匿名对象是c#3.0的一个新的机制,使用new关键字和一个对象的初始化器,就能创建一个匿名对象.顾名思义,创建的时候这个对象是一个匿名类型的对象,没有具体的类型.说到匿名对象,那么我们前面讲过的var ...
- SVG操作插件:SVG.JS 个人提取部分实用中文文档
先贴出github地址:https://github.com/svgdotjs/svg.js(也就是原文档的说明和文件的下载地址) 创建SVG文档 var draw = SVG('drawing'). ...
- IOC容器中bean的生命周期
一.Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过程如下: (1).通 ...