NO1 .认识.命令
例 删除man.config中第1到30行的注释
1.光标移到#上,按下x删除
2.按下j将光标移到第二行#上,之后按下.
3.可以看到第2行的#也被删除了因为.就是重复上次命令,而我们上次执行的是删除
4.所以删除1-30的# 我们可以 j.j.j.j.j… 直到删除第30行的#为止.
当然了 也可以为1-30行 添加注释
结合.命令很强大不是吗?
NO2. 查找并手动替换
既然是手动替换那么就需要确认了 经过了vim command handbook的训练 你自然会想到 :%s /old/new/gc
但是既然是upgrade 我将会介绍另一种做法
例: 将文本中的man改为MAN 第7.8行除外
1.光标移动到man上,并按下* 所有的man都会被高亮 //具体的*命令推荐使用:help * 进行查询 类似于unix like上的Manpage
2.n移动到下一个 N移动到上一个 不过本例中用不到只是提一下
3.cw MAN<ESC> 当再次按下.时就会执行执行 cw MAN<ESC>//千万别这时候按 只是举例说明.命令
4.n.n.n.………… 到第7.8行 不需要修改所以不用按. 直到全文修改完毕
这么做其实并不比:%s /old/new/gc 高效和准确而是提供一个思路
如果你善于总结和思考的话会发现O = ko
(我个人使用的是ko因为按键速度更快)
同时, 任何命令结合.命令都将成为强大的工具 而最强大的功能在于这些组合完全是个人的潜力.和乐高积木一个道理(我小时候只玩过山寨版的,不过至少也是积木)
也有人把第4步的 n.n.n… 一个键移动光标,一个键修改 称为.范式(我忘了是哪本书了…)
NO3. 构造可重复性的修改
例 this is a test 光标在is的i上 将句子删除只剩this
最简单的办法当然是一直按x 不过这里要推荐的是d3w或d$
如果修改后还需要做出重复性的动作d3w或是d$和.命令结合或是p命令结合就会方便许多.
而且d3w和d$的按键次数也比x的要少
NO4. 最大程度使用.命令而避免使用次数
4dd d4d 与 dd... (不是省略号而是3个点)
4dd 执行4次删除一行
d4d 删除4行
根据实际使用 这两种一样的 按下u 会一次性恢复4行.
而推荐使用dd...是因为在实际使用中 经常性会多删除一行或少删除一行
这时候多删除一行只要多按一下u 少删除一行只要多按一下.
是不是比要按下u 再重新dnd 要快呢? (n代表你要删的行数)
更重要的在高度集中的编码状态 从657行删除到662行 还是要经过计算的(思路有可能就此被打断)
这显然这与我们把vim训练成肌肉记忆的本能和vim的使用哲学不符. dd.... 显然更高效
NO5.拒绝使用ESC和忘掉大小写转换键
这里指的大小写转换键并不仅仅是capslock.而是切换大小写的按键
很不幸的是由于windows和X86 PC机的诞生. 键盘的阵列也经过变化了.目前我们大部分所用的是巨硬(Microsoft)的US 阵列键盘.而针对unix like系统的键盘也有 例如HHKB和mac键盘 而我个人推荐自己改造GH60 HHKB阵列 ,不过这是另一个话题了.
在Bill Joy最初设计vi的时候 使用的键盘如下图
可以很明显的看到如今的capslock是当年的control而esc在tab的位置
当年使用vi按esc退出当然是非常容易了,而如今esc的距离里键盘很远.而且对于笔记本来说还容易按到F1.实在是非常不方便.当然了 这时候会有”资深”vim专家推荐交换capslock和ESC 不可否认这么切换确实非常快. 但是这么做仍然不是最有效率的做法.同意我怀疑提出这么做的人是否会使用下面我要介绍技巧插入模式的删除,和寄存器(我都怀疑他是否知道寄存器的存在) 而且使用频率极高的ctrl + f 翻页功能不会不用把?(别说你不知道)
我个人目前的做法: 即供参考 这只是一种思路
windows中使用Gvim
capslock交换 右control作为额外的control 右alt改成capslock(在windows系统中也可以容易实现而且不会影响windows的快捷键,因为windows中的快捷键习惯已经将大部分中国人绑架所以作为额外的control比较合适 而右alt基本很少人使用 我个人基本没用过...) 第一篇的文章中我提供有改键软件的下载
Linux
capslock交换control (linux系统的快捷键可以重新学 不会被windows左下角的ctrl而绑架)
这时候肯定会问,咦,怎么退回到普通模式?
Ctrl + [
详细了解请输入:h i_CTRL-[
相比ESC来说,缺点是多了一个按键并不是什么太大的麻烦,只是适应较难.几天就能改正.
但同时也有优点 首先你换来了高效的CTRL+ 快捷键 非常实用. 你避免了ESC依赖症而导致的无法使用他人的Vim (不是按键的问题而是操作习惯被绑架)最重要的 别人也可以在你的机器上工作(键位可以在改回去).如果他是使用ESC的话.
有人会问了 要使用大写怎么办?
而且在实际的编辑工作中很少需要用到大写 如果是一行需要大写 对于我这种vim小白会选择使用gUU 将当前行转换为大写
如果是一个单词呢?
方法1 编辑模式下 <enter> 另起一行 输入单词 退出到普通模式 0光标移动到行首 gUU 大写J将两个合并 当然了这种方式过于极端
方法2 退回到普通模式下按v进入到可视模式 选择单词 输入gU 切换成大写
方法3 刚才推荐的右alt (你这不废话么)
题外话. 如果不喜欢改软件和注册表(需要重启系统)的方法来改键.目前机械键盘应该都带交换capslock和CTRL的功能 (不过这么做windows的下最常用的CTRL+C Ctrl+V 就要重新适应了)
插播一条广告:
推荐2款我正在使用的键盘 可以交换按键不需要刷固件的 ikbc poker2 60%键位 价格大概499 Vim高烧者 强烈推荐
RK 静电容全域45g 价格好像是560时间太久了记不太清了 87键适合喜欢有F功能区和上下左右键的朋友
NO6. 插入模式中的删除 (shell中Bash通用,其他shell没试过 这时候是否觉得投资Vim和linux的学习非常划算呢?因为UNIX世界这些基础的东西基本不会变,贬值的要比巨硬的慢)
Ctrl + h 删除光标前一个字符 = backspace (特别常用,店长推荐)
ctrl + w 删除一个单词
Ctrl + u 删除到行首
NO7. 插入模式中执行一条普通模式命令(店长推荐,尤其是编码过程中)
Ctrl + o
zz (小写)重新绘制屏幕并将光标所在行,显示在屏幕中央(光标位置不变)
z. 重新绘制屏幕并将光标所在行,显示在屏幕中央(光标跳到行首)
处于插入模式而且光标位于屏幕最后一行 想滚屏却又不想离开插入模式
Ctrl + O zz
就是这么任性,高效 普通的编辑器要狂敲回车然后光标再移回来
善用vim的manpage 你会发现更多 :h zb
NO8. 高级可视模式
当以可视模式进行选择时,经常会多选和少选一些内容怎么办? 退出可视模式,重新选?
不需要. 你只需要 按下 o 激活高亮区域的端点 //高亮区域的范围其实是由2个端点界定.
可是模式中 v以光标选择 大写V以行选择 这时候问题来了 如果我想切换呢?
Ctrl + v
显示上次选择的高亮区域 gv (如果上次选择被删除的话显示就会不正常)
这次就先介绍这么多,主要是写文章太麻烦了 (买不起虚拟主机和域名 100块在我这是稀有物种)
今天是光棍节,扫一下支付宝二维码,赞助一下博主买虚拟主机 1块钱不嫌少,1w块也不嫌多.让世界充满爱.