注:看大家对Vim仇恨极大,其实它只是一种文本操作方式,可以减少键鼠的切换,从而让编辑文本的操作更迅捷。并不等同于IDE,在我看来,它们是两个是包含关系,IDE可以有Vim编辑模式。Vim或许可以通过一些插件实现部分IDE的功能,但不能说Vim是IDE。

写之前,脑子里觉得可以最常用操作的来熟悉Vim,内容不多,写了一半确发现,即使是最常用的操作,讲完也要写好多,已经不能叫什么极简教程了,不过既然写了,就这样吧

都说Vim很难学,是的,相对于鼠标来讲,肯定是超难学了。但它的好处真的非常多,特别是对于敲代码的同学。关于这些问题,今天就不讨论了,这里主要说的是,只要记住小小的一部分操作,就可以很轻松的使用Vim,仍然可以极大的提高敲代码的效率哦。

网上很多介绍Vim的文章,都在介绍它强大的操作,其实加大了学习的难度,我简单的总结了一下,要使用Vim只需要记住这么几个操作:

1、操作模式

2、移动光标

3、复制/粘贴

4、删除

其实只要掌握好这几点,熟练一下,就可以轻松应对了。当然要很好的适应日常敲代码的工作,还得对目录和文件的操作熟悉,当做第二部分内容吧

1、目录操作

2、文件操作

每一项有几个操作,稍微熟悉一下,就可以很好的使用了,多用一会儿,立刻就会发现,放弃鼠标的快感。

操作模式

1、移动模式。这是我取的名字,文档上叫normal模式,不够形象,所以我叫它移动模式,一听就懂了

ESC:从其它模式退出,进入移动模式,最好按两下

2、编辑模式。文档上叫insert模式,还是编辑比较好。进入编辑模式有几种方式,适应用不同的场景,都是方便操作的,各按键如下:

i :在光标当前位置前进入

a:在光标当前位置后进入

shift + i:在行首位置进入

shfit + a:在行尾位置进入

o:在光标所在行下方新开一行进入

shift + o:在光标所在行上方新开一行进入

3、选择模式。文档上叫什么忘了,不过选择也很好理解。选择模式有两种:

v:进入选择文本模式。从当前光标位置开始,移动光标,之间的文本都会是选中状态。这期间,可以使用移动光标的操作进行移动。

ctrl + v:进行特殊操作模式。也是我取的名字,原来叫块操作模式,什么是块?无法理解。它最有用的操作是给多行加上统一的首或尾,如:可以在选中的所有行首加上注释符,也可以在选中的所有行尾加上分号等。同样可以使用移动中的到行首或是到行尾进行操作。

移动

1、行间移动

j:下移一行

k:上移一行

gg:移到文档第一行

shift + g:移到文档最后一行

shift + h:移到当前屏的第一行

shift + m:移到当前屏的中间行

shift + l:移到当前屏的尾行

:行号:移到对应行号的行

ctrl + d:向下翻页

ctrl + u:向上翻页

特别说明(好理解的就不说了,说说不太好懂的)

当前屏:就是vim中显示出来的部分,未显示出来的部分不算在里,它里面上中下位置的移动,也就是在看得见的部分进行。

:行号:这个操作可以分三部分:

1、shift + : 进入输入模式。

2、输入行号。

3、回车。

光标就会跳到输入行号的行上。

2、行内移动(都是小写字母)

h:左移一位

l:右移一位

w:跳到下一个词的词首

e:跳到当前词的词尾

b:跳到当前词的词首,如果光标本身就在当前词的词首,则跳到前一词的词首

shfit + ^:跳到行首(非空白字符)

shift + $:跳到行尾

f字符:跳到下一个相同字符的位置。之后按;可以继续跳向下一个相同字符的位置

shift + f字符:跳到上一个相同字符的位置。同上,之后按;可以继续跳向下一个相同字符的位置,只是方向和上面是相反的。

特别说明:

f字符:操作分两步:

1、按f

2、按一个字符

这样光标会直接跳到当前光标之后对应按的字符的第一个出现位置(好乱),举个例子:

my name is onlyfu.

当标在第一个字符m上,这时先按f,再按o,光标就会跳到o的位置。如果按f后按n,光标就会跳到之后出现的第一个n的位置,也就是name的n上,这是如果按;,光标就会跳到第二个n,也就是onlyfu的n上,;可以继续点,如果还有n就会继续跳过去。

shift + f字符:和f字符是一样的,只是是向前跳,而不是向后跳,也就是一个反方向操作。

当然,还有一些移动的方法,以上的操作已经够用了,这里就不讲了。

复制/粘贴

1、复制一行

yy:复制光标所在行

2、复制多行

yj:复制光标当前行和其下一行,共两行

yk:复制光标当前行和其上一行,共两行

y:行号:复制渔村当前行到对应行号之间包括对应行号行,共多行

其实用得多的只有yy,复制多行同样可以使用复制选中内容的操作来实现

3、复制选中内容

v移动光标y:复制选中的内容。这其实是三步操作:

1、按v键,进入选择模式

2、移动光标,使用移动的方法来移动,行间,行内的操作都是可以的

3、按y键,复制所有选中内容,并进入移动模式

4、粘贴

p:将复制内容粘贴出来。粘贴有两种情况:

1、如果是整行的复制,粘贴会在当前光标行的下一行粘贴出来,这样会把之前的下面所有行顺序的往下移

2、如果复制的不是整行,只是行内或行间字符,粘贴会在妆前光标位置直接插入复制内容,不会新建行。

这两点要特别注意,不然复制粘贴不会如你所愿

删除

删除和复制是同理的

1、删除一行

dd:删除光标所在行

2、删除多行

dj:删除光标所在行及其下一行,共两行

dk:删除光标所在行及其上一行,共两行

d:行号d:删除光标所在行及对应行号之间,包括对应行号的所有行,共多行

注意,删除操作,会同时复制被删除的内容,这样就可以有移动行的操作,比如,想把第3行移到第5行,那就先删除第3行,到第4行上按粘贴。

好吧,以上就是最简的说明,也写了这么多,后面的目录和文件的操作放到下次再讲。Vim就入门稍难,只要静下来按着上面的操作一会儿,相信,你一定会爱上它的。

Vim,极简使用教程,让你瞬间脱离键鼠切换的痛苦的更多相关文章

  1. Git 极简入门教程学习笔记

    Git 极简入门教程  http://rogerdudler.github.io/git-guide/index.zh.html 测试用 https://github.com/xxx/BrnShop. ...

  2. 极简python教程02:基础变量,删繁就简

    python极简教程已经开赛,如果错过说明可以回翻: 极简python教程:赛前说明 借这个机会,我再讲讲我的教程和其他网上的教程的区别: 1 我分享的内容,是我在工作中会高频使用的语法,是精华内容 ...

  3. 极简python教程:快速入门好方法

    大家好,我是测试奇谭的作者风风. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的快速教程,他们的痛点同大多数自学编程语言的人一样,遇到了这些问题: 网络上的信息太多,良莠不 ...

  4. 极简Node教程-七天从小白变大神(一:你需要Express)

    如果说用一句话来概括Node那就是:它开启了JavaScript服务器端语言. Node系列的文章并不会从一开始长篇概论的讲Node的历史,安装,以及其他很琐碎的事情.只会专门介绍关于Node或者准确 ...

  5. 极简估值教程——第一篇 速判估值与PEG的推导

    来自盛京剑客的雪球原创专栏 一.极简速判估值怎么判? 很简单.简单到粗暴. 用PEG PEG=PE/(g*100)=1.0 什么意思? PE市盈率,g未来收益增长率,PEG为1.0合理估值,大于1.0 ...

  6. 极简Node教程-七天从小白变大神(二:中间件是核心)

    当我们只引入express时,前述的那些功能都是没有启用的.那么,如何将这些功能添加进来呢?express通过其中间件机制实现了这些功能的管理.每一个中间件对应一个功能,而中间件可以是第三方库,也可以 ...

  7. Windows下使用Vim极简入门

    0.下载与安装 在vim官网下载 1.Vim常见的几种模式: 一般模式:主要用于浏览,不能随意删除.修改等.按Esc进入该模式. 插入模式:类似平常我们打开记事本后所在的模式.在命令模式下按i进入. ...

  8. 极简Photoshop 教程

    本文通过创建一个iPhone应用的启动界面来介绍常用的Photoshop 用法. 1,以下参数创建一个新图像 宽度:1242像素,高度:22208像素,分辨率:401,背景内容:透明,其它默认 2,建 ...

  9. WordPress基础:极简安装教程

    1.下载WordPress 2.将解压后的文件夹,放到网站根目录,并重命名为你喜欢的目录如:w, 3.重命名文件wp-config-sample.php 为 wp-config.php,并进行配置 4 ...

随机推荐

  1. 【MySQL】Create table 以及 foreign key 删表顺序考究。

    1.以下是直接从数据库导出的建表语句. 1 -- ---------------------------- 2 -- Table structure for files 3 -- ---------- ...

  2. mysql锁SELECT FOR UPDATE【转】

    MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE ...

  3. linux 汇编

    nasm的语法和大学教材上8086的汇编伪指令有些差别,指令都是一样的. 编辑器就是普通的编辑器,vim,emacs,gedit,kate源文件类型为ascii码的plain text 编译用gcc或 ...

  4. js中数组连接concat()

    数组连接concat() concat() 方法用于连接两个或多个数组.此方法返回一个新数组,不改变原来的数组. 语法 arrayObject.concat(array1,array2,...,arr ...

  5. mysql时间段内查询

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  6. STM32F103使用内部Flash保存参数

    在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数.这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.将这类数据存在指定的 ...

  7. 解决ssh远程登陆linux显示-bash-4.1$

    cp -pr /etc/skel/.bash* /home/test/ #/home/test是用户目录改变用户家目录:usermod -md /tmptest test

  8. Gerrit管理帐号

    文档 Gerrit服务器启动后,网站上有一个Documentation链接.点击后会看到四个选项: index,searching,uploading和access control 文档内容很多,不必 ...

  9. js通过location.search来获取页面传来的参数

    这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...

  10. Jetty使用教程(四:24-27)—Jetty开发指南

    二十四.处理器(Handler ) 24.1 编写一个常用的Handler Jetty的Handler组件用来处理接收到的请求. 很多使用者不需要编写Jetty的Handler ,而是通过使用Serv ...