Vim 初探

都说Vim是编辑器之神,一直也觉得vim的编码非常酷炫~

但是作为一个编辑器之神, 却一直保持着一个非常高傲的姿态,不像打开一个记事本,一个智商正常的人瞬间就能明白记事本怎么用,但是打开vim就算是天才自己慢慢琢磨估计一会。

那么,vim学习曲线这么大,我们为啥还要用vim?

为啥要玩Vim

  • 酷!Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,想不想像黑客一样去编程?
  • 使用sublime或其他大时候有没有发现自己的右手花了大量时间在键盘和鼠标间移动,这个过程其实是非常浪费时间和容易让手疲惫的过程。
  • 领悟到Vim的精髓的时候会发现Vim非常高效,只有你想不到,没有Vim做不到。
  • 如果你用macbook,作为一个前端基本必备的两屏是:浏览器和终端。而Vim跟终端完美的融合了。

模式

  • 命令行模式:想想普通编辑器的复制粘贴,命令行模式可以理解为一个快速运行各种命令的模式,按esc键进入。
  • 插入模式:这是大家最熟悉的了,这时的Vim相当于普通编辑器,按i进入。
  • 选择模式:这个模式中,可以用光标键高亮选择文本,这篇文章先不细讲。
`ESC`  - 切换到命令模式
`i` - 切换到插入模式

普通编辑器的切换

看过一个简短的笑话:vi是个非常好用的编辑器,我已经用了两年了,因为我不知道如何退出它。

想想一个记事本的功能:输入文字,用鼠标上下滚动,复制/粘贴,删除,打开/关闭文件,保存文件。要在Vim存活,最起码能把它用成像记事本一样。

`i` - 进入插入模式,我们就可以输入文字了
`hjkl` - 上下左右移动
`ctrl+u, ctrl+d` - 上下翻半页,这个比较常用,最基础的替代鼠标上下滚动
`yy, p` - 复制当前行/粘贴
`dd` - 删除当前行
`vim a.js` - 打开a.js
`:wq, :q!` - 保存并退出,退出不保存

了解了上面的命令,最起码我们从不了解Vim之神到把它用成了一个记事本水平啦。

快速的跳跃

想想在普通浏览器用鼠标经常做到的一个事情应该就是用鼠标把光标定位到特定的位置。没有了鼠标,如何把光标快速定位到特定的地方呢。

0 - 数字零,到行头
^ - 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ - 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
gg - 到第一行
G - 到最后一行
:N - 到第N行
NG - 到第N行
w - 到下一个单词
b - 到上一个单词
fa - 到当前行到下一个字符a,其他字符类似
Fa - 到当前行到上一个字符a
t, - 到逗号前的第一个字符。逗号可以变成其它字符。
* - 到下一个当前光标所在单词
# - 到上一个当前光标所在单词
% - 匹配{ 的对应 } ,像单引号等其它成对存在的也一样
/pattern - 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)

初看上面的命令可能觉得非常复杂和麻烦,但是上面这些命令是远离鼠标所必须会的,没有了快速的跳转在Vim中可能陷入一片迷茫。

一些规律

数字

Vim中的数字使用非常普通,基本场景都是代表重复多少次的意思。比如:

3yy - 复制3行
3p - 粘贴3次
3fa - 跳转到当前行第三个字符a

上面只是一些简单的例子,基本上了解了命令,很大部分命令都支持 数字 + 命令 的组合。

大小写

大小写在很多场景都是相反命令的意思,了解了小写命令的含义,很多场景相反的含义就是该命令的大写。比如:

fa - 到当前行到下一个字符a,其他字符类似
Fa - 到当前行到上一个字符a
t, - 到逗号前的第一个字符(光标后)。逗号可以变成其它字符
T, - 到逗号后的第一个字符(光标前)。逗号可以变成其它字符

选中

命令 + a + 字符 或者 命令 + i + 字符是很实用的一个组合。 其中快速选中正是一个用这个组合的例子。

复制coolshell.cn某大大的一段例子。 假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o 的位置。

vi" - 会选择 foo.
va" - 会选择 "foo".
vi) - 会选择 "foo".
va) - 会选择("foo").
v2i) - 会选择 map (+) ("foo")
v2a) - 会选择 (map (+) ("foo"))

好吧,这篇文章就先到这里了。Vim的强大远非一篇文章所能说完,这篇文章也是起一个抛砖引玉的作用,希望能给到Vim初学者一点小小的帮助~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

【我问Crossin】爬虫学习该如何入门?

1 程序中使用了列表,运行过程中报错: IndexError: list index out of range 这是由于列表的下标索引值超过了列表的总长度。 ...

2675
来自专栏轮子工厂

教你用翻译软件快速阅读大量英文文献

对于一些引用的英文文献,我们需要快速地了解整篇文献讲了什么内容,来判断是否可以作为“国内外研究现状”来进行详细分析。

944
来自专栏Python小屋

Python批量合并带有合并单元格的Excel文件

问题描述:某老师为不同学院讲授“Python程序设计”课程,并根据不同专业和课程特点选用了董付国老师系列教材《Python程序设计(第2版)》《Python程序...

2764
来自专栏C语言及其他语言

【程序源码】猜拳游戏

关注我们 今天来给大家来一段游戏源码(猜拳游戏) ? 程序截图如上。话不多说,上源码!! #include <stdio.h> #include <stdlib...

2446
来自专栏知晓程序

详细测评!在微信里做问卷调查,哪个小程序更好用?| 晓 PK #6

在微信发放问卷,是一个不错的渠道,毕竟亲朋好友都乐于帮忙,而小程序分享的便利性,让它成为一个收集问卷的优选载体。

1333
来自专栏java学习

Java每日一练(2017/6/1)

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 课前导读 ●回复"每日一练"获取以前的题目! ●答案公布时间:为每期发布题目的第二...

2517
来自专栏天天

微信小程序地图定位点不在视觉中心

后来通过wx.getLocation()获得自己的定位点的信息,在开发工具中打印经纬度,然后把数值赋值给data,发现还是不在视觉中心,而且此时的经纬度与百度地...

1224
来自专栏微信小程序开发

小程序支付,再来说说JS浮点数的坑

前言:客服收到报名工具小程序用户反馈:创建报名时,输入19.9元,但是,保存的是19.89元。很明显,这是前端的一个坑,JS浮点数的坑。

1472
来自专栏逆向技术

逆向知识之CS辅助/外挂专题.2.实现CS1.6无限夜视仪.无限闪光烟雾高爆弹.

关于搜索0或者1我们也不知道哪个是打开或者关闭. PS: 因为我找过了.确定了1是打开夜视仪.

1333
来自专栏C语言及其他语言

【工具资源】迈进C世界的第一步

开始学c的小伙伴 肯定对两个问题焦头烂额 如何选择编译器 到哪里去下载想要的编译器 下面就让小编来帮大家解决这两个问题 ? 细心的小伙伴其实已经发现 咱们C语言...

3477

扫码关注云+社区