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/
vim和emac体验相关推荐
- linux之Vim使用
Vim同Emac是Linux世界下最为流行的两个文本编辑工具,集中精力学习一个就好了,暂定以Vim为学习对象.在本文中,一些基本的操作将不再介绍,只会介绍最为常用的命令以及设置,操作系统为Ubuntu ...
- 神级编辑器 Vim 使用-基础篇
最近一段时间, 看了两本关于 vim 的书, 重新学了一遍 vim, 在感慨 vim 强大的同时, 也为从前的自满感到汗颜, 我拿起了从前做的关于 vim 的笔记, 重新梳理了一遍, 作为一个系列分享 ...
- 第3章 Linux系统介绍与虚拟环境的准备
1.1 学习的知识点 1 什么是操作系统? 2 什么是Linux? 3 Linux的起源 4 UNIX操作系统的革命 5 Linux的诞生 6 Linu ...
- 第02课 操作系统及Linux 系统介绍
1.操作系统介绍 操作系统(Operating System,简称OS),是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统的作用是管 ...
- Sublime Text 2 和 Verilog HDL
Sublime Text 2 和 Verilog HDL Date Fri 04 July 2014 Tags Sublime Text / Vivado Sublime Text 代码编辑器之于程 ...
- chrome 插件 vimium 介绍
chrome 插件 vimium 介绍 vimium是一个chrome插件,用于在chrome中提供像vim这样的纯键盘的快捷操作方式. chrome webstore 链接 该插件是开源的,使用co ...
- Clojure CLR 入门
看过"黑客与画家"之后,你是不是对Lisp心动不已?然后翻了几页ACL(Ansi Common Lisp)又望而却步?叹息:如果有一天可以再.Net CLR 上写Lisp代码那就好 ...
- Linux都应用在哪些领域?发展如何?
与Windows操作系统软件一样,Linux也是一个操作系统软件.但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linu ...
- 00.硬件加速设计方法 ——概述
本文基于MOOC课<芯动力--硬件加速设计方法>课程整理所得.如有需要,请前往MOOC观看 文章目录 重点提纲--本文核心内容 半导体产业概述 产业链 1. Foundry 2. Fabl ...
最新文章
- 一文读懂jar包的小秘密
- newman api
- 【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )
- 《Spring Boot官方文档》16. 自动配置
- ubuntu eclipse java_搭建Ubuntu Java Eclipse开发环境
- 2021普通高考重庆成绩查询平台,2021年重庆高考成绩查询时间及查分方式
- 4月10日下午学习日志
- vue可视化拖拽生成工具_GitHub - 1260215278/dragUI: 基于vuedraggable.js + uni 的可视化拖拽编程,自动生成项目,自动生成代码,自行导入第三方组件...
- zabbix邮件报警功能的验证
- VC++鼠标、键盘的模拟操作
- React Native 微博登陆
- MySQL - 基于ibd文件恢复表数据
- OD使用经验【转载】
- 【学习日记】Dom基础
- Thingworx自定义扩展开发(三)- echarts集成
- iVMS-4200 Vs区别_古典占星学和现代占星学的区别
- 【降价提醒】,您关注的商品已降价!
- Java教程:如何对接自定义钉钉机器人并实现群聊消息发送
- 空旷的室外如何安装摄像头?室外线缆布置十项细则
- dreamspark 注册,免费微软序列号授权,wp7 app hub微软手机开发者帐号