玩转Vim-札记(一)
玩转Vim-札记(一)
简介
在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神。一些人勇敢地拾起了Vim或Emacs,却发现学习曲线陡峭而漫长,还是有一些人留下来了,坚定地守护着这两大神器。一些说葡萄太酸的人想离开又不甘心,总是问:它们到底神在哪里啊?不过在此我只介绍传说中的编辑器之神-Vim。Vim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。这也得益于它可以用Vim脚本无限地扩展。 Vim.org 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。而且它的设计更符合Unix传统,它通过管道机制和系统内各种积木工具打交道,它讲究的是和系统内的工具程序协作来完成用户的任务。除此之外,它的定位也相当明确,就是做一个强大的编辑器,因此它的绝大部分扩展,都是为了更好的完成编辑文本的任务。Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,所以这两款编辑器一开始面向的主要用户就是写程序的人,现在仍然是。它们对编程加入了越来越多的支持,如语法高亮、智能缩进、关键字补全甚至集成调试。
初窥门径
要想玩嘛,首先需要先安装一个Vim再说咯。由于我的开发一般都是在CentOS上进行的,所以就说下它的安装吧。其实也就是一行命令的事儿了:
[root@voidy ~]# yum install vim
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
epel/metalink | 4.3 kB 00:00
至此vim安装结束,现在先不要进行任何操作,先接着往下看:
[root@voidy site-packages]# vim site.py
然后就会看到如下的界面:
def __boot():
import sys, imp, os, os.path
PYTHONPATH = os.environ.get('PYTHONPATH')
此时进入了所谓的常规模式(Normal Mode),既然提到了模式这个概念,那么就详细的说下Vim的两种模式吧。
常规模式(Normal Mode)与插入模式(Insert Mode):
常规模式:可以进行编辑,对已存在的文字进行一些操作,包括:复制,剪切,移动,修改,删除,格式化等等。
插入模式:也就是传说中的输入了。
而大部分的编辑器都只有一种模式,以上两部分的操作合并在一起进行,这就是为什么会有菜单和按钮的原因,而对于文字的范围选择也需要额外的方法来辅助,比如快捷键和鼠标操作等。无论是什么样的情况我们都不得不迫使大脑在思考(输入)和寻找(编辑)中不停转换,即使你不在意这一点,始终有一些操作你是无法流水化的。比如说:在光标随意停留在某处的时候,你能闭着眼睛用鼠标点击到某个功能吗?Vim 就可以。换言之一旦你掌握了 Vim之后,所有的操作——强调一遍:所有的操作都可以不用寻找,不用鼠标等工具辅助,你可以全副身心投入在你的主要目标上。
那么问题来了,如何在两种模式间进行切换呢?
其实很简单的。进入文件之后直接就是常规模式,那么从常规模式进入到插入模式只需要从以下几个命令选择一个即可:
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
那么如何从插入模式进到常规模式,最常见的有三种:
使用
ESC
键:这是最通用的方法,它唯一的缺点就是距离标准键位较远,然而由于它的位置在左上角,所以你也可以做一些强化练习来准确的找到它。记住:不要看键盘去找,要形成肌肉记忆!也有很多人偏好修改ESC
键位,比如说把它转移到CapsLock
,即大写锁定键上去,这是可取的,并且也十分有效,然而我不推荐这么做。因为修改键位相对来说麻烦一些,在某些场景会让你颇感不便。比如说你去客户那里安装服务器,遇到的几乎都是标准键盘,不光是在 Vim 下让你难受,其他的地方也是如此,因为ESC
太常用了,而且没有第二替代键。使用
Ctrl-[
组合键:它的功能和ESC
完全等价,只是组合键稍微困难一些。这里的窍门是Ctrl
键的位置,我会把它重新映射到CapsLock
键上去。这样一来两手的小指稍微移动就可以完成,稍加训练即可熟练掌握。这也是我不推荐ESC
的第二个原因,至于之前提到过的键位映射带来的后遗症,不要紧,键盘上都有不止一个的Ctrl
键,你根本无需调整键位。使用
Ctrl-c
组合键:看起来它似乎比Ctrl-[
更容易一些,但是它们的含义有很大的差别。在终端下Ctrl-c
的意思是“中断”,基本上它会中止所有正在运行的命令,当然它也可以在 Vim 里带我们中断一切操作返回默认的常规模式。但是 Vim 有一些操作其实是依赖正常的返回方法的,也就是ESC
或者Ctrl-[
,使用Ctrl-c
会导致这样的功能无法被有效触发(有不少插件依赖这些触发功能,所以要小心莫名其妙的问题)。总而言之这是最不推荐的方法,除非你心里很有数,并且能在正确的时候使用前面两种方法。
好的,模式的介绍就此打住,在真正玩之前,特别建议要学会VIm的移动指令:Vim 的基本移动就是 h
j
k
l
这四个键,分别代表 左
下
上
右
。
h 光标左移
j 光标下移
k 光标上移
l 光标右移
很特别是吗?好吧,我承认是很古怪。然而你必须要习惯它们,并且永远不要更改它们的键位!这样你就可以没有小键盘的情况下也可以快速的移动,当然,最主要的是你还可以手指不用怎么大幅度的移动。至于为什么要这么设计?好像键盘都是这么设计的吧。不信的话戳这里。
很不好记,很难练是么?不想练习是么?没事,下面给你四个有趣的东西,相信你会不知不觉爱上这些方向键的:
- Vim Adventures 这是一款在线游戏,玩法超级简单,控制键都是 Vim 的移动指令。你所要做的就是把键盘当成手柄,移动一个阴影来寻找字母、人物、宝藏、钥匙等等。如果你无法过关也没有关系,重要的是控制方向这个环节能够把它练习到无需思考且不会犯错就可以了。
- Vim Snake 如果你觉得上一个游戏有点难,因为无法过关让你有挫折感的话,这个游戏就简单多了——贪吃蛇,谁不会玩?只不过你只能用
h
j
k
l
来控制方向而已。注意,只有在插入模式(i
)才能吃到东西,只有在常规模式(ESC
)才能移动方向。完整的流程如下:移动 -> 对准目标 -> 按下i
直到吃到目标 -> 迅速按下ESC
-> 移动。关于模式,我们下次解释。 - Open Vim Tutorials 如果以上两款游戏都让你为难的话(喂,你不是吧?!),那么这就是你的救星啦。请直接跳到第三章练习四方向移动,等到开始习惯这种感觉了再继续挑战游戏。
- Vim Genius 这也是好东西,它比上一个更贴近 Vim 的哲学。它不让你看到要按哪个键,而是给你文字提示让你盲打对应的键,其好处是锻炼自己的肌肉记忆和条件反射思维。然而它比较依靠你的自控能力与耐心,另外英文不好也会有点拖累。
至此,Vim的大门已经打开,此次介绍也就到此结束了。
以上。Enjoy Vim!
PS:本博客欢迎转发,但请注明博客地址及作者,因本人水平有限,若有不对之处,欢迎指出,谢谢~
博客地址:http://www.cnblogs.com/voidy/
博客新址:http://voidy.net
<。)#)))≦
玩转Vim-札记(一)的更多相关文章
- 玩转VIM之将Vim全副武装
玩转VIM之将Vim全副武装 懒癌末期的我貌似很久没有写博客了,已经欠了多少篇在计划中的博客我已然不好意思说了.好了,言归正传,在前三篇介绍了Vim作为代码编辑器之后可能会有人说,要学习那么多指令真的 ...
- 玩转Vim 编辑器
一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- 辛星跟您玩转vim第一节之vim的下载与三种模式
首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...
- 辛星跟您玩转vim第二节之用vim命令移动光标
首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载.这里是csdn的下载地址:csdn下载.假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http:// ...
- 辛星跟您玩转vim第四节之操作文本内容
首先值得一提的是.我的vim教程pdf版本号已经写完了.大家能够去下载,这里是csdn的下载地址:csdn下载,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http:// ...
- 玩转vim编辑器
1.vim 编辑器可以自定义配置:包含初始化命令的文件叫vimrc(h vimrc),version ---查看版本号.系统-用户配置文件所在位置. 2. 可视模式: 操作一块区域代码: 按v ...
- 辛星跟您玩转vim第三节之程序猿特须要的移动方式
前面第二节我首先值得一提的是,我的vim教程pdf版本号已经写完了.大家能够去下载,这里是csdn的下载地址:csdn下载.假设左边的下载地址挂掉了.也能够自行在浏览器以下输入例如以下地址进行下载:h ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
随机推荐
- redis未授权访问getshell
redis未授权访问的问题一年前就爆了,当时刚开始学安全,还不太懂.今天借着工作的机会来搞一把,看看能不能拿下一台服务器.其实前几天就写好了一直想找个实际环境复现一下,一直没有找到,只说下大致思路. ...
- Educational Codeforces Round 10 D. Nested Segments 【树状数组区间更新 + 离散化 + stl】
任意门:http://codeforces.com/contest/652/problem/D D. Nested Segments time limit per test 2 seconds mem ...
- c#用链表存储并读取配置文件(代码部分)
//读取配置参数 private void loadcofig() { //List<param> camra1 = new List<param>(); List<st ...
- URL 与URI 的区别
作者:Octocat链接:https://www.zhihu.com/question/21950864/answer/89835520来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- 【洛谷P1107】 [BJWC2008]雷涛的小猫
雷涛的小猫 题目链接 n^2DP比较好想, f[i][j]表示第i棵树高度为j的最大收益 直接从上到下转移即可,每次记录下max f[1~n][j] 用于下面的转移 f[i][j]=max(f[i][ ...
- Android学习笔记_1_拨打电话
1.首先需要在AndroidManifest.xml文件中加入拨打电话的权限,对应的配置文件: <?xml version="1.0" encoding="utf- ...
- HDU1069 Monkey and Banana
HDU1069 Monkey and Banana 题目大意 给定 n 种盒子, 每种盒子无限多个, 需要叠起来, 在上面的盒子的长和宽必须严格小于下面盒子的长和宽, 求最高的高度. 思路 对于每个方 ...
- OS_EVENT 信号量
1. OS_EVENT *T2sem=(OS_EVENT *)0; 这句代码的意思是 把OS_EVENT类型的一个指针T2sem赋值为0: 其中 OS_EVENT是数据类型,*代表是指针类型,(O ...
- papers-06-02
午睡被同事吵醒,只好干活.看到微信公众号有一篇文章说老朋友呢,点进去发现原来相关的工作好多,而且好新好细致. 微信的文章可以见这里: 探究最陌生的老朋友Softmax 里面的几篇文章可以看看. Lar ...
- c#实现的HTTP服务端
这次在整理一个服务组件的时候,需要涉及到HTTP的请求,HTTP是应用层,建立在TCP之上的.因此,可以用TCP服务端接收HTTP请求,只需要解析请求内容.HTPP有固定的格式,大家可以直接搜索.网上 ...