Vim 学习指南
作者:耀耀
出处:http://www.linuxeden.com/html/news/20130820/142667.html
Vim 学习指南
关注我们: 
![]()
第一层次 – 适应
在标准的编辑器里,写一些东西到屏幕上只需要在键盘上输入就足够了,在Vim中不是这样。Vim在普通模式里,让我们转到插入模式,键入字符i。 你应该感觉好一点了,能像在标准编辑器里输入了,回到普通模式只需按ESC键即可。 你现在知道了如何在插入和普通模式之间转换,下面是你在普通模式下需要记住的指令:
|
|
只有5个命令,一开始只需掌握这些,当适应了这些命令后(大概需要一天或更多的诗句),你可以转到第二层级了。 但首先,稍回顾一下普通模式。在标准编辑器里,要复制的话你需要使用ctrl键(Ctrl-c)。实际上,当你按下ctrl键时所有的按键的意义都改变了。在vim普通模式下就像在ctrl键自动按下的情况下使用编辑器。 最后的补充:
|
第二层 - 爽一把你知道,命令是由需求所定。是时候学习更多命令了。下面这些是我的建议:
花些时间学习所有这些命令。一旦完成后,你应该就能完成在像在其它编辑器中所有事情。也许,你可能还会觉得有点笨手笨脚。但是跟着我进入下一个层次,你就会发现为什么vim值得你额外付出的努力。 |
第三层次——更好,更强,更快为达到这一步表示祝贺!现在我们可以开始这有趣的东西。在第三层次,我们将只讨论命令,它兼容旧的vi编辑器。 更好让我们看看vim是怎么帮你做重复事情的。 1. .→(点)可以重复最后一个命令, 2. N<命令>会重复命令N次。 一些例子,打开一个文件然后写入下面内容:
|
更强知道怎么有效的移动对vim是非常重要的。请不要跳过这一节。 1. NG→定位到第N行 2. gg→1G的快捷方式——定位到第一行 3. G→定位到最后一行 4. 单词移动:
现在让我们来谈谈几个非常有效率的移动:
相信我,最后的三行命令是精华。 |
更快记住了vi移动的重要性?这里就是原因。大多数命令使用下面这种通用格式: <开始位置><命令><结束位置> 例如: 0y$意味着
我们也可以使用ye,从当前位置复制到单词的末尾。但是y2/foo 会一直复制到第二个foo出现的地方。 但对于y(复制), d(删除), v(visual 选择), gU(大写), gu(小写)等等命令都是真实的。 |
第四层次 – Vim 超能量使用上述的命令,你就觉得很爽了。但是现在,这里才是杀手锏。正因为其中有些特性,我才使用vim的。 在当前行移动:0^$g_fFtT,;
一个有用的提示:dt"→删除所有的直到”。 |
区域选择 : <命令>a<对象> 或 <命令>i<对象>这些命令仅仅能用在可视化模式的一个操作后。但是他们相当的有用。他们的主要模式有: <命令>a<对象> 和 <命令>i<对象> 命令可以是任何命令,例如 , d(删除),y(拉取),v(进入可视化模式)。对象可以是: w一个单词,W一个单词 (扩展的),s一个句子,p一个段落。而且也可以是普通的字符, 例如",',),},]。 假设现在光标在 (map (+) ("foo")) 这个字符串的第一个o上。
|
矩形选择块:<C-v>矩形选择块能够方便的对多行代码进行注释。 如:0<C-v><C-d>I-- [ESC]
![]() 提示:如果你的剪贴板在Windows中是非空的话,那么你就不得不使用<C-q>来代替<C-v>。 |
实现:<C-n>和<C-p>.在插入模式中:只要打出单词的首字母,然后按<C-p>,神奇的事情就发生了...
宏命令 : qa 做的一些事,@a,@@qa 把你的动作记录在了寄存器 a 中。然后@a 就会将存在寄存器中的动作重现,就好像你从新打了一边。@@是将你最后一次执行的宏命令再次执行的快捷键。
|
可视化模式选择: v, V, <C-v>我们已经看到过<C-v>例子,这里还有v和V。一旦已经选择好了,你可以:
![]() 在可视化模式所选择的行的末尾添加一些东西:
|
分割:: split 和 vsplit这些是很重要的命令,所以你应该在:help split看看。
|
小结这些是我经常使用的90%的命令。我建议你每天学习一到两个命令。在两到三周之后,你将会感觉到vim在你手上使用的是如此的强大。 学习vim更多的是记忆训练。值得高兴的是vim诞生了一些非常好的工具和优秀的文档。当你非常熟悉大部分基本命令之后就可以使用vimtutor了。另外,你应该仔细的阅读这页 ::help usr_02.txt. 然后,你要去学习了解寄存器,插件已经其它的功能。学习vim就像学钢琴一样,所有的都要掌握好。 |
参与翻译(4人):Lesus, Garfielt, szkiti, 耀耀
本文转自:开源中国社区 [http://www.oschina.net]
本文标题:Vim学习指南
本文地址:http://www.oschina.net/translate/learn-vim-progressively
Vim 学习指南的更多相关文章
- Vim学习指南
你想尽可能快地自学vim(为大家所熟知的最好的编辑器) .这是我学习的方法:从细处入手然后慢慢掌握所有技巧. Vim 六十亿美元的编辑器 设计优良,强壮,快速. 学习vim并把它作为你的下一个文本编辑 ...
- Unix和Linux下C语言学习指南
转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性
2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...
- [go语言学习指南]
内部分享,根据自己的经验,收集汇总的go语言学习指南. 适合新手入门. 可以通过这里进行下载.
- Oracle学习指南
Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...
- 推荐10个很棒的AngularJS学习指南
AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...
- 项目管理之道--纪我的新书《PMP项目管理认证学习指南(第4版)》出版并预祝大卖!
新年伊始,我最新的项目管理书籍——<PMP项目管理认证学习指南(第4版)>也出版了,真是新年新气象啊!翻译英文书籍是一件任重道远的工作,除了要具备扎实的基本功,熟悉相关的领域外,还需要细致 ...
随机推荐
- git 教程1
一. git简介 1.1 git是什么? 是一个分布式版本控制软件 1.2 git的作用是什么? 版本控制 ,团队协作 1.3 git的优势在哪里? 同类型的版本控制软件:CVS及SVN,Linus一 ...
- C语言提高 (5) 第五天 结构体,结构体对齐 文件
1昨日回顾 2作业讲解 3 结构体的基本定义 //1 struct teacher { int id; char name[64]; }; struct teacher t5 = { 5, " ...
- 区分JAVA创建线程的几种方法
1. start()和run() 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行.然后 通过此Thread类调用方法run()来完成其运行操 ...
- NOI 2016 循环之美 (莫比乌斯反演+杜教筛)
题目大意:略 洛谷传送门 鉴于洛谷最近总崩,附上良心LOJ链接 任何形容词也不够赞美这一道神题 $\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}[gcd(i,j) ...
- 3.2、使用Flask-Bootstrap集成Twitter Bootstrap
Bootstrap(http://getbootstrap.com/)是 Twitter 开发的一个开源框架,它提供的用户界面组件可用于创建整洁且具有吸引力的网页,而且这些网页还能兼容所有现代 Web ...
- Ajax发送简单请求案例
所谓简单请求,是指不包含任何参数的请求.这种请求通常用于自动刷新的应用,例如证券交易所的实时信息发送.这种请求通常用于公告性质的响应,公告性质的响应无需客户端的任何请求参数,而是由服务器根据业务数据自 ...
- ASP.NET学习笔记01
ASP.NET初级工程师的核心要求:能够实现一个基本的网站. ASP.NET初级工程师面试主要要求: 1.基础的数据结构和算法 2.C#编程语言基础 3.网站基础(HTML,CSS,Javascrip ...
- warning:deprecated conversion from string constant to 'char *'
warning:deprecated conversion from string constant to 'char *' 解决方式 #include <iostream> using ...
- poj 3356
Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...
- 学习笔记一:关于directx sdk的安装于一些概念
关于directx sdk开发环境的安装: 在百度搜索了directx sdk,进入了微软的官网,下载了DXSDK_Jun10.exe 百度网盘:http://pan.baidu.com/s/1o6r ...








