vim和emac体验

vim和emacs初体验

这是emcas和vim的体验小结。
我是用emacs编辑的。

先说编辑器的使用,无论是那一种编辑器给人一上来的感觉都是,这命令简直多到记不住。不愧都是学习曲线非常陡峭的编辑器。跟着两个编辑器的指南都敲了一遍,现在唯一能记住的就是上下左右的移动,和保存按键。可以说这是一个漫长的道路。

vim的优点:

  • 1.按键组合比较少,对于我这样手指不太灵活的人是一个福音。
  • 2.大多数操作系统自带,不需要安装(装emacs就要把我装死了)-
  • 3.喜欢vim的上下左右jkhl,跟某些游戏的上下左右位置有点类似,右手控制比较舒服

vim的缺点:

  • 1.双模式的切换目前达不到流畅使用,觉得双模式阻碍了编辑速度。(不知道未来自己会不会对此有改观)

emacs的优点:

  • 1.编辑流畅,不用频繁切换模式。(虽然emacs也有主模式和副模式,但是一旦进入一个模式,不用频繁切换)
  • 2.体验到了多文件窗口的酷炫。可以一遍编辑一个文件,一遍滚动另一个文件,很舒服。
  • 3.缓存机制感觉会有很大用处,但是现在体会的不深刻。

emacs的缺点:

  • 1.安装过程简直让人崩溃,各种依赖库的安装折磨人。
  • 2.频繁使用ctrl键,我这手指不灵活的人很是绝望。但是可以更改键位(或者买个键盘),未来可能会缓解这个问题。
  • 3.不喜欢emacs的上下左右,放在两个手让人有些混乱。

小结:vim的双模式是我觉得他最不适合我的一点,他最适合我的一点就是组合键少(不会长时间使用ctrl产生疲劳感)
emcas的组合键频繁使用ctrl让我感到疲劳,这一点可能需要适应,或者放弃。他最适合的一点就是编辑流畅,不用切换模式,多窗口也很好用。


[编辑于2018年8月3日]

Emacs的再体验

诚然学习了emacs的默认组合键已经可以满足我们编辑文本的需求了。但是emacs相较于vim,最大的区别是放弃了双模式。vim想用双模式将编辑和控制分离,通过精简指令、组合指令实现文本的编辑;但emacs的哲学是用组合键完成你想完成的事情。在未来,默认的组合键不可能完成全部我想完成的事情,那么

怎样订制自己的emacs?

多数人选择的是google到一个合适的配置文件,配置上插件,万事大吉。没错,我现在肯定也是其中的一员。
但是有一天你想要的功能google不到,怎么办?

你想完成的事没有被别人做过,那说明你做的事可能是很有趣的事。

为了完成有趣的事,伴随着emacs的学习和使用,elisp也要一同学习。

关于elisp,它是lisp语言簇的一个方言版本,wiki百科上说道:
Emacs Lisp,一种直译式的脚本语言,为LISP的方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展他们的功能。它的直译器是以C语言来实作的。它受到Maclisp的影响很大,但是跟Common Lisp与Scheme有所不同。

没错,elisp就可以帮助我们实现灵光一闪的有趣的事。

对于elisp,我的学习路线是这样的,
1.了解lambda演算
2.了解lisp语言
3.入门elisp语言

了解lambda演算

λ演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义、函数如何被应用以及递归的形式系统。

Lambda演算包括了建构lambda项,和对lambda项运行归约的操作。在最简单的lambda演算中,只使用以下的规则来建构lambda项:

语法名称描述
a变量表示参数或数学/逻辑值的字符或字符串
(λx.M)抽象化函数定义(M是一个lambda项)。变量x在表达式中已被绑定。
(M N)应用将函数应用于参数。 M 和 N 是 lambda 项

lambda演算中,递归是通过悖论算子或不动点算子来实现,它被表示为Y – Y组合子:

Y = λg.(λx.g(x x))(λx.g(x x))

在lambda演算中,Y g是g的不动点,因为它展开为g(Y g)。现在,要完成我们对阶乘函数的递归调用,我们可以简单的调用 g(Y g)n,这里的n是我们要计算它的阶乘的数。

lamda演算与图灵机是等价的,也就是说用图灵机的可计算性问题,也就是可判定性问题也可以用lamda演算表示,也就表示用图灵机解决的可计算问题,也可以用lambda演算解决。

了解lisp语言

lisp语言是函数式编程语言,它基于lambda演算,但是它是一种非纯函数式编程语言。
函数式编程语言与结构化编程语言的区别是:

  • 函数式编程语言告诉机器,是“什么”,它最早应用于人工智能领域,其实函数式编程语言能在人工智能领域应用,我认为是函数就如同演绎规则;“知识”也可以用这样的函数来表示。那么机器就可以模仿人的思维来“推理”。
  • 结构化编程语言告诉机器,做“什么”,它将人类的思维用规定好的结构进行运行。

对于lisp我的深入了解不多,现在思考只能停留在这个阶段。

入门elisp语言

elisp语言作为lisp语言的方言,最主要的使用是emcas的插件的编写。
我的emacs lisp是根据这个教程学习的 http://smacs.github.io/elisp/

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值