vim实用技巧读书笔记(2)

        • 技巧6结识 范式
      • 第二章普通模式
        • 技巧7 停顿时请移开画笔
        • 技巧8 把撤销单元切成块
        • 技巧9 构造可重复的修改
        • 技巧10用次数做简单的算数运算

技巧6.结识 . 范式

回顾前面3个.命令编辑任务
在技巧2中,我们想在一系列行的结尾添加分号.我们先用A;修改了第一行,做完这步准备之后,就可以使用.命令对后续行重复此修改,我们使用了j命令在行间移动,要完成剩余的修改,只需要简单地按足够多次j.就可以了.

在技巧3中,我们想为每一个+号的前后各添加一个空格,我们先用f+命令跳到目标字符上,然后用s命令把一个字符替换成3个,做完这步操作后,我们就可以按若干下;.完成此任务.

在技巧5中,我们想把每次出现单词”content”的地方都替换成”copy”,我们使用*命令来查找目标单词,然后用cw命令修改第一处地方.做完这步准备后,就可以用n键跳到下一匹配项,然后用.键做相同的修改.要完成这项任务,只需要简单地按足够多次n.就行了.

理想模式:用一键移动,另一键执行.

第二章:普通模式

技巧7 停顿时请移开画笔

就像画家只花一小部分时间涂色一样,程序员也只花一小部分时间编写代码,绝大多数时间用来思考,阅读,以及在代码中穿梭浏览.当确实需要修改的时候,谁说一定要切换到插入模式才行?我们可以重新调整已有代码的格式,复制它们,移动其位置,或是删除它们.在普通模式中,我们有众多的工具可以利用.

技巧8 把撤销单元切成块

输入一些词后使用撤销命令,可能会撤销最后输入的词或字符,然而在vim中,我们可以自己控制撤销的粒度.

u键触发撤销命令,会撤销最新的修改.一次修改可以是改变文档内文本的任意操作,其中包括在普通模式,可视模式以及命令行模式中所触发的命令,而且一次修改也包括了在插入模式中输入(或删除)的文本,因为我们也可以说,i{insert some text}是一次修改.

停顿的时候,就该退出插入模式了,当准备好继续写的时候,按A就可以重新回到原来的地方继续写作.

如果我认为我走错了方向,我会切换到普通模式,然后按u撤销,每次做撤销时,文字都按我最初书写时的思路,被切分成条理清晰的块.

在插入模式中移动光标会重置修改状态
撤销命令会回退从进入插入模式到退出此模式间输入(或删除)的全部字符.
但是如果在插入模式中使用了up,down,left,right这些光标键,会产生一个新的撤销块.
你可以把这个想象为先切换回普通模式,然后用h,j,k,l命令对光标进行移动,唯一的区别是我们并没有退出插入模式,这会对 . 命令操作产生影响.

技巧9 构造可重复的修改

在vim中,要完成一件事,总有不止一种方式,在评估那种方式最好时,最显而易见的指标是效率,那种手段需要的按键次数最少.然而,在出现平局的时候改如何选择获胜者?

在下例中,假设光标位于行尾处的字符”h”上,而我们想要删除单词”nigh”:

The end is nigh

反向删除

db   The end is h
x    The end is 

正向删除

b   The end is nigh
dw  The end is

删除整个单词

daw The end is

你可以把daw命令解读成delete a word,这样比较容易记忆.

只有最后一个方案,使用.的时候,可以删除一个单词.可以重复上次删除单词的操作.

技巧10.用次数做简单的算数运算

大多数普通模式命令可以在执行时指定次数,我们可以利用这个功能来做简单的算数运算.

很多普通模式命令都可以带一个次数前缀,这样vim就会尝试把该命令执行指定的次数,而不是只执行一次.

命令分别对数字执行加和减操作.在不带次数执行时,它们会逐个加减,如果带一个次数前缀,那么就可以用它们加减任意次数.例如,如果我把光标移动到字符5上,执行10就会把它变成15.

但是如果光标不在数字上会发生什么?文档中说,命令会”把当前光标之上或之后的数值加上[count]”,因此,如果光标不在数字上,那么命令将在当前行正向查找一个数字,如果找到了,它就径直跳到那里

举例:

.blog, .news {backgroud-image: url(/sprite.png);}
.blog { background-position: 0px 0px }
.news { background-position: -180px 0px }

我们要复制最后一行并且对其做两个小改动,即用”news”替换单词”blog”,以及把”0px”改为”-180px”

我们可以运行yyp来复制此行,然后用cw来修改第一个单词.
一种做法是用f0跳到此数字,然后进入插入模式手动修改它的值.
不过运行180要快的多.由于我们的光标不在要操作的数字上,所以该命令会正向跳到所要找到的第一个数字上 ,从而省去了手动移光标的步骤.

yyp
cW.news
180<C-x>

vim中把以0开头的数字解释为8进制,而不是10进制.007+001=010
set nrformats= 加入到你的vimrc里面,会让vim把所有的数字当成十进制,不管他们是不是以0开头.

你可能感兴趣的:(运维)