免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: flw
打印 上一主题 下一主题

有关 Emacs 使用技巧的内容请在这个帖子讨论。 [复制链接]

论坛徽章:
0
661 [报告]
发表于 2008-04-25 10:20 |只看该作者
原帖由 projoy 于 2008-4-25 10:01 发表
哇,谢谢你耐心的讲解,我安装你说的做了,可是还是不行,真是郁闷,看着同寝那家伙拿Vi气我,哼,一定搞明白这个问题!!哈哈不过真是有点厌烦了,呵呵希望很快我就能知道这到底是为什么哈,再次感谢你啦


这段代码我一直在用,至少我这儿没问题啊。
你可以用control+h k 看看control o绑定在哪个函数上了,
有点奇怪。

还有上面我说的,有个地方按键是 alt + shift + ;(上个帖子里面分号和右括号被自动替换成一个笑脸图标了)

[ 本帖最后由 lucency 于 2008-4-25 12:17 编辑 ]

论坛徽章:
0
662 [报告]
发表于 2008-04-25 11:21 |只看该作者
哈哈对啊,我都忘了还有这个功能呢,我的c-o绑定的函数是这样的
C-o runs the command open-line
  which is an interactive compiled Lisp function in `simple.el'.
It is bound to C-o, <insertline>.
(open-line n)

Insert a newline and leave point before it.
If there is a fill prefix and/or a `left-margin', insert them
on the new line if the line would have been blank.
With arg n, insert n newlines.

论坛徽章:
0
663 [报告]
发表于 2008-04-25 11:34 |只看该作者
ps. 我对elisp不怎么懂,不过我觉得在.emacs里面直接local-set-key不妥,local-set-key是用来设定当前keymap的键映射,可是在

说得对,是我搞错了。我当时没重启emacs。把local-set-key 那行改成 (define-key global-map (kbd "C-o") 'vi-open-next-line) 就好了。

projoy:

看情况像是配置没生效,你检查一下 home目录下有没有 .emacs.elc 文件。如果有的话,把它删掉再试。

这个代码应该是可以的,你可以用下面的方式验证:
把代码保存在某个文件里,假设为 test.el。然后在命令行 emacs -q -l test.el 启动emacs。这个命令的意思是load test.el里的配置。

按说,这就应该得到预期的效果。如果还不行,可能就见鬼了? C-h v <ret> emacs-version<ret>把emacs 版本号告诉我们。

论坛徽章:
0
664 [报告]
发表于 2008-04-25 12:07 |只看该作者
原帖由 lgfang 于 2008-4-25 11:34 发表

说得对,是我搞错了。我当时没重启emacs。把local-set-key 那行改成 (define-key global-map (kbd "C-o") 'vi-open-next-line) 就好了。

projoy:

看情况像是配置没生效,你检查一下 home目录下有没有  ...


哈哈没见鬼,好使啦,看这那个小光标一行行往下走,心里这个美呀
最后的代码如下
(define-key global-map (kbd "C-o") 'vi-open-next-line)

(defun vi-open-next-line (arg)
"Move to the next line (like vi) and then opens a line."
(interactive "p")
(end-of-line)
(open-line arg)
(next-line 1)
(indent-according-to-mode))


首先特别感谢lgfang 和lucency 的耐心指教,我从这次经历中学到了很多知识,呵呵,没想到emacs中设置完成后竟也有不能执行的情况,从你们的帮助中,我也学会了些自己查找问题解决问题的办法,不过我还有一事不明,那就是ctrl + shift + ;有什么作用?我这里显示的是"C-: is undifined“,呵呵,可能是windows下emacs不太好用吧,所以windoiws下的c-o还没解决,不过不要紧啦,至少在linux上我能用就很开心了
再次表示十分的感谢,哈哈我太开心啦

论坛徽章:
0
665 [报告]
发表于 2008-04-25 12:16 |只看该作者
原帖由 projoy 于 2008-4-25 12:07 发表


哈哈没见鬼,好使啦,看这那个小光标一行行往下走,心里这个美呀
最后的代码如下
(define-key global-map (kbd "C-o") 'vi-open-next-line)

(defun vi-open-next-line (arg)
"Move to the next line  ...


sorry,说错了,应该是alt+shift+; ,不好意思。
这个会在minibuffer那儿打开一个...,怎么说呢,反正执行完后会显示Eval :,你可以在这儿输入一些elisp代码,回车后这些代码就会被求值。可以用来临时更改已有的设置什么的,我就是用它来干这个的。也可以用来试验一些函数的作用,等等。挺好用的。

论坛徽章:
0
666 [报告]
发表于 2008-04-25 12:19 |只看该作者

回复 #663 projoy 的帖子

首先,不要高兴得太早:wink: 这只是一个很简单很简单功能,如果这都能让你那么高兴,那以后你还不得高兴得发疯?

其次,你说 M-: 在windows不好用 不太可能呀。即使真的是那样,也不影响把 C-o 绑定到 vi-open-next-line

论坛徽章:
0
667 [报告]
发表于 2008-04-25 12:23 |只看该作者
原帖由 lucency 于 2008-4-25 12:16 发表


sorry,说错了,应该是alt+shift+; ,不好意思。
这个会在minibuffer那儿打开一个...,怎么说呢,反正执行完后会显示Eval :,你可以在这儿输入一些elisp代码,回车后这些代码就会被求值。可以用来临时更改已有的设置什么的,我就是用它来干这个的。也可以用来试验一些函数的作用,等等。挺好用的。


我觉得用C-x C-e 更方便
But I prefer "C-x C-e" (or M-x eval-last-sexp)

Just move cursor to the end of your code and then C-x C-e to evaluate (run) your code.

For example, I would move cursor after last closing parenthesys and C-x C-e to add a function.

(defun my-insert-date ()
  "Insert current date at point"
  (interactive)
  (insert (format-time-string "%m/%d/%Y")))

论坛徽章:
0
668 [报告]
发表于 2008-04-25 12:42 |只看该作者
原帖由 lgfang 于 2008-4-25 12:19 发表
首先,不要高兴得太早:wink: 这只是一个很简单很简单功能,如果这都能让你那么高兴,那以后你还不得高兴得发疯?

其次,你说 M-: 在windows不好用 不太可能呀。即使真的是那样,也不影响把 C-o 绑定到 vi-ope ...

可能是我在windows下的.emacs没弄明白的关系吧,不过现在新学编程,所以还是把linux下的弄好了再说吧,哈哈

论坛徽章:
0
669 [报告]
发表于 2008-04-25 12:43 |只看该作者
原帖由 lucency 于 2008-4-25 12:16 发表


sorry,说错了,应该是alt+shift+; ,不好意思。
这个会在minibuffer那儿打开一个...,怎么说呢,反正执行完后会显示Eval :,你可以在这儿输入一些elisp代码,回车后这些代码就会被求值。可以用来临时更改已 ...

好的,原来这样哈哈,求出值是vi-open-next-line,呵呵

论坛徽章:
0
670 [报告]
发表于 2008-04-25 13:01 |只看该作者

回复 #666 lgfang 的帖子

这个可能是习惯问题吧,我也用scratch,只是不多。
以前用vim,有什么问题了就:, 习惯了在下面的小窗口里操作了。
我也刚开始用emacs没多久,好像一个多月吧,以前一直用vim,现在vim,emacs都用,不自觉就这样了。

to projoy:那个结果应该是绑定成功了吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP