这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟。与此同时也想分享出来给大家,欢迎大家互相讨论和学习。

  在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim。该系列文章里有些基础概念可能不会涉及到或者不会多做解释。一个是因为有些基础概念我目前也解释不清楚。越基础的解释起来越需要能力,目前鄙人还不具备。另一个是因为我相信各位大神们,你们已经有很好的搜索功能。当然有问题也欢迎大家互相讨论和学习。

  这篇主要讲的是我当前对vim学习的理解。后面的一系列文章会针对于学习实战的“从熟悉到精通”具体展示记叙。

困境

  从开始接触vim到现在快2年,陆陆续续学习vim不下5次。有看书,有看视频,有看博客……,然后自己练着玩、工作环境中使用。然而我却陷入一个困境:每次使用的时候大概知道怎么用,不过还得上网搜,搜完再小心翼翼的试,试完后很爽,爽完后猛的发现已经浪费很多时间,然后下次场景重现,一直死循环。

  所以本系列的文章就是为了摆脱这种困境而生。我是一个懒惰的人,不想花时间在重复的事情上。

目的

  本系列的文章的目的有两个。一个是掌握高效的文本编辑思维及习惯.一个是彻底消灭由文本编辑而引起的垃圾重复时间

定义

  vim是一个神一样的文本编辑器。它的核心是编辑文本。

优点

  一直在各个地方找寻它的优点。论调很多,关键的是我可能暂时还没法区分。只是从我眼中直观来看,它有这么些优点

  • 无平台移植问题,无论是windows,linux还是mac,学一次一辈子都可以使用。
  • 手不用离开键盘主要输入区,视线不用离开目标文本。用鼠标再切回来键盘打字是很低效的一件事,所以我特别喜欢快捷键,能不用鼠标的都不想用鼠标。
  • 专注于内容建设要比排版重要,而Word显然做不到。对于程序猿来说,这是一件天大的喜事。

学习感受

  大家都在说vim的学习曲线,大概意思是门槛高,不过入了门就是飞一般的感受。没错这里我说的就是感受,划分这些感受是希望大家不会觉得孤单,其实我们都一样。也是希望大家能看到只要坚持,感受会越来越美妙。很多人使用vim,可能最终无奈的原因是服务器环境只能使用vim。其实vim最终可以像情人一样。

恶梦,这是什么鬼

  一开始是notepad++, word, edit垄断你的大脑, 这些东西根深蒂固, 挥之不去Vim的使用对你而言是一场噩梦, 它降低而不是提高了你的工作效率. 对三种工作模式的不解甚至使你认为它是一个充满BUG或者至少是一个古怪的与当今友好用户界面设计严重脱节的软件。会不由自主的说:“靠,这是什么鬼!”

食之无味,去之可惜

  开始熟悉一些基本的操作, 这些操作足以应付你日常的工作, 你使用这些操作时根本就不假思索. 但这些阶段你仍然很少去碰Vim那晦涩的在线帮助文档. 它在你心里只是notepad++, edit一个勉强合格的替代品。心里会泛起一阵阵忧伤:“这东西好像也没什么牛逼的地方,和其他编辑器一样就是编辑文件嘛”

爱不释手,像情人一样

   精益求精的你不满足于无休无止的简单操作, 冗长而乏味,有没有更好的办法可以四两拔斤? 你在第二阶段由于熟练操作而尘封已久的大脑突然开始运作.每一次的文本编辑体验都妙趣横生高潮迭起. 你的头脑因为要用Vim完成高效的编辑而高度紧张兴奋。就像和情人在一起一样,你会觉得它太美妙啦!!

学习实战

  不管多少想法,最终必须得付之实践才有效果。vim学习更是如此。它必须大量反复的练习实战,直到已经成为一种本能反应。然后才能解决一开始的困境。网上有很多种实践的方式,不过划分比较细,可能不太适合像我这种懒的人。所以我只是简单的划分两个实战阶段。第一阶段主要是以苦练为主,加上习惯的练习。第二阶段是基于第一阶段的反思总结强化。

从陌生到熟悉

  这个阶段主要是练,所以没什么好说的。第一个是我要实战的计划,后二个是我要实战培养的习惯。暂时不会展示记叙

练习vimtutor

  必须完整的练vimtutor 3次以上。练到可以通过分屏,左边看tutor文档右边操作不会断。练到能自己画出vim的操作思维导图

随时看帮助文档

  先通读两遍以上,因为太强大了。。。所有功能里面都有

  帮助文档太强大了!!! :help everything。养成习惯有任何不清楚的地方都看help一下,通过help去处理细节问题。

无时不刻使用vim

  不管你工作的系统是什么,都必须无时不刻使用vim。特别是对于windows的用户,请装一个gvim。

从熟悉到精通

  这个也是本系列文章的主体内容。通过记叙的方式,把学习vim的过程和感悟记录下来。

  具体准备划分成如下几块去展开进行。更细的,请关注后续更新的文章。每一块可能会根据其结构更新苦干文章。

vim涉及到的概念

  vim涉及很多文本操作概念,设计理念等,这些概念适合用整个vim操作。所以首先要做的就是把概念弄清楚,更多的是锻炼思维习惯。

vim常用模式经典操作

  基于统一概念对常用的4种模式里面的经典操作逐一记叙,让平常的文本编辑重复操作彻底消除

让vim更懂你

  每个人的习惯,以及工作场景(有的编写js,html,python,shell等)都不一样。所以除了文本编辑以外,还会插件配置,这些会让我们使用起来更安逸。进一步消除更多的重复工作,消除重复由人手设置引起的垃圾重复时间


最后祝愿每一个菜鸟vimer都能尽快成为vimer大神,享受神器带来的快感!!!!

菜鸟vimer成长记——第0章、我眼中的vim学习的更多相关文章

  1. 菜鸟vimer成长记——第3章、文件

    上一章一直在讲的是vim的文本的操作,本章主要讲的是vim的文件操作. 本章的有些概念和传统的文本编辑器也不尽相同.所以需要注意概念或者切切说是思维习惯的区别. vim 允许在一个编辑会话中编辑多个文 ...

  2. 菜鸟vimer成长记——第1章、统一概念

    不管学什么技术,我都深信概念是最重要的.是影响整个学习轨迹,决定能在这个技术领域高度. 当然如果你现在的目的不是在学习而在于解决问题(很多人不愿意承认,或者没发现),那概念就暂时没那么重要了. 目的 ...

  3. 菜鸟vimer成长记——目录

    菜鸟vimer成长记——第0章.我眼中的vim学习 菜鸟vimer成长记——第1章.统一概念 菜鸟vimer成长记——第2.0章.模式初探 菜鸟vimer成长记——第2.1章.normal模式 菜鸟v ...

  4. 菜鸟vimer成长记——第2.0章、模式初探

    首先,其他的文本编辑器只有一种模式,就是插入模式.而vim一下子颠覆了我们的世界观——有好多模式.这个是思维上的切换,很难也很重要!!! 其次,Vim 提供一个区分模式的用户界面.也就是说在不同的模式 ...

  5. 菜鸟vimer成长记——第4.0章、Vim插件管理利器-Vundle

    定义 Vundle是vim bunler和简称,它是一个vim插件管理器. Vim本身缺乏对插件的有效管理,安装插件并配置.vimrc文件非常不便.gmarik受到Ruby的bunler的启发,开发了 ...

  6. 菜鸟vimer成长记——第2.4章、cmd-line模式

    cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...

  7. 菜鸟vimer成长记——第2.1章、normal模式

    目的 掌握normal模式下常用操作的语法和概念,这些操作对应的应用场景以及实用技巧. 通过normal模式举一反三掌握cmd-line和visual的常用文本操作. 简介 文本操作的理想状态为:一个 ...

  8. 菜鸟vimer成长记——第4.1章、通用插件

    简介 关于插件的分类,此系列只会简单的区分为通用插件和编程插件.通用插件的意思是,不基于任何编程语言都可以使用的插件.编程插件,是针对于编程习惯,或者说是针对于某种语言的插件. 计划中,是先把基本常用 ...

  9. 菜鸟vimer成长记——第2.3章、insert模式

    大部分的Vim 命令都在非插入模式中执行,不过有些功能在插入模式中会更好实现些. 如果没有输入当前文件不存在的新文本的需求时,建议通过其他模式来操作完成. 目的 掌握inser模式下常用操作的语法和概 ...

随机推荐

  1. mysql安装--常见

    1.安装报如下错: 分析: 你的系统太老了 Win7 \win8啥的吧 这是缺失C++ 依赖包 去MS下一个 补丁安装以后再重新执行就好了 Update for Visual C++ 2013 and ...

  2. 18年11月5日 NOIP模拟赛

    T1 题解 对于k=100的情况,贪心 对于100%的数据 可以发现,当前的决策只对后面的开采有影响,且剩余耐久度与之后的开采收益成正比,如果倒着考虑这个问题,得出i-n的星球1点耐久度所能获得的最大 ...

  3. mysql 索引分类以及用途分析

    MySQL索引分为普通索引.唯一性索引.全文索引.单列索引.多列索引等等.这里将为大家介绍着几种索引各自的用途. 一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTre ...

  4. 针对 Linux 环境下 gdb 动态调试获取的局部变量地址与直接运行程序时不一致问题的解决方案

    基础的缓冲区溢出实践通常需要确定运行状态下程序中的某些局部变量的地址,如需要确定输入缓冲区的起始地址从而获得注入缓冲区中的机器指令的起始地址等.在 Linux 环境下,可通过 gdb 对程序进行动态调 ...

  5. jQuery实现滚动时动态加载页面内容

    有些网站的网页内容不是一次性加载完毕的,而是在鼠标向下滚动时动态加载的,这是怎么做到的呢?看下面代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  6. BZOJ 1040 骑士 基环树 树形DP

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1040 题目大意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫 ...

  7. [JSOI2008]火星人

    嘟嘟嘟 嗯. splay维护哈希. 如题,用splay维护哈希,查找的时候二分.所以复杂度是取决于询问复杂度:\(O(n \log^ 2{n})\). 这道题还有一个技巧,就是一个节点记录的是他的子树 ...

  8. POJ3977 Subset

    嘟嘟嘟 这个数据范围显然是折半搜索. 把序列分成两半,枚举前一半的子集,存下来.然后再枚举后一半的子集,二分查找. 细节: 1.最优解可能只在一半的子集里,所以枚举的时候也要更新答案. 2.对于当前结 ...

  9. Delphi按名字调用方法高级解决方案

    转帖于https://lfzhs.iteye.com/blog/980200 按名字调用方法似乎一直以来都是大家比较关注的技术,在论坛上有一个经典的答复: type TProcedure = proc ...

  10. 经典算法--冒泡排序(Java)

    原理:将相邻元素的较大值赋给右边 思路:① 1.将集合或数组内的第一个元素与第二个元素进行比较,较大值赋给右边: 2.将第二个元素与第三个元素进行比较,较大值赋给右边: ....... (N-1).将 ...