一个新手的苦恼 for emacs

Vim、Emacs配置和使用
头像
renws
帖子: 64
注册时间: 2008-08-30 12:29
联系:

Re: 一个新手的苦恼 for emacs

#16

帖子 renws » 2009-08-08 22:17

Languages
Main article: List of programming languages for artificial intelligence

AI researchers have developed several specialized languages for AI research, including Lisp[137] and Prolog.[138]
来自wikipedia Artificial intelligence(人工智能)词条的。貌似lisp还一直在用
柔的法则
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#17

帖子 youarehike » 2009-08-08 22:33

renws 写了:
youarehike 写了:
renws 写了:rms当初采用lisp与C写Emacs是考虑到lisp处理文本的强大和C的效率
c的效率是不用怀疑的,但lisp在现在还说它处理文本强大,就很让人怀疑,看看lisp的语法(我看的不是很全),它的关键字就比较长。我不知道xml能不能和它相同并论,但是xml发展的好应该是有它优秀的地方的。像lisp这中解析性的语言,应该没有生命力(很容易就可以自己搞一套),都快50年了,还是老样子,就可以看出它没什么特别的地方。象你上面说到那些项目,我不清楚就不能乱说。
我其实也没用过lisp,只是接触过一点点儿elisp :em06
那个说法貌似是在《Learning GNU Emacs》上看到的。

不过它的语法跟它处理文本强不强大有什么关系么...
我可以说,如果要我们现在来重新定义一种全新的解释性语言,那可以把所以的语言的优点都放进去,比如说:“我要下载ubuntu的安装CD,如果在今天晚上11:30没有成功下载,那么给我发邮件到[email protected],否则,你自己将创建一个比windows和linux还好的操作系统“。什么叫强大,那的比较,类似于lisp这类语言,根本就没有强大之说(我们可以不复制的定义出lisp所具有的功能而语法像c一样精悍的解析性语言(毕竟lisp浪费文本空间了)
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#18

帖子 youarehike » 2009-08-08 22:39

renws 写了:
Languages
Main article: List of programming languages for artificial intelligence

AI researchers have developed several specialized languages for AI research, including Lisp[137] and Prolog.[138]
来自wikipedia Artificial intelligence(人工智能)词条的。貌似lisp还一直在用
它们这种做法可以理解,但是现在没多少人会朝lisp方向走,类似于emacs的支持,也只能写写扩展,你说lisp过时,但由于历史问题,它还将继续。(比如说linux下有ultlaedi,那才懒的学emacs,至于lisp,那都没多少人提及的东西。
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#19

帖子 youarehike » 2009-08-08 22:39

renws 写了:
Languages
Main article: List of programming languages for artificial intelligence

AI researchers have developed several specialized languages for AI research, including Lisp[137] and Prolog.[138]
来自wikipedia Artificial intelligence(人工智能)词条的。貌似lisp还一直在用
它们这种做法可以理解,但是现在没多少人会朝lisp方向走,类似于emacs的支持,也只能写写扩展,你说lisp过时,但由于历史问题,它还将继续。(比如说linux下有ultlaedi,那才懒的学emacs,至于lisp,那都没多少人提及的东西。
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#20

帖子 youarehike » 2009-08-08 23:12

careone 写了:/etc/emacs/site-start.d/
这就是启动时默认的搜索目录(系统级)
个人的文件都是放在
/home/xxx/ 目录下

介绍一点常识1:
/home/xxx/ = $HOME = ~

常识2:
所有个人用户的配置文件一般都保存为 $HOME/.XXX 文件/目录中。
配置文件有时也可能保存到 $HOME/.XXX.d/ 目录下。

常识3:
软件库的配置文件:
/etc/apt/sources.list (这个大家都知道)
/etc/apt/sources.list.d/XXX.list (这个知道的人少一点)

另外: 如果需要 emacs22 的简体中文汉化包,可以到下面的地址下载
emacs22-locale-zh-cn.deb

一看就是高手--话从不多说! :em09
1. $HOME/.emacs.d/ 下没有找到.emacs
2. /etc/emacs/site-start.d/ 下同样没找到.emacs
3. /etc/apt/sources.list.d/XXX.list (这个知道的人少一点) ,我的如下:
/etc/apt/sources.list.d$ ls -a
. ..
4. emacs22-locale-zh-cn.deb这个包能把emacs那些帮助文档都中文化或只是中文化emacs菜单?

5。除了我自己创建的~.emacs文件外,你给的路径都没找到.emacs文件,但是运行emacs软件之后,它是回加载很多1楼贴上说的那些*.el配置的。我就很想知道,emacs在启动的时候,它的第1加载规则是什么,这个规则是不是我们指的.emacs,但是现在看来,它不是。那emacs是不是一起来就直接加载/etc/emacs/site-start.d/目录下的el文件呢?有很多文件,emacs第一个先加载什么呢?没有启动配置文件是说不通的呀。你能再补充一下吗?
yupeng820921
帖子: 94
注册时间: 2009-02-25 19:44

Re: 一个新手的苦恼 for emacs

#21

帖子 yupeng820921 » 2009-08-09 10:24

youarehike 写了:
zhuqin_83 写了:用c你怎么及时扩展功能呢?用解释性的语言,扩展才能那样方便,不必重新编译,配置文件才不会有什么约束和限制。
:em01
emacs里面是一定有lisp的解析器的,如果用c语言代替lisp语言,那emacs只要把lisp的解析器换成c的解析器就可以了。对于用户用c写的扩展,不必对它编译,而只要解析就可以了(就像解析lisp一样),不知道我有没有说清楚。

从开始读这篇帖子就有种怀疑,楼主是在对自己的智商和水平无法企及的东西发表大言不惭的评论,不过毕竟每个人都有自己的看法,也许楼主只是看问题的角度和我不同,因此我还不敢十分确定。

看了楼主这个回帖,我彻底确信了,楼主只是一个什么都不懂的扯淡者而已。

如果一个人知道自己水平低,虚心的求教,那还有办法帮助他让他提高。但如果一个人明明水平很低,偏偏还意识不到,认为自己有资格指手划脚的说应该如何如何,对这种人,是完全无法可想的。因为当他说出一个谬论,你要想让他明白他是错的,你得先把他的水平提升到能理解这件事的程度,而他还不主动配合,这种工作量实在是太大了。
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 一个新手的苦恼 for emacs

#22

帖子 careone » 2009-08-09 12:54

youarehike 写了:
careone 写了:/etc/emacs/site-start.d/
这就是启动时默认的搜索目录(系统级)
个人的文件都是放在
/home/xxx/ 目录下

介绍一点常识1:
/home/xxx/ = $HOME = ~

常识2:
所有个人用户的配置文件一般都保存为 $HOME/.XXX 文件/目录中。
配置文件有时也可能保存到 $HOME/.XXX.d/ 目录下。

常识3:
软件库的配置文件:
/etc/apt/sources.list (这个大家都知道)
/etc/apt/sources.list.d/XXX.list (这个知道的人少一点)

另外: 如果需要 emacs22 的简体中文汉化包,可以到下面的地址下载
emacs22-locale-zh-cn.deb

一看就是高手--话从不多说! :em09
1. $HOME/.emacs.d/ 下没有找到.emacs
2. /etc/emacs/site-start.d/ 下同样没找到.emacs
3. /etc/apt/sources.list.d/XXX.list (这个知道的人少一点) ,我的如下:
/etc/apt/sources.list.d$ ls -a
. ..
4. emacs22-locale-zh-cn.deb这个包能把emacs那些帮助文档都中文化或只是中文化emacs菜单?

5。除了我自己创建的~.emacs文件外,你给的路径都没找到.emacs文件,但是运行emacs软件之后,它是回加载很多1楼贴上说的那些*.el配置的。我就很想知道,emacs在启动的时候,它的第1加载规则是什么,这个规则是不是我们指的.emacs,但是现在看来,它不是。那emacs是不是一起来就直接加载/etc/emacs/site-start.d/目录下的el文件呢?有很多文件,emacs第一个先加载什么呢?没有启动配置文件是说不通的呀。你能再补充一下吗?
*1 ~/.emacs 以点号开头,属于隐藏文件,按惯例即个人的配置文件(非系统级配置文件);

2 emacs 的加载顺序可以仔细观察1楼的启动提示信息(启动emacs后,在 buffer --> Messages 中即可看到)。/etc/emacs/site-start.d/ 即为 默认启动路径,该目录下的文件以下面的规则命名: 12XXX.el (前面是2位数字,代表加载的顺序,后面是.el 扩展名,也可是编译后的 .elc 扩展名)。先加载系统级的配置,再加载个人配置 ~/.emacs

3 ~/.emacs 这个文件默认是没有的,自己写一个空白文件就行,没必要到处去找。需要的时侯在里面添加内容就是了。

命令: echo \;.emacs > ~/.emacs (自己去体会这个命令的效果,查看 ~/.emacs 的内容就知道了)

4 emacs22-locale-zh-cn.deb这个包只是把emacs菜单部分汉化(汉化工作较大,汉化主要是其它热心网友翻译的,我只是打包。如果你有兴趣,可以把 这个 deb 解压缩,把 里面的 chinese-cn-menu.el 翻译补全即可)?

如有必要,也可联系我 [email protected] ,
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#23

帖子 youarehike » 2009-08-09 15:53

yupeng820921 写了:
youarehike 写了:
zhuqin_83 写了:用c你怎么及时扩展功能呢?用解释性的语言,扩展才能那样方便,不必重新编译,配置文件才不会有什么约束和限制。
:em01
emacs里面是一定有lisp的解析器的,如果用c语言代替lisp语言,那emacs只要把lisp的解析器换成c的解析器就可以了。对于用户用c写的扩展,不必对它编译,而只要解析就可以了(就像解析lisp一样),不知道我有没有说清楚。

从开始读这篇帖子就有种怀疑,楼主是在对自己的智商和水平无法企及的东西发表大言不惭的评论,不过毕竟每个人都有自己的看法,也许楼主只是看问题的角度和我不同,因此我还不敢十分确定。

看了楼主这个回帖,我彻底确信了,楼主只是一个什么都不懂的扯淡者而已。

如果一个人知道自己水平低,虚心的求教,那还有办法帮助他让他提高。但如果一个人明明水平很低,偏偏还意识不到,认为自己有资格指手划脚的说应该如何如何,对这种人,是完全无法可想的。因为当他说出一个谬论,你要想让他明白他是错的,你得先把他的水平提升到能理解这件事的程度,而他还不主动配合,这种工作量实在是太大了。
:em09 你装b也是呼呼的。你都没解释哪说的不对,一两句轻佻的工作量太大就完事啦?
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#24

帖子 youarehike » 2009-08-09 16:01

22楼的---- “emacs 的加载顺序可以仔细观察1楼的启动提示信息(启动emacs后,在 buffer --> Messages 中即可看到)。/etc/emacs/site-start.d/ 即为 默认启动路径,该目录下的文件以下面的规则命名: 12XXX.el (前面是2位数字,代表加载的顺序,后面是.el 扩展名,也可是编译后的 .elc 扩展名)。先加载系统级的配置,再加载个人配置 ~/.emacs“,讲的比较清楚 :em11
头像
ask_me
帖子: 374
注册时间: 2009-03-22 9:54

Re: 一个新手的苦恼 for emacs

#25

帖子 ask_me » 2009-08-09 17:01

youarehike 写了:
ask_me 写了:
youarehike 写了:如果用c语言代替lisp语言,那emacs只要把lisp的解析器换成c的解析器就可以了
我倒。。。
我没看出哪里说的不对,你能告诉我哪里说的不对吗?
没说你错,我只是觉得这种想法比较荒唐而已。
Emacs使用Emacs lisp作为扩展语言,完全是历史原因,因为早期的黑客们使用的高级语言就那么几种:fortran、lisp、COBOL等等(那时候连C都没诞生),按照Richard Stallman的说法,他们当时在MIT里唯一使用的高级语言就是lisp。后来,MIT的那群人开始写emacs,自然而然的就把他们熟悉的lisp作为了emacs的扩展语言。
C语言是编译性的语言,至于你说的C解释器,也不是没有,CINT就是一个(效率很低)。但使用C来作为emacs的解释器又有何意义?你也不嫌复杂麻烦?用C来蛮力操作文本,还不如用perl呢!更何况现在emacs的扩展那么多,如果换一个扩展语言,又要推倒重来,太不合算了。
我也不喜欢用emacs,配置和操作太TM复杂了,平时主要用vim。
yupeng820921
帖子: 94
注册时间: 2009-02-25 19:44

Re: 一个新手的苦恼 for emacs

#26

帖子 yupeng820921 » 2009-08-09 18:23

youarehike 写了:
yupeng820921 写了:
youarehike 写了:
zhuqin_83 写了:用c你怎么及时扩展功能呢?用解释性的语言,扩展才能那样方便,不必重新编译,配置文件才不会有什么约束和限制。
:em01
emacs里面是一定有lisp的解析器的,如果用c语言代替lisp语言,那emacs只要把lisp的解析器换成c的解析器就可以了。对于用户用c写的扩展,不必对它编译,而只要解析就可以了(就像解析lisp一样),不知道我有没有说清楚。

从开始读这篇帖子就有种怀疑,楼主是在对自己的智商和水平无法企及的东西发表大言不惭的评论,不过毕竟每个人都有自己的看法,也许楼主只是看问题的角度和我不同,因此我还不敢十分确定。

看了楼主这个回帖,我彻底确信了,楼主只是一个什么都不懂的扯淡者而已。

如果一个人知道自己水平低,虚心的求教,那还有办法帮助他让他提高。但如果一个人明明水平很低,偏偏还意识不到,认为自己有资格指手划脚的说应该如何如何,对这种人,是完全无法可想的。因为当他说出一个谬论,你要想让他明白他是错的,你得先把他的水平提升到能理解这件事的程度,而他还不主动配合,这种工作量实在是太大了。
:em09 你装b也是呼呼的。你都没解释哪说的不对,一两句轻佻的工作量太大就完事啦?

我承认我语气有问题,向你道歉。

以大家上学都学过的c做扩展语言,确实是一种很直观很自然的想法。有一款叫slick edit的编辑器,就是用一种自创的c like的脚本语言进行扩展的。
yupeng820921
帖子: 94
注册时间: 2009-02-25 19:44

Re: 一个新手的苦恼 for emacs

#27

帖子 yupeng820921 » 2009-08-09 18:49

ask_me 写了:
youarehike 写了:
ask_me 写了:
youarehike 写了:如果用c语言代替lisp语言,那emacs只要把lisp的解析器换成c的解析器就可以了
我倒。。。
我没看出哪里说的不对,你能告诉我哪里说的不对吗?
没说你错,我只是觉得这种想法比较荒唐而已。
Emacs使用Emacs lisp作为扩展语言,完全是历史原因,因为早期的黑客们使用的高级语言就那么几种:fortran、lisp、COBOL等等(那时候连C都没诞生),按照Richard Stallman的说法,他们当时在MIT里唯一使用的高级语言就是lisp。后来,MIT的那群人开始写emacs,自然而然的就把他们熟悉的lisp作为了emacs的扩展语言。
C语言是编译性的语言,至于你说的C解释器,也不是没有,CINT就是一个(效率很低)。但使用C来作为emacs的解释器又有何意义?你也不嫌复杂麻烦?用C来蛮力操作文本,还不如用perl呢!更何况现在emacs的扩展那么多,如果换一个扩展语言,又要推倒重来,太不合算了。
我也不喜欢用emacs,配置和操作太TM复杂了,平时主要用vim。
当初选择用lisp的时候确实是很自然的唯一选择,不过从现在来看,lisp还是自有其优势的,比如能够任意嵌套的变量范围(有个学术名词,我忘记了),可以很方便的实现那些全局设置,buffer相关的设置,主模式或子模式相关的设置。

emacs好像有个用python做扩展的版本,叫pymcs,在lisp外面又套了层python,不知道好不好用。
afphoenix
帖子: 153
注册时间: 2009-01-07 15:19

Re: 一个新手的苦恼 for emacs

#28

帖子 afphoenix » 2009-08-09 19:10

有个学术名词,我忘记了
是不是叫...作用域? :em02 我什么都不懂.... :em03
大家好,我是计算机系大学生,玩电脑也 7.8 年了吧,可是这个系统为什么XXX,就不能XXX,连我这种XXX都XXX,怎么能够推广,看来XXX路还很长XXX,搞不懂你们这些XXX,再见了XXX
youarehike
帖子: 31
注册时间: 2009-03-23 16:35

Re: 一个新手的苦恼 for emacs

#29

帖子 youarehike » 2009-08-09 19:47

很高兴大家这么热烈的讨论。有关lisp是否优秀我们就不讨论了,大家都应该坚持自己的观点。今天没什么问题,下次有问题再请教大家。
anewbie
帖子: 159
注册时间: 2009-02-24 19:39

Re: 一个新手的苦恼 for emacs

#30

帖子 anewbie » 2009-08-09 19:53

先回答你的第一个问题,从源里默认安装的包会有默认的配置文件,在 /etc/<flavor>/site-start.{el, d} 与 /etc/emacs/ 下面。<flavor> 与你实际安装的 emacs 版本相对应。如果不想要这些文件,自己装就是了。另外,源里的 ecb 已经是 tooooooooooooold,自己装更好。稳妥的方案是 cedet 1.0 pre6 + ecb 2.4.0.

再回答配置文件加载的问题,由于您在帖子中表现出的水准,我只能指望上帝可以保佑您可以看明白。这种设置配置文件的方式源于 debian 中的 emacsen-common 机制。首先 emacs 命令执行时会调用 startup.el 中 的 command-line 函数,这函数很长,看这几行:

代码: 全选

    (if site-run-file
	(progn
	  ;; Load all the debian package snippets.
	  ;; It's in here because we want -q to kill it too.
	  (if (load "debian-startup" t t nil)
	      (debian-startup debian-emacs-flavor))
	  ;; Now the normal site file...
	  (load site-run-file t t nil)))
接下来,执行 debian-startup 函数,在 debian-startup.el 中,这个文件是 emacsen-common 包的一部分。

代码: 全选

  (if (not (boundp 'debian-emacs-flavor))
      (defconst debian-emacs-flavor flavor
        "A symbol representing the particular debian flavor of emacs that's
running.  Something like 'emacs20, 'xemacs20, etc.")
        
    (let ((common-dir "/etc/emacs/site-start.d")
          (flavor-dir (concat "/etc/" (symbol-name flavor) "/site-start.d")))
      (debian-run-directories flavor-dir common-dir)))
函数 debian-run-directories 在同一个文件里,它加载由参数指定的文件夹下所有形如 XXfilename.el{c} 的文件,其中,XX 必须是数字。这就是你在 /etc/emacs/site-start.d 或者 /etc/<flavor>/site-start.d 下看到那堆以数字开头的文件的原因。
加载完了这一堆文件之后,才会加载你家目录下的 .emacs 文件,command-line 函数的这几行:

代码: 全选

(cond
			    ((eq system-type 'ms-dos)
			     (concat "~" init-file-user "/_emacs"))
			    ((eq system-type 'windows-nt)
			     ;; Prefer .emacs on Windows.
			     (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
				 "~/.emacs"
			       ;; Also support _emacs for compatibility.
			       (if (directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
				   "~/_emacs"
				 ;; But default to .emacs if _emacs does not exist.
				 "~/.emacs")))
			    (t
			     (concat "~" init-file-user "/.emacs")))))
		      ;; This tells `load' to store the file name found
		      ;; into user-init-file.
		      (setq user-init-file t)
		      (load user-init-file-1 t t)
这样设计保证了你家目录下的配置文件具有比系统默认配置更高的优先级。所以,如果你不想加载系统默认配置的话,稍稍 hack 一下这几行代码就行了,就算完全不懂 lisp 想来也不困难,改写代码不会,删代码您总该会吧。

然后,你根本就搞不清楚 interpretation, compilation 这些基本概念,也就没有和你讨论这类问题的必要,或者不客气地说缺乏讨论的基础。

最后,完全不用把“有限的生命”投入到 elisp 中,这种小玩意儿只投入一到两个下午也就差不离了。难道你没发现神话 elisp 的是你自己?麻省理工那几门基础课仍然是以 lisp 作为工具语言,很大部分原因在于这玩意儿简单到令人发指,完全不用花精力在语言层面纠结。如果这都做不到,我很难想像你能体会到 C 的简洁高效。
主题已锁定