LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1731|回复: 16

emacs的跳转问题

[复制链接]
发表于 2006-7-30 12:13:22 | 显示全部楼层 |阅读模式
用了很长时间vim,习惯于一些跳转方式,由于特殊原因要开始用emacs,几个跳转的键不知道,写起程序来觉得很不方便,特此请教:

1: 有没有类似vim下C-o, C-i这样的键? 就是跳转到刚才待过的地方
2: 有没有类似H, M, L这样的键? 就是跳转到屏幕的顶端,中部和底端
2: 有没有类似d%这样的键?就是删除从当前括号一直到匹配括号(包括匹配的注释符号/*...*/)间的文字

多谢了,先就这些,有了新问题再来
发表于 2006-7-30 18:11:41 | 显示全部楼层
可以设置书签   光标寄存器  还可以保存窗口状态

跳转到刚才的地方好像不能。。。不过可以通过扩实现。。。王垠的页面里有这个扩展吧? 我用不到,也就没有注意了



在页面内跳转   
M-r   跳转到页面中间
加数字参数  比如 C-u 1 M-r  是光标移到第几行

C-l  是将当前行卷至页面中间
C-u 1 C-l  是将当前行卷到页面第几行


删除那个。。可以试一下   M-x  kill-paragraph  如果符合要求,可以绑到一个键上


我正在写一个Emacs的入门教程 ,编辑模式差不多完成了,等会发上来
回复 支持 反对

使用道具 举报

发表于 2006-7-30 18:14:32 | 显示全部楼层
注释可以直接删除  不同的主模式能够识别不同的注释格式  M-x  kill-comment                          

如果上面的 M-x kill-paragraph  不符合要示,可以自己录制一个宏,用正则表达式匹配,应该是很简单的。。。
回复 支持 反对

使用道具 举报

发表于 2006-7-30 18:51:20 | 显示全部楼层
兄弟的特殊原因是什么原因啊?比较感兴趣,要是方便的话,讲一下吧。。。

Vim我用的时间不长,也就两个来月吧。。。不过Emacs用的时间还不到Vim的一半

Vim本身是很爽的,但是,用大话里那句经典的台词:

Vim是比Emacs要爽一点点,但是有了输入法这个累赘,Emacs就比Vim要爽一点点了……

http://www.linuxsir.cn/bbs/showthread.php?t=266224

原贴地址:(包含纯文本格式,可以大致浏览下。稍微新一点点)
http://forum.ubuntu.org.cn/viewtopic.php?p=105293
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-31 00:40:00 | 显示全部楼层
多谢详细的回答

原因嘛,呵呵,中文问题,我把老婆的Powerbook抢过来用,用Mac真爽,呵呵,不过vim,不管是自带的还是我自己编译的vim7都不支持中文,很奇怪!LINUX下,我一直用cvs获取最新的vim版本自己编译,从来没出现过中文问题。Mac下怎么也不好使,不想花很长时间去摸索怎么让它支持,就换到emacs上,啥文都支持。
回复 支持 反对

使用道具 举报

发表于 2006-7-31 02:23:59 | 显示全部楼层
呵呵,建议看看我写的教程,顺便提点意见
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-31 12:59:17 | 显示全部楼层
关于删除匹配括号间文本已经有答案了,emacs有两个命令:kill-sexp和backward-kill-sexp,对应的键组合是:C-M-k和Esc C-del (或者Esc C-backspace),觉得有点不习惯,因为向前删除和向后删除键组合差别较大,为了保持vim的使用方式,写了一小段配置:
;;删除匹配括号间内容
(defun kill-match-paren (arg)
(interactive "p")
(cond ((looking-at "[([{]") (kill-sexp 1) (backward-char))
      ((looking-at "[])}]") (forward-char) (backward-kill-sexp 1))
       (t (self-insert-command (or arg 1)))))
(global-set-key (kbd "C-x %") 'kill-match-paren)
加到.emacs里,从此敲C-x %或者M-x kill-match-paren就可以完成vim里d %的功能了。

在一页内跳转还是不方便,敲的键有点多 有空再写一段脚本完成,应该是可以的,为了跳到页尾要计算当前页的总行数,这个不知道怎么做。

一句题外话,总说工欲善其事,必先利其器,或者磨刀不误砍柴工,不过我有个活要一周出活,现在适应配置emacs用了三天,看来活完不成了555...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-31 13:50:43 | 显示全部楼层
页面内跳转页搞定了,在.emacs中加入:
(global-set-key (kbd "C-c H")
        '(lambda () "myhome" (interactive) (move-to-window-line 0)))
(global-set-key (kbd "C-c L")
        '(lambda () "myend" (interactive) (move-to-window-line -1)))
以后就可以用C-c H和C-c L实现跳转到页头和页尾
回复 支持 反对

使用道具 举报

发表于 2006-8-2 00:09:28 | 显示全部楼层
(global-set-key (kbd "C-c L")
'(lambda () "myend" (interactive) (move-to-window-line -1)))

是不是没写全啊?括号都不匹配啊???   老兄要是有Elisp的教程共享一下啊……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-2 03:05:56 | 显示全部楼层
???不匹配么?拷贝到emacs或vi里面看看,我就是从我的配置文件里拷贝出来的。而且用肉眼看也是匹配的呀。

elisp教材?从gnu那下就是了,不过没时间看,基本就看个开头,然后捡需要的段落例子飞快地模仿写一个可以用就行,搞这些东东不是时间充足,就是精力过人;) 学生时期比较合适。
http://www.gnu.org/software/emacs/elisp-manual/
http://www.gnu.org/software/emacs/emacs-lisp-intro/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表