vim操作技巧:操作+文本选择

在编写代码的过程中,选择代码是一项非常常见的操作,其他文本编辑器都是使用鼠标进行选择,我在使用其他编辑器的时候,编写到一半的时候总是想着要去找鼠标,然后选择代码,然后在回到键盘上进行操作。对于vim来说代码选择再加上操作是非常强大的功能。

首先我们需要了解一下什么是文本对象,我对文本对象的理解就是在成对符号之间的字符串,比如",',{等,包括xml的标签之间的都属于文本对象。选中文我们都是为了操作文本,vim里面有一些按键用于操作,称之为操作符,比如d,c,y等,d表示删除,c表示删除插入,y表示提取。

我们以一个实例来解释文本操作加文本对象的使用。


This is a series of commands.

上面这句话假设光标所在位置是句首,我们想把commands改为hello,我们要完成这件事情有很多种方法,下面我们一个一个的来说。

第一种办法就是用l或者<Right>将光标移动到.上面,然后用i进入插入模式,使用<Backspace>删除commands,输入hello,<ESC>退出插入模式。不得不说,我在最开始接触vim的时候,我就是这么干,而且还这么干了很久,现在回想起来不得不佩服当初的愚蠢。因为我们还有更好的方式。

第二种办法使用$将光标一次性移动到行尾,使用i进入插入模式,或者是A将上面这个两个操作合并起来,删除commands,输入hello。这个方案明显比第一个方案高效了很多,因为我们可以一次就可以将光标移动到位了。当然,我们还有更加高效的办法。

第三种方案是使用fc将光标移动到c字母上面,使用cw删除commands并进入插入模式,输入hello。

上面这三种方案都还没涉及到文本对象的选择,如果我们使用fm将光标移动到commands上时,我们就需要使用到文本对象的选择了,因为cw是从当前光标开始删除,还会遗留下co没有被删除,所以我们可以输入ciw会将光标所在的单词整个删除并进入插入模式。这个方案在这里不一定是最好的,但是可以适用范围更加广。

现在我们改一下需求,删除commands和.号,因为这句话我们还没输入完成,我们输入hello之后,还需要继续输入,号。

这里就涉及到单词和字符串的概念了,单词就是我们平常所理解的单词,比如上面的This,is,commands等,而字符串是指两个空格之间的字符,如果我们需要删除commands.使用面向字符的文本对象操作起来会更加高效一些。

首先我们将光标移动到commands上面,也可以移动到.号上面,使用fc或者fm或者f.都可以,然后执行ciW会将commands.都删除并进入插入模式。

OK,我们再接着修改一下需求,我们仅仅只要将commands删除,而不进行其他操作。

首先我们还是要先移动光标到commands上面,和上面的方法是一样的,使用f+字符的模式来移动光标,这里特别说明一下,我以前很少使用f+字符来移动光标,一般都是用w,e,b等,后来我习惯使用f之后,在单行内移动光标的效率提升了很多,这里也建议大家使用这种模式来移动光标。我们要删除文本,所以执行命令以d开头,我们还用iw作为文本对象,即执行diw就可以删除commands了,比起使用c开头的命令,我们并不会进入插入模式,毕竟我们仅仅就是删除单词。但是我们会发现一个问题,就是of和.之间还有一个空格,我们需要再执行一次x才能删除空格。

这时候我们希望能一步到位,就是把commands和以前的空格以前删除了。这里就涉及到i和a的区别了,i表示的是单词本身或者字符串本身,a表示单词本身加上单词周围的一个或多个空格,为什么会有这样的区别呢?因为我们在编辑文本的时候,有时候需要删除+修改,有时候仅仅删除就好了。而删除修改空格往往需要保存原样,而删除总会有一个或多个多余的空格。所以在这种情况下,我们执行daw会一次性将commands和前面的空格一起删除,这样明显编辑效率就提高。

这样就形成了一个模式了,操作符(y,d,c等)+文本对象(iw,aw,iW,aW等),把这个模式推广开来,在其他类似的场合也能迅速的提高了编辑效率。大家可以通过:h text-objects来查看所有的文本对象。下面进行简单的列举一下,同时还能给出快速记忆的办法。

  • aw 一个单词包括一个空格,快速记忆:a word

  • iw 一个单词,快速记忆:inner word

  • aW 一个字符串包括一个空格,快速记忆:a WORD

  • iW 一个字符串,快速记忆: inner WORD

  • as 一个句子包括一个空行,快速记忆:a sentence

  • is 一个句子,快速记忆:inner sentence

到这里大家应该已经发现规律了吧,赶紧通过帮助文档查看完整的文本对象吧。

从这篇文章开始,针对vim的文章我换了一个写作方式,以我的实际编辑的例子来进行深入解析,这样可操作性更加强一些。

文章同步发布在:http://www.xinxingzhao.com/blog/2016/05/29/vim-select-boject.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容

  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 3,130评论 0 3
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,734评论 3 48
  • 待整理~ 1、vim ~/.vimrc 进入配置文件 如果不知道vimrc文件在哪,可使用 :scriptname...
    spfanlost阅读 1,711评论 0 0
  • 对于宇宙的起源,现在的主流科学界普遍接受的是大爆炸理论(Big Bang)。宇宙起始于一个温度极高、密度极大奇点,...
    杨威1974阅读 1,057评论 2 3