点击上方“AI遇见机器学习”,选择“星标”公众号

重磅干货,第一时间送达

本文转自AI新媒体量子位(公众号 ID: QbitAI)

最近,在 GitHub 上便出现了一个叫做用聪明的方式学习Vim的项目,上线短短几天时间,便已经斩获2200星

那么,如此学习Vim的方式,到底有多「聪明」?

用聪明的方式与Vim「交流」

这也是本教程中最为重要的一个章节——一旦了解了 Vim 命令类似语法的结构,就能跟它「畅谈无阻」。

按照作者的说法,「只需要知道一个语法规则」,就可以说Vim的语言了:

verb + noun

如果拿英文短句做类比,就例如:

Eat (verb) a donut (noun)Kick (verb) a ball (noun)

现在,只需要使用基本的 Vim 动词和名词来增加词汇量。

Vim 的名词和动词

这里说到的Nouns,就是 Vim 中的一些动作,例如:

h:左
j:下
k:上
l:右
w:移动到下个词的开头
}:跳到下一个段
$:移动到本行末尾

而 Vim 中的 Verbs,就相当于操作符。

以 h 操作符为例,Vim 中有16种,但只需要知道其中3种,便可以满足80%的需求。

y:复制
d:删除文本,保存到register
c:删除文本,保存到register,并开始「插入」模式

OK,了解了「名词」和「动词」,现在便可以应用到「语法规则」中了:

y$:把当前所有的东西,从当前位置拖拽至行末
dw:从当前位置删除到下一个单词的开头
c}:将当前位置更改为此段末尾

当然,类似这样的组合,也接受数字作为其中的参数,例如:

y2h:向左拉2个字符
d2w:删除接下来的2个单词
c2j:改变接下来的2行内容

除此之外,行式操作(linewise operations)是文本编辑中的常见操作,因此,Vim 也允许你通过连续键入2次操作符来完成类似这样的操作。

比如,键入「dd」,删除整行内容;键入「cc」,更改整行内容。

可组合性和语法

在讨论 Vim 语法之后,便是 Vim 的可组合性(Composability)。

可组合性意味着拥有一组通用命令,可以组合起来执行更复杂的命令。当与外部程序集成时,Vim 的可组合性的真正威力就显现出来了。

举个例子,现在有一段「乱七八糟」的文字,如下所示:

Id|Name|Cuteness
01|Puppy|Very
02|Kitten|Ok
03|Bunny|Ok

现在需要将这些文字转换成为表格形式,若是用 Vim 命令来实现这点可能会有一些困难,但是可以使用 column terminal 命令快速完成。

将鼠标指向「ID」,然后运行 !}column -t -s “|” ,就可以得到漂亮的表格了:

Id   Name    Cuteness
01  Puppy    Very
02  Kitten    Ok
03  Bunny   Ok

回过头来看下刚才的命令。

「!」是过滤操作符,「}」是名词,过滤操作符接收了另一个参数,也就是一个终端命令,「column -t -s “|” 」。

简而言之,经过这样的一番操作后,便完成了文字表格化的任务。

再例如,除了表格化之外,再筛选带有「OK」的行,可以这样做:

!}column -t -s “|” | awk ‘NR > 1 && /Ok/ {print $0}’

得到的结果便是:

02  Kitten  Ok
03  Bunny  Ok

这就是一种与 Vim「交流」的聪明方式。

但作者也同时指出,刚开始学习、适应这种「Vim 语法」是需要一定时间,但只要熟练起来后,便可轻松驾驭。

基于Vim语法的更多操作

在介绍完 Vim 的语法规则后,便可以基于此来完成更多操作和任务。

例如在本教程中的第五章,便介绍了「如何在文件中移动」。

最基本的操作便是向左、向右、向上和向下移动一个字符:

h   Left
j    Down
k   Up
l    Right

在字符之后,便是以文字为单元的移动。

W:移动到下一个单词的开头处
E:移动到下一个单词的结尾处
B:移动到前一个单词的开头处
gE:移动到前一个单词的结尾处

接下来是以「行」为单位的移动:

0:移动到当前行的第一个字符处
^:移动到当前行第一个非空字符处
g_:移动到当前行最后一个非空字符处
$:移动到当前行最后一个字符处
n|:移动到当前行的第n列

当然,用类似的Vim方式,还可以完成「段」级别、搜索、滚动、标记等一系列移动操作。

此外,教程中还提供了许多其他操作的教程,例如「Insert Mode」、「Undo」等等。

目前教程还在更新中,有兴趣的读者可以持续关注这份「聪明的Vim教程」。

传送门:

https://github.com/iggredible/Learn-Vim

欢迎关注我们,看通俗干货

Github火爆的项目,用聪明的方式学习Vim!相关推荐

  1. 用聪明的方式学习Vim,不再死记硬背,复杂命令一学就会 | GitHub 2200星

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI Vim 难学难用?但事实是,它依旧受许多程序员的欢迎. 或许,只是你的「打开方式」不对. 最近,在 GitHub 上便出现了一个叫做用聪明的 ...

  2. 从GitHub上下载项目后如何运行,学习

    很多人学习的时候会在网上搜索一些项目源码,然后通过看别人的源代码,然后再通过调试运行去学习.理解其中的各个关节的内容,github就会成为很多人下载源码的首选.但是很多人下载下来之后不知道该如果开始看 ...

  3. git ssh配置完后拉取代码_二、windows下使用git拉取github上的项目(通过设置ssh key方式)...

    一.windows下使用git拉取github上的项目 1.创建仓库 说明: 2.打开git bash 3.使用ssh-keygen命令生成自己的公钥和私钥 首先输入ssh-keygen,这里会提示你 ...

  4. 年度盘点!必看AI顶会论文、Github高星项目大合集(附链接)

    目前,国外计算机界评价学术水平主要是看在顶级学术会议上发表的论文,特别是在机器学习.计算机视觉和人工智能领域,顶级会议才是王道.本期我们盘点了2019年人工智能领域的顶会,如最核心的顶会AAAI.IJ ...

  5. 独家 | 年度盘点!必看AI顶会论文、Github高星项目大合集(附链接)

    目前,国外计算机界评价学术水平主要是看在顶级学术会议上发表的论文,特别是在机器学习.计算机视觉和人工智能领域,顶级会议才是王道.本期我们盘点了2019年人工智能领域的顶会,如最核心的顶会AAAI.IJ ...

  6. idea怎么直接拉去git_如何将GitHub上面的项目拉取到IDEA中

    上次,小喵给大家演示了一下,那么今天小喵给大家演示一下如何将GitHub上面的项目拉去到IDEA中. 一 . 获取连接 有两种情况 : 一种是项目未初始化 , 第二种是项目已初始化. 未初始化 获取连 ...

  7. 远程GitHub中的项目拉取到本地

    需求:远程GitHub中的项目拉取到本地: 有2种方式: 第1种:直接下载到本地: 第2种(建议使用): 通过git工具,进行远程拉取代码,前提已安装了git 项目代码地址: git@github.c ...

  8. github 搜索_github 项目搜索技巧让你更高效精准地搜索项目

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:昨天分享资料不小心把百度网盘深处的秘密泄露 ...

  9. 2018 Github优秀开源项目整理

    目前开源社区Github涌现出不少优秀的项目,关注和使用这些项目,一方面可以很好的提升开发效率与质量,另一方面研究开源项目的源码,参与其贡献,也是提升技术能力一个不错的方法. 基于自己团队的需求,以后 ...

最新文章

  1. python输出格式化及函数format
  2. flask项目从本地迁移到服务器上遇到net::ERR_CONNECTION_R问题
  3. 最新量子通信芯片曝光!大小仅为现有装置的千分之一
  4. 从UDP/TCP到HTTP/HTTP2,弄清楚网络层面上应该了解的知识。
  5. uni-app的事件传参
  6. Eclipse Scout架构商业应用开发的工具与环境
  7. 巧用XP的Hosts文件 防止误进恶意网站
  8. 误删数据库怎么办?mysql 回滚,撤销操作,恢复数据
  9. 解决npm安装时出现run `npm audit fix` to fix them, or `npm audit` for details
  10. iPhone手机上最不起眼的5款APP,用过的人都赞不绝口!
  11. java里面default是什么意思_default_default是什么意思???
  12. CRichEditDoc下保存文档出现\rtf1\ansi\ansicpg936\deff0的解决方法
  13. Elasticsearch深度探秘搜索技术基于multi_match语法实现dis_max+tie_breaker
  14. 【Spring boot 项目实践】基于Spring boot 的外卖系统
  15. 华为畅享10s值得买吗_华为畅享10S怎么样?与同价位相比有何优势?
  16. 仙剑5手游服务器维护,仙剑奇侠传手游5月20日活动有哪些?5.20日例行维护时间...
  17. 闪电恢复(系统数据快速恢复软件) 软件介绍及软件使用特性
  18. 2017第十八届中国国际农用化学品及植保展览会(CAC2017)暨第八届中国国际肥料展览会(FSHOW2017)会刊(参展商名录)
  19. 关于百度旧博客http://hi.baidu.com/forverlin1204/blog
  20. 中国碳纤维市场趋势报告、技术动态创新及市场预测

热门文章

  1. Office WORD如何设置表格背景颜色
  2. 微软私有云Azure Pack实践系列之三创建虚拟机角色
  3. .Net应该学什么怎么学(一)
  4. JDBC--代码实现增删改查、及SQL注入问题解决
  5. 算法-打印一个字符串的全部子序列,包括空字符串
  6. 二叉树中序遍历-递归与非递归
  7. Ubuntu18.04的网络配置(静态IP和动态IP) - OpsDrip - 博客园
  8. python SMTP发送邮件常出现问题
  9. BERT各个场景实例代码
  10. BIO  三位标注  (B-begin,I-inside,O-outside)