这是一系统总结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. 创建存储过程 1.1 无参数存储过程 CREATE PROCEDURE bruce_procedure () BEGIN --1.声明变量 --2.执行业务逻辑 END 1.2 有参数的存储过程 ...

  2. NutzWk 5.0.x 微服务分布式版本开发及部署说明

    NutzWk 5.x 已发布一段时间,这段时间基于此版本开发了智慧水务系统(NB-IOT).某物联网平台.某设备租赁平台.某智慧睡眠平台.某智慧园区项目等,开发和部署过程中遇到一些小问题,开这个帖子把 ...

  3. HDU 5550 - Game Rooms(DP + 前缀和预处理)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5550 题意: 一个大楼有n(2≤n≤4000)层,每层可以建一个乒乓球房或者一个游泳房,且每种房间在大楼 ...

  4. Yii设置Cache缓存的方法

    先在配置文件components数组中加上: 'cache'=>array( 'class'=>'CFileCache'), 设置Cache: Yii::app()->cache-& ...

  5. 微信小程序 置顶/取消置顶

    wxml <view wx:for="{{confirmlist}}" wx:for-item="confirm" wx:for-index=" ...

  6. Python学习之路 (四)爬虫(三)HTTP和HTTPS

    HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...

  7. Day4 MySql触发器视图索引以及设计优化

    触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 通过事件触发,不能传参 语法 CREA ...

  8. leetcode 39. Combination Sum 、40. Combination Sum II 、216. Combination Sum III

    39. Combination Sum 依旧与subsets问题相似,每次选择这个数是否参加到求和中 因为是可以重复的,所以每次递归还是在i上,如果不能重复,就可以变成i+1 class Soluti ...

  9. error:Assertion failed ((unsigned)i0 < (unsigned)size.p[0]) in cv::Mat::at

    问题原因: 访问像素时指针越界造成的 解决办法: 1.检查指针下标是否正确 2.row和col是否写反了

  10. mysql sqlite3 postgresql 简明操作

    安装 mysql $ sudo apt-get install mysql-server sqlite3 $ sudo apt-get install sqlite3 postgresql $ sud ...