vim实用技巧,优秀程序员的利器,掌握vim让你生产力大幅提升,软件工程师工具箱里必备的工具。Vim入门教程层次0:对vim-无所知层次1:了解vm的基本使用层次2:知道可视模式层次3:架道多独音动动对此我并不了解,不过我认为这种观点值得我们注意。毕竟,kana是vim大神。在本教程中,我将通过下面四个主要模块来向你展示vim基础介绍:这部分基础介绍能快速建立起你对vm的正确认知。具体操作:这块是干货。做好准备来享用吧进阶:这部分我会教你怎样成为vm牛人。常见问题:这里会讲述一些常见问题解决技巧。换句话说,如果你已经对νim有所了解的话,建议你从具体操作这部分开始。如果你熟练掌握这部分的话,就直接进入进阶开始学功夫。假如你看这篇教程是为了某个具体问题,那么请进入常见问题章节。所以呢,建立νim世界观,νim基本操作,高手进阶以及常见问题——这几部分任君挑选。vim文档转为htm配置我曾说过,不希望这是一本超级vim配置手册,网上已经有很多这类教程了。本教程的目的在于强化你对vim的理解,帮助你熟练掌握这个工具。不过我们也会稍微介绍一些基本的配置首先,我建议你安装(几乎)自我管理的vim。我就曾试过 Janus(vim的发行版),但是我无法确定它究竟在做什么,这让我感到很挫败。我偏好的配置就像νim自身一样,简单而优雅,为了达到这个目的,我直接将用户主目录下的.vim目录和vimc作为配置文件。A few key / vimrc changes/ V Imrc修改常用键首先呢,我觉得使用键来退岀插入模式实在是太老土了。Vim关注的是效率,如果不是特殊情况,手指尽量不要离开键盘中间排。而这种ESC操作实在是没效率,所以不要用这个。i nor emap jk 【注意:有些人喜欢将映射为j,但是我觉得映射为j可能更自然一点】修改 leader键反斜杠也同样存在这种问题,所以就像其它指导文档推荐的那样,我也喜欢将引导键重映射为逗let map leader =433通过这样的配置,可以简化我们接下来的命令执行,比如执行映射的缩写命令时,只需右手中指往下一格就可以轻松输入逗号,而不需要冋上再冋右去远远地按反斜杠键。重映射 CAPSL00K大写键不在νim的配置文件中,不过这个键的位置比较好,而它的默认功能我们又常常用不上。对我来说, CAPSL0αK键没啥用处,所以我将它映射为ctr键(从操作系统层面来设置)。这样如果我要执行tr|-XX操作时只需将左小指左移就可以了。此外,推荐其他几项基础设置,这样使用更加方便。filetype plug in indent onsyntax onset encoding=utf-8要知道,优化 IMr c文件是一个非常值得花时间去研究的问题,这里说的几个建议仅仅是皮毛。推荐查看我的设置或者阅读这几篇引用文章。使用 Pathogen管理插件请注意:如果你不熟悉或者并不喜欢插件,可以跳过这一节。等你下次想通了再来看看。】远离 Janus对我来说, Janus最能吸引我的地方在于它的插件管理,不过我可以通过 Pathogen来实现。基本上,通过以下几步就可以了安装 Pathogen将你需要的插件 git clone克隆到.vim/ bundle在配置文件.vimc中添加 execute pathogen# infect(利用 github来实现备份和可移植性为了备份vim设置,我将整个vim目录通过git库保存在这里。这样即便我新装了系统,也可以很方便的使用gitclonehttps://github.com/danieImiessler/vim获取我的偏好设置。也许你也会喜欢这样做。简单一步 clone之后,将. vimrc:软连接到~vim/vimrc就可以了。Vim即语言Vim最成功的闪光点莫过于一旦你开始使用它,它就会让你欲罢不能。Vim就像语言一样,拥有名词、动词、副词等属性。虽然我的这种说法从技术层面可能并不准确,但是却能帮助你更好地理解νim的工作机制。重申一次,本教程的目的不是为了取代其他教程或帮助手册—而是为了帮助你理解其他这些文档晦涩难懂的部分。动词所谓动词指的是我们执行的动作,这些动作可以施加在名词之上。可以看看下面几个常见的动作d:删除c:修改y:拖拉(拷贝)ⅴ:可视化选择、 for line vs. character)修饰语定语用在名词之前,表明以哪种方式来执行动作。几个例子i:内部a:周围NM:数字(e.g.:1,2,10)t:查找到指定字符,并跳转到这个字符的前面f弯找到指定字符,并到转到字符所处的位置名词在英语中,名词用来表示你所操作的对象。它们都是客体。在vim中也是这样。下面列出vm中的名词W:单词s:句子):句子(另一种操作方式)p:段落}:段落(另一种操作方式)t:标签(HTML/XML)b:块(编程语言)Nouns as motion同样,你也可以将名词视为移动动作,这意味着你可以用名词表示在文本的跳转范围。我们可以在移动”章节中看到例子说明。使用vm语言来组成语句(命令好了,现在我们有句子的不同组成部分,该怎样将这几部分组成完整的句子呢?就像英语一样,凭感觉将动词、修饰语和名词组合起来。对于下面这些符号,根据颜色的不同来区分句子的不同组成部分删除两个单词dow修改所在的句子(删除当前句子并进入插入模式s拷贝当前所在的段落y p修改当前光标所在位置到下一个括号之间的文本内容ct<记住,这里的“目标”是尖括号,除此之外还可以是任意字符。从语法上来说,使用单个字母”t”来表示这个向前查找的“目标”,这样我就可以使用“dt.”表示删除当前位置到下一个句号之间的内容,”yt;”表示拷贝当前位置到下一个分号之间的内容。看起来多漂亮!当编辑文本时采用这样的思维方式可以使得操作更加优雅,符合我们的直觉思维,而且就像其他语言一样,熟能生巧。具体操作现在,在了解这些基本操作后,让我们结合具体操作来更进一步学习。处理文件些对文件的基本操作。· Vi file:使用vim打开要编辑的文件W:保存修改q!:退出vim,后面加感叹号表示不保存修改强制退出Wq:保存修改并退出·: saveas/some/path/:将文件保存到其他位置【注意:相比较:wq我更喜欢使用Zz,因为我觉得不需要输入冒号我觉得会快一点。也可以使用:x】·Zz:同:Wq查找文本对于任意一款编辑器,查找文本都是最基本需求。Vim拥有很强大的文本搜索功能,这一节将着重讨论vim的文本搜索。搜索字符串Vim中最基本也是最强大的搜索方式是””命令,在窗口最底端输入你需要查找的字符串并回车就可以了查找 inc ude字符串/inc l ude查找结果如下所示,所以匹配结果都被高亮显示:搜索完成后,输入”n”依次向下查找,或者”N”向上查找。如果想要逆向查找字符串也可以使用”?”来代替”跳转到指定字符vim有一招特别酷,不管你在哪儿,都能査找特定字符并直接跳转过去。比如说,我正在编辑HTM文件向前查找并直接跳转到<字符f<向前查找并跳转到<的前一个字符你可以这么理解,第一种找出目标(f),直接定位到查找对象;第二种到达目标(t),向着目标对象前进,定位到目标的前面。比较怪异的一点是,可以将它们作为命令中的名词。就比如刚才我在编辑这句时:修改到下一个”<”之间的内容ct对任意字符都可以这么做,比如说,句号,尖括号,圆括号,普通字母等等。这样你就可以查找文本并跳转,或者你知道具体位置并直接跳转。【注意:当你搜索指定字符时,可以使用分号跳转到下一处——不管是t搜索还是f搜索。逗号可以用来反向跳转到上一处。】搜索总结/{ string}:搜索字符串t:跳转到某一字符前F:跳转到某一字符处米:搜索当前光标位置单词的其他实例n:搜索完成后,跳转到下一个匹配实例N:搜索完成后,跳转到上一条匹配实例;:跳转到指定字符时,使用分号跳转到下一实例,:跳转到指定字符时,使用逗号跳转到上一实例游走于文本中提高编辑效率至关重要的一点是:在文本内的自由移动跳转。对vim来说,充分利用我们上文所说的vim语言的基本准则,就可以既简单又优雅地做到。首先,介绍基础概念。基本移动动作我们从键盘中间排开始介绍。受过训练的打字员一般都习惯将右手指放在jkl;这几个键上,就让我们从这里开始使用vim向下移动一行k:向上移动一行·h:向左移动一个字符:向右移动一个字符刚开始可能使用得不太习惯,不过只需几分钟的练习之后,就会习惯成自然,你甚至会想要在Word文档里面也这样用(顺便说一下,word文档不支持)。总结起来就是:右手食指和中指用来上移下移,右手食指和无名指用来左移右移。行内移动你可以在当前行内自由的移动0:移动到行首$:移动到行末·^:移动到行首非空字符t”:跳转到下一个引号前·f”:跳转到下一个引号处【注意:逗号和分号会重复之前的t和跳转】按单词移动除了按行和字符移动外,还可以按单词移动:"先前移动一个单词·e:移动到当前单词末尾当使用大写字母时,ⅴⅧm会忽略掉单词间的分隔符,这样原本被分隔符隔开的多个单词会因此被视为一个大单词。".向前移动二个大单词这种大写命令的优势在我们实际工作中会频繁地碰到。按句子或段落移动):向前移动一条句子:向前移动一个段落在屏幕间移动H:向上移动一屏M:移动到屏幕中间·L:移动到屏幕底端gg:移动到文件顶端G:移动到文件结尾·^U:向上移动半屏·^D:向下移动半屏F:下一页·^B:上一页来回跳转在普通模式下,可以在两点间来回跳转,这在实际操作中非常有用Ctr|-i:跳转到之前所在的位置Ctr|-o:跳回你实际的位置其他动作S|ine_ numberh:移动到指定行号M:移动到屏幕中间L:移动到屏幕底端E:向上滚动一行Y:向下滚动U:向上移动半屏D:向下移动半屏F:向下移动一页·^B:向上移动一页现在将所以移动动作总结到一起移动命令总结j: move down one I inek: move up one I i.h: move left one charactermove right one character0: move to the beg inn ing of the i ineS: move to the end of the i ine. w: move forward one word·b: move back one worde: move to the end of your word) move forward one sentence1: move forward one par agraphI ine number: move to a given line numberH: move to the top of the screenM: move to the middle of the screenL: move to the bottom of the screenE: scrol l up one lineY: scrol down one I inegg: go to the top of the fileG: go to the bottom of the fileU: move up ha if a pageD: move down hal f a pageF: move down a pageB: move up a pageCtr l-i: jump to your previous nav i gat ion locationCtrl-o: jump back to where you were注意:前面说过我将 CAPSL0咪K键映射到Ctr,所有这些基于ctr的命令,我都可以用CASL0CK来代替】修改文本好了,了解一堆在文本中移动的命令后,我们可以开始学习对文本的修改了。需要记住这一点:这些移动命令会一直陪伴着我们—它们是vim语言的一部分(它们是上文提到的修饰语)。Understanding modesInsert ModeCommand ModeVisual ModeEsc工Ctrl>Esc首先我们要弄清楚模式的概念。刚开始说到模式可能有点违反我们的直觉,不过一旦习惯之后就会使用得非常的自然。很多νim指南都从介绍模式开始,不过我发现如果直接从模式开始有点不好理解从普通模式与插入模式之间的切换入手会好一点·从普通模式开始。对新手来说νvim最让人郁闷一点莫过于打开文档却不能直接编辑。其实,你也可以输入一些个东西,不过如果你真这么做的话你的文档可能会变得一团糟。·普通模式也叫命令行模式,因为通常在这个模式下输入νim命令。这些命令可以是移动、删除或者其他操作,之后进入插入模式。·插入模式下可以直接对文件进行修改,有很多种方式可以从普通模式切换到插入模式。不过不用担心,虽然方式多样,只要多加练习就可以熟练使用了。·可视化模式下可以选择文本。这个模式看起来与普通模式非常像,不过这个模式下移动操作会改变高亮选择的区域。你可以逐行选择也可以逐字符选择,不管哪种选择模式下,移动操作都会高亮选择更多的文本内容。·选中之后,可视化模式的优势就体现出来了,我们可以对选中的全部文本做操作,大大提高了效率。·Ex模式下,光标处于屏幕最下方,冒号后可以输入命令。具体内容在后面做介绍。现在只需要知道在这种模式下可以运行一些命令行任务就可以了。除了上面介绍的模式外vim还有一些其他的模式,不过本教程不做介绍因为它们不是首要任务。记住vim语言