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点了,赶紧发出来。任何问题都可以回复给我。

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 插件
, vim
, 文本
, 单词
, 文本表示
, 一个
Vim插件
vim 文本对象、vim 插件、vim golang 插件、eclipse vim 插件、vim 安装插件,以便于您获取更多的相关知识。

时间: 2024-10-03 01:03:48

vim中的文本对象及相关插件的相关文章

Emacs 中给文本加引号的插件

前几天 @刘鑫-MarchLiu 在微博上发布了一个给给文本加引号的插件:http://weibo.com/1729408273/eDcC8e8w6aD.不过用起来有点小问题: 两头都只能插入一个字符,因此不能用于添加 XML 标签: 光标控制上有个 bug,每次执行后光标会往左移动一个字符. 我自己刚刚也实现了一下,不过我的实现灵活性比较差(前后的符号必须由用户手工输入,不能以参数形式传递): (defun wrap-thing (thing) "Wrap the thing at point

Ubuntu 16.04 下如何在Vim中进行文本选择操作和使用标志

基于图形界面的文本或源代码编辑器,提供了一些诸如文本选择的功能.我是想说,可能大多数人不觉得这是一个功能.不过像 Vim 这种基于命令行的编辑器就不是这样.当你仅使用键盘操作 Vim 的时候,就需要学习特定的命令来选择你想要的文本.在这个教程中,我们将详细讨论文本选择这一功能以及 Vim 中的标志功能. 在此之前需要说明的是,本教程中所提到的例子.命令和指令都是在 Ubuntu 16.04 的环境下测试的.Vim 的版本是 7.4. Vim 的文本选择功能 我们假设你已经具备了 Vim 编辑器的

Javascript中的arguments对象_javascript技巧

在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量. 1.什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length. 2.有什么作用? js语法不支持重载!但可用arguments对象模拟重载效果. arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象. arguments[i]: 获得传入的下标为i的参数值 arguments.length: 获得传入的参数个数!

jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法_jquery

本文实例讲述了jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法.分享给大家供大家参考,具体如下: 我们在使用EasyUI Tabs框架时,在框架最顶层的弹出窗体中需要操作当前Tab的iframe窗体内容或方法,这时候我们就可以使用以下方法来实现. 具体实现代码如下所示: function getTabWindow() { var curTabWin = null; var curTab = parent.$('#main-center').tabs('getSelected

ai 插件与flex界面-如何把adobe illustrutor 中的art对象得到缩略图并传到flex面版上绘出

问题描述 如何把adobe illustrutor 中的art对象得到缩略图并传到flex面版上绘出 最近,开发一个AI的插件,在AI的图片传到flex上卡住,望各位高手不吝赐教

批量删除Excel2007中的文本和控件对象

  当工作表中有很多控件或者图片等对象时,一个一个去删除会非常的繁琐.案例阐述了如何一次性删除整个工作表中图形.控件和影音等对象,方便快捷.下面给大家介绍一下批量删除Excel2007中的文本和控件对象的方法. 1.我们启动Excel2007,打开一份插入有控件的测试题文件,要批量删除这些控件,单击菜单栏--开始--查找和选择. 2.点击查找和选择按钮之后,弹出下拉菜单,点击定位条件选项. 3.弹出定位条件对话框,勾选对象,单击确定. 4.此时会一次性选中表格中的控件对象,按下键盘上的delet

怎么通过message对象获取消息体中的文本内容

问题描述 怎么通过message对象获取消息体中的文本内容 解决方案 这里得到message对象后,强转一下类型EMTextMessageBody txtBody = (EMTextMessageBody) message.getBody();txtBody.getMessage()

iOS10中Messages独立应用与扩展插件详析

iOS10中Messages独立应用与扩展插件详析 一.引言         Messages是iOS系统中原生的信息应用,其既可以通过运营商网络发送短信息,也可以通过互联网进行类似微信类社交软件的即时聊天.但是由于其封闭性与功能的单一,使用其进行即时聊天的用户并不多.随着iOS10系统的推出,或许可以改变这一现状.在iOS10中,Messages的功能被扩展的十分强大,通过Messages,用户可以分享图片,音乐,视频,可以随手涂鸦,使用自定义的表情包,可以进行Apple Pay支付,购物,甚

[20170617]vim中调用sqlplus.txt

[20170617]vim中调用sqlplus.txt --//以前写过一篇emacs下调用sqlplus的文章,一直想学emacs,受限制自己掌握vim,对学习它没有兴趣,原链接如下: --//http://blog.itpub.net/267265/viewspace-1309032/ --//实际上vim也有插件连接数据库,我觉得不好用,一直没这样用. --//今天在整理vim相关设置时,发现我自己以前也定义一些方法,自己也拿出来分享: noremap  <Leader>q1 Yp!!s