首页 > VIM命令快速记忆(转自杰哥)

VIM命令快速记忆(转自杰哥)

因为自己也是个linuxer

熟练运用VIM是必须的,恰好学长杰哥对此有研究,

转来给大家分享。对此表达对杰哥的敬意。

有好东西分享给大家才能相互学习是吧。

要做个Linuxer,VIM的操作是必须就跟手指头盲打键盘那么熟练。

首先说下Vim的两种最常用模式,这是对菜鸟说的:),普通模式和输入模式,在普通模式下所有的按键都是命令,在输入模式下

可以输入字符。

在刚用vi打开文档时,都是普通模式,本文就介绍如何快速记住一些最基本的操作命令。

先讲讲在普通模式下的光标移动。

当你的打字速度到达一定境界时,比如我:),我非常不喜欢把手移到小键盘或者方向键那里去,因为那个地方操作起来太慢严重影响我心情有木有,所以VIM就是为高效的人设计的,它充分认识到这一点,在VIM里上下左右风别被 j k h l 代替,

h:在最左边,当然是左移动啦!

l:同理,在最右边,右移动!

j:当刚打开一个文件,是不是一般都在开头,要往下移动啊!标准指法里右手食指在J上,用的最频繁,因此就用J来往下移咯!

k:有下移动当然得下移动,就在J旁边吧,多好记!

但是每次只移动一个,好麻烦!

如果我要往下移动五行,按五次不是要累死我,而且磨损键盘!

高效的VIM当然已经解决问题,

在hjkl前加数字,比如3j就是向下移动三行,3l即使向右三行啦!

但是虽然hjkl移动很方便,但是只能逐个字符移动,好不爽,我想一个一个单词的移动,

w 可以解决,你用w就可以很方便的每次移动单词,

怎么记住这个快捷键呢,w就是word的缩写啊,亲!

w是向右移动一个单词,想移动多个单词,和上面一样加个数字就可以来,3w向右移动三个单词。

能向右移还得向左移动啊,b可以解决这个问题,b是back的缩写,后退一个单词嘛!3b的意思你懂的。

随便这里提下,w在移动过程中是每次光标都停留在单词的首字符,想让光标在移动中停留在尾字符或者

在一个单词中想跳到单词的尾字符,用“e”,end嘛

简单的移动掌握上面几个键就可以了,当然还得知道有时候我想快速移动到一行的开头和结尾怎么办呢,

数字“0”,第0个字符的意思,就可以将光标移到一行开头处,符号“$”,就是美元的符号,移动到行尾。

移动先介绍这么几个常用的,再讲讲文本操作

对文本的操作,当要求不怎么高时,无非就是插入文字,修改文字,删除文字,或者复制剪切粘贴这么几种。

插入文字,因为是insert,快捷键就是“i”,但是用你想在一行末尾插入的时候,用i就蛋疼了,因为i是在光标

前面插入字符,所以末尾插入字符就等于在倒数第二个字符的地方插入了!这时候要用”a“,a和i的功能完全一样,

add的缩写,增加的意思,在光标的后面插入字符。

有时候,特别是敲代码的时候,我们要另起一行对吧,在上一行的任意位置按“o”,open new line ,哈哈,你已经在

新的一行插入文字咯

修改文字,change,快捷键“c”,不过在普通模式下你按一个c没反应,为啥?你还没告诉VIM你要修改的对象呢,

光标停在那里,我是修改这个单词呢,还是要修改一整行呢。

cw,w是移动一个单词的快捷键,cw的意思就是对光标当前所在出到这个单词的结尾修改,cb的意思我就不说了。

那c2b呢?,嘿嘿,从光标往前两个单词修改!

c0,c$,分别是光标到本行开头和结尾的所有文本修改。

发现奥妙了吧,移动命令和文本操作命令可以搭配起来用有木有,这正是VIM最强大的地方,各个命令可以组合使用。

其实我们可以这么考虑,在移动命令中,如果按照word里边按住shift的思维,移动是不是就等于选中?移动的轨迹就是

文本的选择对象!所以在vim里一般的命令格式为

(command)(number)(text object)

command就是对文本的操作,“c”是修改,“d”是删除,“y”是复制等,number + text object 组合起来就是命令

所要操作的文本对象啦!

比如d2h,d是删除,2h是往左两个字符,那d2h就是删除光标左边的两个字符咯!

举一反三,各种组合等你实际应用中再用吧。

现在比如我有一个单词,love,不小心写成了loce,要把c改成v,如果我们用命令“c”的话,我们需要先定位到e,然后

c1h,改一个字符用得着这么麻烦嘛?当然不用,把光标移动到”c”上,输入rv即可!r是replace,也是替换对吧,他的功能就是

替换一个字符,在r后面跟着的v就是新文本。很方便对不,~~~……

对应删除d,要删除一个字符,用x就可以了! x就是小学老师给我们打的大叉叉么,嘿嘿。

有时候我们不小心手贱,安了一个x,想撤销怎么办?

vim当然已经给我们考虑好了,你按“u”,u即是undo,就跟word一样,多次按u就是撤销多次哦~

插入修改删除我们都会了,下面我们来讲怎么剪切复制粘贴呢?

这时候我们要用到“p”命令,p就是place嘛,放置的意思。

前面我们说了删除命令“d”和“x”,其实删除就是剪切嘛,这些被删除的文本会被放到缓冲区中,

”p“命令会将缓冲区的中文本加入到当前光标的后面,如果我们用了d3j删除了3行,对于多行的文本,

p会放置在当前光标的下一新行。

对于x,有个妙用,还是用love这个单词吧,如果我输入成了loev,那我只要把光标移动到“e”上,然后xp就搞定了!

呵呵,x先把当前字符给删除了,这时候光标在“v”,然后我们用p把“e”放到“v”后面,就完成两个字符的对掉啦。

剪切粘贴你也会了,复制怎么办呢,用”y“,比如yw,复制了一个单词,到想要放置的地方,p就好啦。

还得介绍几个非常规的组合。

cc,c更改,两个c算啥?两个c代表更改一整行

dd,删除一整行,

yy,复制一整行

VIM 是对命令的大小写敏感的,上面介绍的全是最基本的小写指令,下面来看看那大写命令的快捷之处!

想到本行的开头插入吗?用“I”

想到本行的末尾插入吗?用“A“

想在本行的上一行新开一行写代码吗?用“O”

想把剪切后者复制的文本放在光标之前吗?用“P“

想在移动过程中撇开那些烦人的标点嘛?用“W”,“B”,“E”

C是c$的缩写,即是从当前光标到本行末尾的所有文本更改

D是d$的简写

现在我有两行句子:

I love you ,please

come back.

上述两个句子应该在同一行对吧,我不用吧光标移动到第二行,然后按i进入插入模式,然后再来个退格键。

我只需吧光标移到第一句,用一个”J“就搞定了~

在英文中每个句子的开头第一个字母要大写对吧,万一我当时没大写然后我要改呢,传统做法,把光标移动上去,

然后rA,文艺青年,把光标移动到上面,用“~”搞定,这个符号在“1”的左边,按住shift键。

再介绍一个有用的命令,“.”,就是句号,vim会记住你上次操作是什么,然后用“.”就可以重复执行上次命令!

学完上述这些基本操作,就可以在黑乎乎的屏幕上装逼一把啦~!

当然vim的功能远远超过这些。



转载于:https://www.cnblogs.com/web-lover/archive/2012/01/21/2615950.html

更多相关:

  • navigator.userAgent.toLowerCase().includes("mobile")//true代表就是移动端  ...

  • 一,设置    二,脚本   1,PlayerController using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerController : MonoBehaviour {privat...

  • 2019独角兽企业重金招聘Python工程师标准>>> 介绍一些针对移动设备常用的HTML5开发技巧。 从web开发转向移动开发 视野范围的转变 这点是针对可显示的内容区域而言的,PC的内容区域相对于移动设备的内容区域来说,那已经算相当丰富了。如果说PC可以是多视图区域的,那么移动应用更多的是单视图,使得我们开发的应用视野...

  • 在调用Windows API函数SetCursor设置光标时,可能会碰到闪烁的问题:移动鼠标,光标在Class Cursor(即注册窗口类时指定的Cursor)与预设Cursor之间闪烁。 在MSDN上有关SetCursor函数的备注中强调,如果Class Cursor非空,那么每当鼠标移动,系统都会把光标恢复为Class Curso...

  • 1. 三字母词 在C语言中有一种三字母词的说法,trigraph sequences,目前为止有九种三字母词,如下 ??=               #                  ??)            ]                  ??!           |         ??(      ...

  • 题目:   请你来实现一个 atoi 函数,使其能将字符串转换成整数。   首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。   当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组...

  • 联考考试考到了这个题,随机化40分,现在来秒掉它吧。   题意: 给一个字符串,求其中的一段,使得出现次数最多的字符与出现次数最少的字符的出现次数之差最大。 输入输出样例 输入样例#1: 复制 10 aabbaaabab 输出样例#1: 复制 3   我们定义$cnt[i][j]$表示区间$[1,i]$中,j出现的次数, 定义...

  • 本推文主要识别的验证码是这种:第一步: 二值化所谓二值化就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵。第二步: 文字分割为了能识别出字符,需要对要识别的文字图图片进行分割,把每个字符作为单独的一个图片看待。第三步: 标准化对于部分特殊的验证码,需要对分割后的图片进行标准化处理,...

  •   源字符串: a a 1 ~`!@#$%^&()_+-={}[];',.- + 编码后: a%20a%201%20~%60%21@%23$%25%5E&%28%29_+-=%7B%7D%5B%5D;%27,.-%20+   源字符串: 变 ~!@#¥%…………&()——+=-·{}:“;‘、《》?,。、-+A a 1 编码后:...