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

Emacs 折腾记

作为一名在 Windows 下使用了多年 gVim 的少年,已然把它在我需要的地方都收拾得服服贴贴,可以说 Vim 经过配置配置,上得厅堂下得厨房,基本能满足我的所有幻想。...找到 Evil 并安装。 在 ~/.emacs 文件里加上: 这样就能在大部分地方(除了 eshell 等外)默认进入 Evil 模式使用 Vim 的编辑习惯了。...找到 slime 和 slime-company 并安装。 在 ~/.emacs 文件里加上: M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。...在网上找到一段简洁有效的配置步骤: 安装 virtualenv 和 jedi 插件。 在 ~/.emacs 文件里添加: 这样自动补全之类的就没有问题了。...在 ~/.emacs 文件中添加 这个 3 表示在距离屏幕上下边缘还有 3 行的时候再移动光标即自动滚屏,方便随时能看到当前编辑行的上下文,可以根据自己的使用习惯调整。

1.3K20

Emacs 折腾记

作为一名在 Windows 下使用了多年 gVim 的少年,已然把它在我需要的地方都收拾得服服贴贴,可以说 Vim 经过配置配置,上得厅堂下得厨房,基本能满足我的所有幻想。...在搜索网友们对此的经验之谈的时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言的神的编辑器上。...Update: 后来经验证,发现实际上是 sbcl 在安装过程中写的环境变量没有生效导致的,sbcl 在安装过程中会设置两个环境变量,新建一个 SBCL_HOME 值为 sbcl 安装路径,在 PATH...)) (slime-setup '(slime-company)) M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。...C/S 模式快速启动 Emacs Emacs 的启动速度是相比 Vim 来说被诟病吐槽得很多的一个点,我们在 Windows 下可以利用 C/S 模式来实现 Emacs 快速打开文件。

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么Lisp语言如此先进?(译文)

    在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。...在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension...如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。...那么,Lisp的编程优势体现在哪里呢? 七、 语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。...    return function (i) {       return n += i } } (实事求是地说,Perl也保留了语句和表达式的区别,但是使用了典型的Perl方式处理,使你可以省略

    1.2K60

    IT深度趋势:11种编程语言一度辉煌 缘何没落?

    现在你仍然可以找到APL程序员,但通常是在处理及其复杂的事物的物理或数学部门。 4、Forth ? 到目前为止,我们一直在谈论的语言领域都是商业或科学发展世界。Forth是不一样的。...在此之外,Forth在语言列表里已经没落,通常是被人们记下了而不是被人们使用。 5、LISP 早期的人工智能研究人员需要编程语言时,他们找到了处理器列表--LISP。...LISP在1950年代末发展成熟,由于其联合列表基本数据结构的力量发展壮大。联合列表在一个单一的结构中处理多个数据类型是非常有效的机制。...除了AI世界之外,LISP没有成功,如果你见过IBM大型机实现早期的LISP变体的调试故障输出,你就会明白是为什么了。没有缩进,长串的“}”字符就能列出好几页去。...可以把它看作一个编程语言的规范。 Smalltalk是在1970年代末和1980年初由在Xerox PARC工作的许多计算机科学巨星创作出来的。它只保留了六个关键字组,并且在一个消息传递模型中操作。

    1.3K70

    Lisp的本质(The Nature of Lisp)学习思考

    毕竟, 这个工具每天差不多有几千家公司在使用。 到目前为之, 我还没有说Ant在解析XML时所遇到困难。你也不用麻烦去它的网站上去找答案了, 不会找到有价值的东西。至少对我们这个论题来说是如此。...Lisp中函数的角色十分特殊, 函数也是一种数据类型, 就像整数和字符串一样, 因此可以把它赋值给符号。乘法函数Lisp的内置函数, 默认赋给*, 你可以把其他函数赋值给*, 那样*就不代表乘法了。...Lisp的内置函数集十分精简, 只包含了十分必要的部分。剩下的函数都是作为标准库来实现的。 Lisp宏 我们已经看到, 元编程在一个类似jsp的模板引擎方面的应用。我们通过简单的字符串处理来生成代码。...而且, Lisp没有语义约束, 你可以构造任何数据结构, 只要你原意。 Lisp通过宏(macro)来做元编程。我们写一组宏来把任务列表(to-do list)转换为专用领域语言。...学会Lisp意味着你能找到更好的工作, 因为聪明的雇主会被你与众不同的洞察力所打动。

    1.8K60

    pgloader的使用

    pgloader支持将多种格式的源数据同步到PG中 常用的几个源端数据可以是:sqlite、csv、mysql、mssql、pg。 目标端可以是: pg、citus、redshift。...相同,到pg里面不支持,导致部分表的k_2索引添加失败(这种情况需要人工去PG上补加索引) 下面是一个索引不冲突的运行日志 2.3 注意事项 附录的percona博客上提到,在使用pgloader可能遇到的问题...然而,有一个警告,当源关系的前 63 个以上字符相同时可能会遇到错误,即尝试生成重复的名称。...假设名称长度在 Postgres 中是合法的,则可以使用选项保留索引名称来解决此问题,保留原始索引名称。...问题 #5:MySQL 索引名称重复 原因:MySQL多个表的索引名称可以重复,但是PG不可以。 例如 mysql库里有3个表,都有 idx_k 这个索引。

    1.5K00

    Clojure与LispClojure与Lisp

    对于 大多数人来说,它的语法过于诡异了. Clojure 修正上面的大多数这些问题. 它保留了 lisp 的思想和哲学,并同时清除了过去的很多限制....2 函数也是一种数据类型 在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。...在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法; 在编译期运行代码,则是Lisp宏的工作基础; 在运行期编译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension...在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基本数据结构。 用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。...如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。

    1.9K30

    Emacs Lisp

    ;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...(+ 2 2) ;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是 (+ 3...;; 如果想要得到列表中的第一个元素,可以使用car函数 (car list-of-names) ;; 如果想要得到列表中的除第一个元素以外的其它元素,可以使用cdr函数 (cdr list-of-names...) ;; 以后push函数可以在列表的头部插入新的元素,所以下面的命令将改变list-of-name中元素的个数 (push "Stephanie" list-of-names) ;; mapcar...的开头, ;; 然后使用regular expression 搜索 “Bonjour + 其它任何内容” 的pattern, ;; 然后对找到的字符加粗。

    2.3K40

    NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

    还有许多函数,比如找到列表的长度或将函数应用于列表的每个元素并得到结果列表,这些函数在各种情况下都很有用。...Lisp 本身可以被赋予语义(顺便说一句,这是另一个模型),如果一个程序的功能可以在谓词演算中指定,那么逻辑的证明方法可以用来进行可接受的正确性论证。...在这两种情况下使用的组织原则是相同的,除了一个非常重要的区别:赋予个体 Lisp 程序员的自由功能远远超过 Pascal 企业中所能找到的。...Lisp 程序用功能膨胀的库,其效用超越了产生它们的应用程序。列表,Lisp 的本地数据结构,在很大程度上负责这种效用的增长。列表的简单结构和自然适用性反映在那些令人惊讶地非特异的函数中。...这本书必须是一本严肃的 Lisp 编程书,不管学生是谁,它在哪里使用。 请注意,这是一本关于编程的书,不同于大多数 Lisp 书籍,后者被用作人工智能工作的准备。

    19810

    Emacs Lisp

    ;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...(+ 2 2) ;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是 (+ 3...;; 如果想要得到列表中的第一个元素,可以使用car函数 (car list-of-names) ;; 如果想要得到列表中的除第一个元素以外的其它元素,可以使用cdr函数 (cdr list-of-names...) ;; 以后push函数可以在列表的头部插入新的元素,所以下面的命令将改变list-of-name中元素的个数 (push "Stephanie" list-of-names) ;; mapcar...的开头, ;; 然后使用regular expression 搜索 “Bonjour + 其它任何内容” 的pattern, ;; 然后对找到的字符加粗。

    2.2K30

    Emacs Lisp2

    ;; 为了实验本教程中的lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下,;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...2 2);; Elisp中表达式可以通过括号来嵌套(+ 2 (+ 1 1));; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算的方法是(+ 3 (+ 1 2));...函数的作用是在光标所在出插入字符Hello(insert "Hello!")...);; 以后push函数可以在列表的头部插入新的元素,所以下面的命令将改变list-of-name中元素的个数(push "Stephanie" list-of-names);; mapcar函数对列表中的把列表中的每一个元素分别取出来...的开头,;; 然后使用regular expression 搜索 “Bonjour + 其它任何内容” 的pattern,;; 然后对找到的字符加粗。

    98740

    用JavaScript实现一个编译器

    2.1.1 词法分析 词法分析的过程,主要是将原代码(字符串),通过分词的方式生成一个具有描述程序语义的token列表。...分词的原理:逐个读取源代码中的字符,与预设的关键词、字符串、数字、操作符等LISP语言定义的语法相关规则,转换成 {type: 'xx', value: 'xx'} 的具有描述意义的形式 例如LISP:...(暂称作:tokens列表)按照顺序下来很好的描述了源代码中的字符串和编程语义。...2.1.2 语法分析 词法分析后得到的tokens列表已经可以描述LISP的语法,但是还并不抽象,因为直观看来,我们无法解读这个程序的意思,这就需要将其转换为AST(Abstract Syntax Tree...为什么要将其转换到AST,AST能更好的描述源代码的语义、描述结构更加通用,tokens列表只是描述了“符号”的意义,可以将词法分析过程看作是分类过程,而语法分析的过程,则是将符号组合,使其具有了执行顺序以及执行规则的语法

    95540

    如何用Python编写一个Lisp解释器

    当我们计算一个数值时,也可以说我们在评估一种表达形式;我们可以说 “1+2” 估值为 3,并写成 “1 + 2” ⇒ 3. Schema 的语法不同于其他大多数编程语言。考虑如下情况: ?...例子:(sqrt (* 2 8)) ⇒ 4.0 在该表的语法一栏,标识符必须为符号,数字必须为整数或小数,而其它斜体字可以为任何表达式,arg... 则表示零或多个 arg 的重复。...tokenize 函数以字符串作为输入,在每个括号两边加空格,然后调用 str.split 获取 tokens 列表: def tokenize(chars: str) -> list: "Convert...在我看来,它可以达到我的目的,即充当 Lisp 的解释器。 真实的故事 追溯这个想法的来源有助于理解解释器的工作原理,下面给大家分享一个真实的故事。...Tony 认为最难的部分是表达式的解释器;需要的是 Lisp,他知道如何编写 C 程序来处理非 Lisp 字符,并将其链接到 Lisp 程序。

    1.4K40

    不管是嵌套 XML,还是 Lisp 嵌套括号,还是 XXX 的 Map 数据结构,一切都是树形结构——映射。Lisp的本质(The Natur

    任何可以用树来表示的数据, 同样可以用XML来表示, 反之 亦然。希望你能懂得这一点, 这对下面的内容极其重要。 再进一步。还有什么类型的数据也常用树来表示? 无疑列表(list)也是一种。...Ant带有一组核心类, 可以由用户任意扩展, 只要遵守若干约定就可以。Ant找到这些类, 每当遇到XML元素有同样的名字, 就执行相应的代码。过程非常简单。...毕竟, 这个工具每天差不 多有几千家公司在使用。 到目前为之, 我还没有说Ant在解析XML时所遇到困难。你也不用麻烦去它的网站上去找答 案了, 不会找到有价值的东西。...Lisp中函数的角色十分特殊, 函数也是一种数据 类型, 就像整数和字符串一样, 因此可以把它赋值给符号。...学会Lisp意味着你能找到更好的工作, 因为聪明的雇主会 被你与众不同的洞察力所打动。

    1.4K20

    写给小白的开源编译器

    // 在循环里面我们可以将`current`变量增加为我们想要的值 while (current < input.length) { // 我们还将在 `input` 中存储 `current` 字符...在 JavaScript 中 String 类的实例,是一个类数组,从下面这个例子可以看出来: 可能之前你会用 charAt 来获取字符串的单个字符,因为它是在 String 类型上的一个方法: 这两个方法都可以实现你想要的效果...对于不同的类型,就要用不同的 if 条件判断分别处理: 左右括号匹配代表一个整体,找到对应的括号只要做上标记就好 空格代表有字符分割,不需要放到我们的 token 数组里,只需要跳到下一个非空格的字符继续循环就好...: // 从检查开头的双引号开始: if (char === '"') { // 保留一个 `value` 变量来构建我们的字符串标记。...、删除节点,甚至我们可以在原有的 AST 结构保持不变的状态下创建一个基于它的全新的 AST。

    68110

    (cljsrun-at (JSVM. :browser) 简单类型可不简单啊~)

    ::keyword ;;=> :cljs.user/keyword 3.自动扩展为 ;; 自动查找以aliased-ns为别名的命名空间,并以找到的命名空间作为前缀创建keyword ;; 因此需要先通过...原因十分简单但又难以理解——Lisp中代码即数据,数据即代码。作为Lisp的方言cljs自然传承了这一耀眼的特性!...在clj/cljs中Var是一个容器,其内容为指向实际值的地址,当其内容为nil时称之为unbound,非nil时则称为bound。而一个Var可以对应1~N个Symbol。...;; Symbol a和b都对应同一个Var,这个Var指向1所在的内存地址 (def a 1) (def b 1) 这个和JAVA、C#中的String是一样的。...,不过由于Var会根据其所在列表中的位置解析为是Macro还是函数还是值,因此需要通过#'来阻止,而#'就是var的reader macro。

    71970

    编程语言的出现都这么随意吗?

    麦卡锡在 IBM 研究代数表达式的微分运算时,产生了一系列对语言需求,包括:用数学函数控制流程的方法(即,递归和条件表达式);列表的自动分配;废弃列表的隐士回收。...这些语言需求,显然 IPL 不能满足,所以需要设计新的语言。1958 年秋,麦卡锡在 MIT 成立了人工智能小组,开始着手设计这种新的列表处理语言。这最终导致 1960 年,Lisp 的诞生。...1960 年的 Lisp 并没有来得及设计自己的语法,就被麦卡锡的学生实现了,因为没有语法,麦卡锡的学生就以列表格式的语法分析树(即,S(Symbolic)表达式)作为临时语法。...但是这种想法遭到了当时 Lisp 程序员的反对,最后麦卡锡开了 MIT,从此 Lisp 的语法凝固在 S 表达式上。 Lisp 建立在列表和 lambda 演算和基础上,是函数式编程的鼻祖。...最新版本是 2014 发布的 C#5.0。.NET 4.0 引入了动态类型,使得.NET 平台可以嵌入动态语言,比如:Lisp、Python、 Ruby 等。 A.30.

    1.7K60
    领券