Vim enhance part1
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块也不嫌多.让世界充满爱.
Vim enhance part1的更多相关文章
- 删除rpc01
vim /opt/ltp/runtest/stress.part3 修改/opt/ltp/runtest/stress.part3 删除rpc01: 142 systemctl status gdm ...
- 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础
上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...
- Vim配置及说明——IDE编程环境
Vim配置及说明——IDE编程环境 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 9. ...
- spf13-vim – The Ultimate Distribution for Vim Editor
spf13-vim is a cross platform and highly customizable assortment of vim plugins and various resource ...
- vim 高级使用技巧
前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选.其实操作系统只是我们使用的一个工具, windows也好lin ...
- VIM的高级使用
VIM的高级使用 转:http://www.cnblogs.com/itech/archive/2012/02/22/2363111.html 1)一些常用的Vim配置,在~/.vimrc中 syn ...
- 分享一下个人的Vim配置文件
强烈拥护开源精神,高举开源大旗,今天我就分享下我自己结合网上还有自己实际使用配的vimrc,可以给各位参考下,不要见笑哈,具体说明我在rc里写的也很详细,可以具体看下,也希望可以借这个机会能多认识认识 ...
- vim常用操作技巧与配置
vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中 ...
- VIM学习二: VIM配置代码及效果图
vim学习及插件 参见:http://www.cnblogs.com/caixu/p/6337926.html .vimrc配置 "***************************** ...
随机推荐
- LinQ的高级查询
模糊查询: //数据库 + 自定义名称 =new 数据库 //例子: mydbDataContext con = new mydbDataContext(); //模糊查询表达式中用.Contains ...
- 通俗易懂的Nhibernate教程(1) ----- 基本操作,映射,CURD
网站架构: 1.图片 2.说明 Data ----------------------- 类库项目,数据访问层,由Nhibernate提供数据相关操作 Mapping ------------- ...
- AJPFX总结Java 程序初始化过程
觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱.我觉得还是要搞清楚它的过程比较好.所以现在结合我的学习经验写出具体过程: 过 ...
- AJPFX浅谈Java性能优化之finalize 函数
★finalize 函数的调用机制 俺经常啰嗦:“了解本质机制的重要性”.所以今天也得先谈谈 finalize 函数的调用机制.在聊之前,先声明一下:Java虚拟机规范,并没有硬性规定垃圾回收该不该搞 ...
- 【学习笔记】C++文件操作详解(ifstream、ofstream、fstream)
C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...
- redis安装(windows)
软件环境:由于redis只有linux版,而windows版是微软自己做的,最新版只到3.2.100(linux的版本已经到5.x) 1.1.1. redis安装 首先去官网下载安装包 得到的安装文 ...
- iOS中使用 Reachability 检测网络区分手机网络类型 WiFi 和2 3 4 G
如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...
- HYSBZ 1086 王室联邦 (树的分块)
题意:国王想把他的国家划分成若干个省.他的国家有n个城市,是一棵树,即n-1条边,编号为1..n.为了防止管理太过分散,每个省至少要有B个城市,为了能有效的管理,每个省最多只有3B个城市.每个省必须有 ...
- 【OpenCV】motion blur 的简单实现
先推荐界面比较丑,但是还不错的在线图片处理网站: http://www168.lunapic.com/editor/ 由于最近在做毕设了,结合前面关于图像处理和机器学习的操作,想做一些好玩的东西,其中 ...
- Django的架构
简介 Django继承并简化了MVC架构.MVC中的Controller部分基本全由Django完成.View部分被分割成两部分,即:负责HTML渲染的模板和负责显示逻辑的视图.所以Django又被称 ...