选中多行 基础 字符移动 k 上移 k h 左移 h l l 右移 j j 下移 你也可以使用键盘上的方向键来移动,但这么做h j k l的存在就失去了意义 之所以使用h j k l来控制方向,其主要目的是让你的手不离开键盘中心,从而提高效率 tips:在命令前加上数字代表命令执行次数,如:5k,表示上移5行 G 跳转到文件末尾 gg 调整到文件开头 单词移动 W w 移动到下一个单词开头 E e 移动到下一个单词结尾 B b 倒退到上一个单词开头 需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会 同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词 开头我也许会多说几遍,因为这个技巧很重要 整行移动 0 移动到行首 $ 移动到行末 移动到下一行开头 - 移动到上一行开头 这里需要注意的是 -和上面的j k有什么不同之处 j k也是移动到上一行和下一行,但它们移动的是光标所在的位置 -不管你的光标在何处,总是移动到下一行或上一行的行首 进阶 滚屏 Ctrl f 往前滚动一整屏 Ctrl b 往后滚动一整屏 Ctrl d 往前滚动半屏 Ctrl u 往后滚动半屏
Ctrl e 往后滚动一行 Ctrl y 往前滚动一行 看似比较多,但是可以根据键盘的位置来进行记忆,并且下面两个也不常用 上面的滚屏都有一个共同点,就是会改变光标的位置,且屏幕也在改变 如果想让光标维持在原来的位置实现滚屏请看下面 用z调整光标 z<Enter> 将光标所在行移动到屏幕顶端 z. 将光标所在行移动到屏幕中间 z- 将光标所在行移动到屏幕低端 tips:980z<Enter>可以将第980行移动到屏幕顶端 好吧,有时候你其实不想滚屏,你只想在当前屏幕中移动 请往下看 在屏幕中移动 H 移动到屏幕顶端的行 M 移动到屏幕中央的行 L 移动到屏幕底端的行 nH 移动到屏幕顶端往下的第n行 nL 移动到屏幕顶端往上的第n行 据我猜测这三个字母应该是HIgh、Middle和Low的缩写,其实挺好记的 多练习几遍就行了,需要注意的是:这里只是光标的位置变化,和上面两种不同 tips:你可以用 -和j k实现同样的位置变化,只不过要操作多次而已 -和j k的区别忘了吗?往上看看吧 在当前行移动 ^ 移动到当前行的第一个非空格处 n| 移动到当前行的第n列 这里的^与上面的0通常情况下表示的位置是一样的 而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移 根据文本块移动 所谓的文本块也就是句子、段落、小节等 ( 移动到当前句子开头 ) 移动到下一个句子开头 { 移动到当前这一段开头 } 移动到下一段开头 [[ 移动到当前这一节的开头 ]] 移动到下一节的开头 其中,VIM以? . !等符号来标记一个句子 空白行来标记一个段落 用节宏来标记一个节(节宏是什么我还没搞清楚) 根据行号来移动 Ctrl g 显示当前行信息 nG 转至第n行 G 转至文本末尾 gg 移至文本开头 如果你不知道当前是多少行的话就可以用Ctrl g来查看 如果想转到第800行,可以用800G 其实z命令也可以做到,并且把光标移动到第一行 tips:``反引号可以返回到使用G之前的位置 基础 字符位置插入 i 在光标之前插入 a 在光标之后追加 你看,其实刚开始用这两个就足够了,这就是最基础的 为什么这么说呢?因为你可以依靠上一节中的移动命令来达到任意位置,然后再大力插入 不要忘了,VIM中最重要的技巧之一就是命令间的配合使用 进阶 行位置插入 A 在一行的结尾处追加 I 在一行的开头处插入 o 在光标所在位置的下一行打开新行插入 O 在光标所在位置的上一行打开新行插入 当然,如果你认为先移动光标然后插入或追加慢了,那么就应该用上面这种方法 它们是以行做单位 在这里我还是需要提醒一下,命令前加数字代表执行次数 tips1:10I*<Esc>先输入10,然后输入i,接着输入*号,最后按<Esc> 这样就可以在一行开头输入十个* tips2:同样,5o###<Esc>先输入5,然后输入o,接着输入###,最后按<Esc> 这样就可以在下列5行中每一行开头插入### 看,这样一来,再需要输入重复文本的时候就变得方便了对不对,你可以自己试着扩展思维…… 但我依然会不厌其烦的提醒你,命令的组合也是最重要的技巧之一 合并行 有时候你也许会想合并两行 J 合并两行 你只需要把光标移动到首行,然后按3次J即可 让我感觉奇怪的是,我直接使用3J却只能合并两行,4J才能合并3行 谁来告诉我为什么 字符删除 x 删除光标所在处字符 X 删除光标所在前字符 这里没有什么可注意的地方,但需要说明一下的是 通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的 如果是头几天使用还好说,但从长久考虑,你还需要学习下面的删除命令 单词删除 dw 删除到下一个单词开头 de 删除到本单词末尾 dE 删除到本单词末尾包括标点在内 db 删除到前一个单词 dB 删除到前一个单词包括标点在内 很明显,d是delete的缩写,而上面的x则是老式的清除意思 这里e表示往前删除一个单词,b表示往后删除一个单词,第一节中移动写的很清楚 要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除 而大写的E B则不会 行删除 dd 删除一整行 D d$ 删除光标位置到本行结尾 d0 删除光标位置到本行开头 这三种用法是最好理解的 我一开始便说过,删除命令需要配合移动命令才能发挥更多作用 你可以看看第一节内容,然后自己尝试着删除一节或一段内容等 tips:3dd代表删除三行,聪明的你一定早就知道了 操作相同文本的时候复制尤其有效,在Windows中我们都习惯了先用鼠标选择文本 而Vim下则不用那么麻烦,你甚至可以使用可视模式操作,但这里先略过 我在这一节主要说说命令模式下的复制 在讲复制之前我要先说一个简单到不行的命令 粘帖 p 粘帖 复制的形式可以很多,但是粘帖的形式却没多少 无非就是加数字达到多次粘帖什么的 其实准确的说,p应该是放置的意思 不过我也搞不清是paste还是put的缩写 单词和字符复制 ynl 向右复制n个字符 ynh 向左复制n个字符 ynw 向前复制n个单词 ynb 向后复制n个单词 由于复制操作通常是在量比较大的情况下进行 所以这里我使用了n代替需要操作的个数 需要说明的是,这里看起来并没有多大意义 因为复杂字符和单词还没有直接插入的方式来的快 行复制 y0 复制到行首 y$ 复制到行末 yy 复制整行 yH 从当前行复制到屏幕顶端 yL 从当前行复制到屏幕低端 这里前两条用的也比较少 但是整行或多行复制才是yy的方便之处 tips:1. 4yy也就是复制4行 2.y几乎可以跟任何光标移动命令结合,不信你试试 剪切 说完了复制这里顺便把剪切的命令也说下 其实剪切很简单,就是先删除,然后按p粘帖 比如dd删除一行后,这一行会被放入缓冲区 接着移动到你想放置的位置,按p,就被粘帖好了 恢复在VIM里比较简单,不过想要具体恢复到某个时间段很难 就我的经验而言,有时候使用恢复还不如删了重写 这里我们来讲讲恢复、撤销和重复命令的使用 u 撤消上次命令 U 恢复整行 ctrl r 重做 . 重复 e! 全文恢复 如果有使用office的经验,那么这里的撤销和重做应该很好理解 比如我用dw删除一个单词,按下u就会回到没删除之前 一旦我后悔了,ctrl r便会重新删除一次 其中U也十分好用,它能恢复本行内容,无论你在本行做过什么 需要注意的是,你不能在别处操作多次后再回到那一行来恢复 接着.号能够重复你上次命令 比如dd删除一行,你接着按一次.就相当于重新使用一次dd命令 如果你按5.那就是重复dd5次了 最后e!就牛逼了,当你把代码写的无比凌乱之时 它能恢复到最初形态,只要你还没使用过w、wp或x保存
轻快的VIM(四):修改 我想每个Coder都深刻的明白,修改这一操作在代码的世界里是多么重要 与其说修改,无非就是删除了再插入,但VIM把这两者结合的很有效率 闲话少说,让我们再次使用这轻快的VIM在code上起舞 字符替换 r 单个字符替换 R 连续替换 ~ 更改大小写 很简单,多试试就行了 tips:4~更改连续4个字符的大小写,很有意思 单词修改 cw 从光标处修改到单词结尾 cb 从光标处修改到单词开头 这里直接使用cw或cb操作很简单,要注意的是加数字的使用方式 此时2cw 或者 c2w都可以使用,功能一样 行修改 c$ 从光标修改到本行末尾 C 功能同上 c0 从光标修改到本行开头 cc 删除整行从头修改 S 功能同上 s 删除光标所在位置的字符,然后插入 这里有点难记,主要是多练习才能看到效果 其中,c$和C功能是一样的,都是从光标修改到行尾,d$ a达到相同效果 c0和d0 i效果一样,区别是少输入一次 cc和S效果也是一样,其实S是属于插入的范畴,这里类似,所以一起讲了 再来是s,它会删除光标处的字符再插入,效果等同于x i或c space 多行修改我想就不用说了,前面加上数字再组合命令就可以了 从上面看来,我们应该可以更深刻的认识到,VIM中大部分命令是组合使用的 利用好了这点才能更快的摸索出自己的使用习惯,从而高效修改 Reference: 1、Vim实用技巧第二版 来源:https://www./content-4-665201.html
|