首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vim 理论(1):模式修订

我们先来想想文本本身。对于文本,基本上,我们就做两件事:

内容处理辑

文本排版

很多常用的很多工具其实是把这两个功能合二为一的,比如 Word, PowerPoint,Excel。而编程本身其实并不那么涉及到排版,所以你见不到什么人用 Word 去编程,而是用文本编辑器,比如

Atom

Sublime text

Vim

Emacs

Notepad++

Visual Studio Code …

以命令行(command line) 和终端(terminal)为主的文本编辑器其实对普通用户都不是很友好。但你不是普通人啊,你决定学习 vim,除去图形界面的干扰,把注意力放在最关键的地方:

文本

因为只有缩短文本编辑的时间,你才能用更多的时间思考,在灵感消失之前,把它转换成代码。而且,你能因此发现另一个世界

命令行(command line)的世界

举个栗子,假设你想在一群文件夹中的某一类文件搜索某个的特定的词(比如所有在 sql 文件搜索 vimrocks 这个词),如果你知道什么是,那么轻轻松松搞定。不知道也没办法… 而且我也不知道以外的办法,如果 Windows 上没有,我就去下一个1。

而 vim 就是一个活在终端里的文字编辑器,虽然没有华丽的图形界面(也就是一两个插件的事儿),但这样 1) 能让你更注重文本, 2) 同时也让你有了调用所有命令行的能力。所有东西都各司其职,专注做一件事。合在一起的话:

效率如飞

其实这也就是 Unix哲学 (Unix philosophy)

Do one thing, and do it well.

而这也是 vim 的秉持的哲学和主要逻辑,把不同类型的操作分隔开,互不影响的同时,做好每一个操作。

Vim 的逻辑

对于任何一个文本编辑器来说,都要解决一个问题:如何利用键盘上有限的键,完成更多的功能以及更高效的输出。无论是哪一个文本编辑器,键盘总是比鼠标要高效的,所以我一直都很在意并关注快捷键。

最简单的一个例子就是复制粘贴:和。基本上大部分的文本编辑器都采用的是这样的方式。V 字君把他们都划分为Emacs 的方式

Emacs 的方式:按住 Ctrl, Alt/Meta 等键来提供更多的功能

有的时候一层快捷键不够使,那就要两层,或者是三层。比如,emacs orgmode 里,如果我想要预览 LaTex 数学公式的话,需要按下:,,。其实,V 字君也是超级钟爱 orgmode 的。如果当年上大学时我会用 orgmode,天知道我能省下多少时间。不过那些都是后话了,因为当时已经使用几年了,也不需要换了。

Vim 的方式: 提供几个不同的模式, 不同模式下,同个键有不同的功能

而 vim 采用的方式则完全不同,与其让你别扭的按住 ctrl 键一直不放,干脆提供多种模式,就好比画家的画笔和画刀,每种模式做不同的事情。

普通模式 (normal mode)

输入模式 (insert mode)

可视模式 (visual mode)

替换模式 (replace mode)

选择模式 (select mode)

在普通模式更多是用来移动光标(以后咱们专门讲怎们快速移动光标),处理文本的(剪切,删除),和调用命令的,可以说是 Vim 的核心模式。可视模式的话更多是处理文本的辅助模式,有很多时候还是需要高亮已选文本的。替换模式和选择模式则偶尔出现,至少平时用的不多。而且,不同的模式下,同样的快捷键也可以后不同的功能。

可以说,Vim 用了多维度的方式解决了用有限键盘作更多的事情,并且同时还做到高效高度可定制性(highly configurable)。

如果你对这些模式或者设置快捷键感兴趣,详情可见 Vim 自带的帮助文件。

啥???好像我还是没讲怎么用自带的帮助文件,下回呗~~ 我记得上上一回说是下回写,那咱就下下回写。虽然这一回不是上一回说的下一回要写的内容吧。

2018.03 于多伦多

1.

一般的 git for windows 都会有的

欢迎您扫一扫上面的二维码,订阅 V 字君的微信公众号

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180311G06S5B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券