普通人也能学会的编辑利器—Vim

回复 星标
更多
普通人也能学会的编辑利器—Vim
»

1092034

vim

vim是一款非常强大的文本编辑软件,它也得到很多编程人员的钟爱。我是从善用佳软的书中发现了vim,虽然我不是程序员,但在学会了一些基础操作之后,在编辑文章甚至练习五笔时减少了很多重复性工作。而这就是word的短板。虽然word有简单易学的编辑功能,但现在很多人都是用Markdown格式写文章,这样一来word的功能就大打折扣。

用markdown书写时,我们有时候会碰到这样的问题:写好文字之后,需要给多行文字编号或者将有序编号改为无序编号。当行数多了之后,通常情况下我们就得进行重复性操作,这费时费力。而如果我们使用vim,就可以很方便的解决这些问题。等会你就可以看到实例。所有写文章时,若是需要大量的编号,我会故意等写好文章后用vim快速添加编号。

当然vim不会像word那样一学就会。但正如善用佳软所说:尽管我并不推荐大家都学vim,但我相信,普通用户既可以学会vim,也可以受益于vim。我相信如果你学会了vim的一些基础操作,就可以提高编辑文本的效率。

读者可以先不用管具体的命令如何输入,只看文中的几个例子,看使用vim可以完成哪些意想不到的操作。看完例子,如果你感兴趣,那可以去vim官网下载安装,并将下面出现的命令重新敲一遍。

一、vim模式说明

vim有不同的模式,我常用的是这三种模式:normal模式,insert模式,命令行模式。

在normal模式下,所有的字母都充当快捷键,它们可以实现删除、复制、粘贴、移动光标等操作。光这一点vim就可以让我们脱离鼠标,提高不少效率。

启动vim后,vim默认模式就是normal模式,此时你并不能像平常那样输入文字。在normal模式下,按i可以进入insert模式,即编辑模式(左下角显示"插入")。此时,vim就变为记事本,读者可以像平常那样输入文字。非normal模式下,按esc键就可退回到normal模式

normal模式下按冒号:进入命令行模式,用于输入较复杂的命令。虽然命令行模式看上去会复杂一些,但其实不然,我们要学的前两个命令就是在命令行模式下进行的。

对于第一次接触vim的人,可以先不用管这些模式。按下面的教程操作一遍自然记住了这些模式的作用。现在只用记住一条:接下来的所有操作最先都是在normal模式下进行的。即使是需要进行命令行操作,那也是要先从normal模式进入命令行模式。所以若你不确定目前vim在什么模式下,多按几次ecs键确保已进入normal模式。

读者先在桌面新建一个记事本格式的文档。然后用vim打开,按步骤操作一遍命令。

二、基础命令

1. normal模式与insert模式的切换

用vim打开记事本后,按i进入insert模式,这时你会发现光标从原来的长方形变成了一条线段,而且左小角显示“插入”。现在读者可以随意输入一些文字。完成之后记得按ecs键切换为normal模式。

注意:为了养成切换回normal模式的意识,请读者多进行几次上面的操作。

试试输入8i简书,接着按ecs键退回到normal模式。你会发现输入了8个简书。vim中在一些简单操作前加了数字就可以重复操作。

2. 保存命令:w

命令说明:在normal模式下,按冒号:进入命令行模式,在左下角可以看到冒号。输入w回车即可保存内容。

将w换成q表示退出vim。两个命令也可以同时使用,即输入:wq表示保存且退出vim。

对于经常写文章的人来说,及时保存新内容是必需养成的习惯。

3. 改变背景色:colo evening

命令说明:在normal模式下,按冒号:进入命令行模式,colo表示背景色,这里我们选择夜色evening,回车即可得到结果。

vim支持大量的背景色,我平时都是使用黑色,黑色对眼睛的刺激会小很多。

读者试试输入:colo e后按tab键,注意左小角的字符变换。你会发现左小角自动出现了:colo evening了,这是因为tab具有自动补齐的功能。

4. 光标移动、删除、替换、和插入

在写好一篇文章后,我们总是需要重新读一遍,修改错误或不妥的文字。以下就是修改文字时的四个基础命令。

i、j、k、l           

分别表示光标向左、下、上、右移动

a                            在光标后插入 

x                            删除当前字符 

s                            替换当前字符

提醒:进行上述操作时,输入a或s实际上就进入了insert模式,所以要想进行其它操作,需要按ecs键退回到normal模式。

现在试试5x,你会发现连续删除了5个字符。

5. 快捷键.

英文句号.的作用就是重复刚才的一系列操作。比如,你按5x删除某5个字符后,发现还需要再删5个,那你只需要按.即可完成操作。再试试3.,这次就删除了3个字符,而不是15个。vim是一款很聪明的编辑器。

6. GIF示范

1092034

vim基础操作示范.gif

三、宏命令和可视块

我相信对普通用户而言,vim最能吸引你的功能一定就是宏命令和可视块。下面通过一个例子介绍这两个命令。

如果你看完这个例子后,竟然还没有对vim产生兴趣,那你也没有必要继续看接下来的文字了。

在艾力写的《你一年的8760小时》中,他通过“角色-目标法”写下了自己的人生目标。我通过迅飞语录,用语音转文字的方法快速把他的目标摘录出来。

结果是这样的:

儿子,让母亲安度晚年,享受到亲情的温暖,并帮她完成周游世界的心愿,哥哥,帮助与引导妹妹希望他成为对社会有用的人,找到人生真正的幸福,教师,教授还学生真正实用的东西,而不只是哗众取宠,不仅仅教授书本知识,更要分享做人的道,同事,帮助他们在职场上有更好的发展,并且做到至少自己不在背后说他们的坏话,下属,管理好我的相机,从他们身上学到一切学习的东西,帮他们解决工作中最需要解决的问题,领导,完成公司制定目标,并帮助下属在职场上快速成长,朋友,即使无法做到每时每刻的陪伴,也要让他们知道我是那个最关键是个可以依靠和信任的。

显然这样的格式我们是不会满意的,所以我用vim对其进行一些调整。

1. 快捷键.

为了更清楚,我们先对各个角色进行分段。

现在我们希望得到的是这样的:

儿子,让母亲安度晚年,享受到亲情的温暖,并帮她完成周游世界的心愿,

哥哥,帮助与引导妹妹希望他成为对社会有用的人,找到人生真正的幸福,

教师,教授还学生真正实用的东西,而不只是哗众取宠,不仅仅教授书本知识,更要分享做人的道理,

同事,帮助他们在职场上有更好的发展,并且做到至少自己不在背后说他们的坏话,

下属,管理好我的相机,从他们身上学到一切学习的东西,帮他们解决工作中最需要解决的问题,

领导,完成公司制定目标,并帮助下属在职场上快速成长,

朋友,即使无法做到每时每刻的陪伴,也要让他们知道我是那个最关键是个可以依靠和信任的人。

将光标移动到“哥哥”前面的逗号,按下a光标后插入,接着输入回车键enter即可完成一小步。记得要按esc回到‘normal’模式。

接下来,再次将光标移到教师前面的逗号上,这次就只需要按下.就可以直接得到我们想要的结时。依次对剩下的角色作同样的操作,我们就可以得到想要的结果。

1092034

利用快捷键“.”分段

2. 可视块ctrl+q

因为我是用markdown格式书写文章,所以为了更优美的排版,我们在各段前面加上无编号排列。即我们需要在各段之前加入字符*。

通常我们的办法是一行一行的修改。这里只有7行,倒也可行,但一旦行数增多,必然会造成困难,而且都是重复性的工作。用vim就是为了减少重复性工作。

将光标移到“儿”字上,输入操作‘ctrl+q’7jI * ‘esc’,结果就出来了。

命令说明:

  • 按ctrl+q可进入可视块模式(可以认为是命令行模式的特殊情况,左小角会出现可视块字样)

  • 7j,表示将光标向下移动7行,也就是到最后一行

  • I,大写字母I表示进入编缉模式(可视块下得用大写)

  • *为我们需要填加的的字符

  • 按esc退出可视块

这时候你就会发现我们已经得到了我们想要的结果。

1092034

利用可视块命令快速添加编号

注意这时还处在大写状态,我们需要进入小写状态,vim区分字母的大小写。

3. 宏命令

宏命令的目的就是将一组操作打包,并命名这组操作,例如命名为a。等我们需要进行同样的操作时,只需按下@a即可。如果你学过编程,那你会发现宏命令相当于新建了一个函数。

我们前面说过的.命令也可以重复操作,但那只能重复一些简单的操作。

宏命令的语法是qa action q,此时宏名为a,调用时键入@a即可。

现在我们需要把每段未尾的逗号改成句号。

将光标移到“儿”字上,输入qa$s。'esc'j0q即可完成宏录制。接下来按@a试试效果,如果没错的话,按5@a即可完成接下来的操作。

命令说明:

  • 输入qa进入宏命令,并将宏命名为a

  • 输入$可将光标移到未尾,在这里就是逗号

  • 按s可直接替换逗号并进入编辑模式,这相当于替换功能

  • 输入。,插入句号

  • 按esc退出编辑模式

  • 按j移动到下一行

  • 再按数字0将光标移动到最前头,这两步是为了能使后续的操作得以进行。

  • 按q结束宏录制

步骤和结果如下:

1092034

利用宏命令快速将段未的逗号改为句号

4. 全文替换

仅仅是为了介绍全文替换这个功能,我们现在将最后的句号全变成感叹号。

当然你也可以用宏命令完成操作,但现在我们用全文替换这个方法。

输入:%s/。/!/gc,回车即可。

命令说明:

  • 输入冒号:进入命令行模式

  • %表示全文搜索

  • s表标替换当前字符

  • /。表示替换的对象是句号

  • /!表示将目标替换为感叹号

  • /gc的作用是确认是否替换当前字符,回车后输入y替换当前字符,输入a替换所有字符

  • 1092034

    全文替换功能

最终我们得到的结果:

  • 儿子,让母亲安度晚年,享受到亲情的温暖,并帮她完成周游世界的心愿!

  • 哥哥,帮助与引导妹妹希望他成为对社会有用的人,找到人生真正的幸福!

  • 教师,教授还学生真正实用的东西,而不只是哗众取宠,不仅仅教授书本知识,更要分享做人的道理!

  • 同事,帮助他们在职场上有更好的发展,并且做到至少自己不在背后说他们的坏话!

  • 下属,管理好我的相机,从他们身上学到一切学习的东西,帮他们解决工作中最需要解决的问题!

  • 领导,完成公司制定目标,并帮助下属在职场上快速成长!

  • 朋友,即使无法做到每时每刻的陪伴,也要让他们知道我是那个最关键是个可以依靠和信任的人!

我平常使用的命令大部分都在这个例子中出现,其中可视块和宏命令帮助我解决了不少重复性操作。

如果现在你有兴趣学,那么可以继续阅读接下来的文字了。下面罗列了一些其它操作,附录中给出了一个练习,让读者可以练习宏命令和可视块操作。

六、附录

附录1:练习材料

我在练习五笔时,找到下面的二级简码,但由于有标点符号,所以再练习时会造成干扰,我就用vim很快速的将标点去掉。

为了熟悉vim的操作,请至少用三种方法实现我的目的。最好在练习下如何进行有序编号(共23行)。

几多灾雪下帝城,四处冰霜亿地阴,三年六载不平事,五度思家小儿孙。

所爱不为贡录物,财钱从来少入心,淡观杂戏遥知理,长提铁胃吸江虹。

帮弱防强斩娄怪,肝胆闪光九方红,能让好刀阵前出,会收孤姨马后巡。

且向空社顷米粉,也取粗纱作甩灯,生就朱膛赤肌肋,哪管绿客贩阿参。

最恨蛤蝗毁籽料,呆骨罗妆害居民,凡欠商煤必记册,极反姑舅瞎分成。

敢服肥脂弛北际,曾开汪泊百菜丰,于无砂处得珍画,与张李氏结磁婚。

二失姆妈驼纱曲,七呼寺训报你亲,得估仙玉赠芳燕,权守宫法眯瞳睛。

烽烟炽烛难止伙,粘绵浊澡可过林,垢圾枯杨休保佃,官台铁锭岂归村。

久结晕妇妨儿习,屡认苛虎迷子沁,悄然过客明年找,空宛洋烟他处寻。

车轩轴辊双边轨,经纱纲线肆米综,抽打扣押手来折,喧叫吵啼脸内风。

秀芭晚间争灿色,匠物晨时夺天工,开坟必现科中册,关们定隐北帝军。

玫珠细玉为妻采,凤朵名曲报阳春,并洒宽邮参汉陛,且涨冯水变良屯。

断瓣失籽季难过,胡面钉餐节如冰,东芝电笔盯得紧,南方芭药末渐闻。

普拓灰砂离右站,乐导高才进左厅,历怀牟角搂辽炙,宁守信伯庆遥朋。

降职隐行遇瞎眼,载革引驼率吕宾,炒米能偿张承相,棕服艰作刘史充。

当学太公交睦友,务扫肛肿切耻因,肖男大志呈煌炮,卤条崭迪对主凶。

功夫峭级放吧哟,决比机械克烃龙,秋嘛耿卫懈愉奶,闰旭暗晃忆尼陈。

列队联胶眩步慢,构景量牙灶叶轻,邓字之安昌顺矣,实宙妥宵果甸兴。

旧表查顾计划列,纪档对具曙业审,卢皮睡衣全检析,外协化池半嫌灵。

吉它怕旧限同类,纺产允代支协本,给旨劝约加力办,示义批包答楷贞。

用术匀蝇届炎显,这样格楞共世攻,虽说呀员拉么近,只听啊部罚个针。

直到忱尖昨及第,仍由惭寂换秘称,各杰委原持耿驻,互诉此基立介增。

肯要占区早避困,或量胸式扩良旬,继订注央达负昆,另秒没较则可扔。

附录2:推荐阅读

  1. VIM教程与学习资料汇总-善用佳软

附录3:文章更新历史

2016年8月22日:几乎重写

2015年8月7日:初稿

2016-10-01 12:01:29更新过
此帖已被锁定,无法回复
新窗口打开 关闭