LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 倩儿

emacs的方便(大家补充下去,好吗)

[复制链接]
发表于 2004-3-20 12:01:13 | 显示全部楼层
Emacs有个 mule不知道XEmacs是否有,呵呵,我也用的是GNU啊
发表于 2004-3-20 12:59:46 | 显示全部楼层
最初由 倩儿 发表
很好的资源列表,谢谢xemacs大哥。



有好资源大家可以一起贴出来啊:cool:

构建XEmacs & GNU EMACS 自己的社区吗

大家跟贴啊:confused:
发表于 2004-3-20 19:17:33 | 显示全部楼层
大家总结出个教程吧

叫俺门新手

也领会领会
 楼主| 发表于 2004-3-20 19:41:17 | 显示全部楼层
emacs的查找与编辑操作

概念一.删除环
emacs会依次记录每次你复制或删除等操作的字符串,把它们保存在删除环里。
这些操作包括

  1. C-k 删除光标位置到行尾字符串的命令
  2. C-w 删除已标记字符串的命令
  3. Esc w 复制已标记字符串的命令
复制代码

可见,它还未包括用Esc d和Esc DEL及其变体删除的单词,句子和段落,但对此我们可以用C-x u这条撤消命令来恢复。

概念二.命令记录
emacs会记录你的执行的每条命令保存为历史清单。

  1. C-x Esc Esc 重复上一次命令
复制代码

  1. Esc p 历史清单中再上一次命令
  2. Esc n 历史清单中再下一次命令
复制代码



emacs有很强大的查找与替换功能,主要表现在其强大的正则表达式引擎(当然,其他编辑器如vi也有对正则表达式的支持,但结合emacs的快捷键捆绑特色以及递增操作特色,我认为emacs的正则引擎比较灵活),满足了各种层面的用户需求。

这里不得不提的是emacs的递增查找特色(emacs的默认查找与替换模式),它的搜索最直接快捷,emacs会随着你的键入实时进行查找工作,结合正则表达式查找,就成了递增正则式查找。

1.向前普通查找

  1. C-s [RETURN]
复制代码

[RETURN]为可选项,表示进行非递增操作,emacs会等待查找字符串键入完毕按下回车键后进行查找与替换操作(如果你觉得实时查找很烦人,可以这样做)。
连续按下C-s,emacs会向前继续查找下一个匹配处;直到你认为该位置就是你所要的时候,按下回车键退出并确认这次查找;如果想撤消这次操作,可以按下

  1. C-g
复制代码

这样emacs会回到你原来的位置,就像从未进行过查找。注意,查找可以嵌套,所以可能要多次C-g才能撤消并退出。
提示:
可以选取编辑缓冲区的字符串作为查找字符串。

  1. C-s C-w  把光标位置处到单词末尾的字符串用作查找字符串
复制代码

  1. C-s C-y  把光标位置处到行尾的字符串用作查找字符串
复制代码

  1. C-s Esc y 把删除环最后一个字符串片断用作查找字符串
复制代码

提示:如何能使用删除环任意一个字符串片断作为查找字符串呢?我这里提供一种折衷的办法。

  1. 1. C-s Esc y  正常操作
  2. 2. C-g 撤消操作
  3. 3. C-x Esc Esc 重复操作
  4. 如果那次查找操作是在很早的时候做的,那么就处于历史命令环的早期记录,按Esc p向上找,而Esc n向下找
  5. 4. 在编辑辅助缓冲区里,用C-y以及Esc p在相应地方粘贴你需要的字符串作为查找字符串
复制代码

如果你想重复上一次的查找操作,可以用

  1. C-s C-s
复制代码

当然,最好还是如上面的提示那样用历史清单命令来执行任意某个历史查找。

补充:
如果你想向后查找,那就把C-s换成C-r,上面的操作类似有效。

2.单词查找
emacs的默认查找为自动模式,如果你输入的查找字符串中包含大写,emacs会觉得,既然你费力气键入大写字母,那你肯定想emacs大小写区别,否则默认情况下,不区分大小写。(emacs的确很伟大
一般情况下的查找属于模糊模式,也就是它受换行符,空格以及标点符号的影响,这样出来的查找结果会出现很多冗余。
比如说有一句话为"Are they? she loves him.",如果你想找they she,那么用这种方法就会忽略它们中间的?号以及空格,得出你想要的结果;
又比如说,你想找一个单词"mail",但不想找出包含mail的字符串如smtpmail等,可以用这种方法精确查找单词。

  1. C-s RETURN C-w
复制代码

这对于查找对象为论文特别有效。

3.查询-替换
很多时候,查找是为了替换。

  1. Esc %   开始查找与替换
复制代码

提示
输入查找字符串按回车键后,emacs找出第一个匹配点(如果有的话),按下?emacs会创建一个Help缓冲区列出可用的操作。

  1. SPACE 或 y  替换并跳到下一个匹配点
  2. DEL 或 n    忽略并跳到下一个匹配点
  3. .           替换并退出
  4. ,           替换并显示替换情况(按y跳到下一个匹配点)
  5. !           非交互替换所有匹配点
  6. ^           返回上一个匹配点
  7. RETURN或q   退出
复制代码

提示
emacs还有一个很人性化的功能──递归操作。当你想基于查找对每个所得位置进行不同文本修改而非替换时的时候,这样很自然地,你希望emacs暂时挂起这次查找操作,把控制权交给你。
比如说,你想查找make,在"make it"这个匹配点上,你发现it应改为it's,但你又不想退出查找替换,这时进入递归状态就很有用了。

  1. C-r       进入递归状态
  2. Esc C-c       退出递归状态
复制代码

注意,递归状态可以嵌套,这时候要多次C-w才能回到起始点上。
如果想直接退出而无论多少次嵌套,则用以下命令:

  1. C-]
复制代码


4.正则表达式查找与替换
emacs的正则表达式博大精深,我以后会专门用新帖来描述。这里只提供方法。
进入正则表达式(非递增)查找

  1. Esc C-s [RETURN]
复制代码

默认为递增查找,按下RETURN进行非递增查找。

  1. Esc C-s  跳到下一个匹配点
  2. Esc C-r  跳到上一个匹配点
复制代码

正则表达式查找并替换这个操作没有专门的快捷键,可用下列命令

  1. Esc x query-replace-regexp
  2. Esc x replace-regexp        无条件地进行查找并替换所有匹配点(慎用!)
复制代码
 楼主| 发表于 2004-3-20 19:43:17 | 显示全部楼层
最初由 game0ver 发表
大家总结出个教程吧

叫俺门新手

也领会领会

这个帖子我写了几个主题方面的教程,希望大哥们多多指教,它们只是初稿,以后我会结合例子截图来进行细化优化。
发表于 2004-3-20 22:04:37 | 显示全部楼层
.emacs
;;中文支持
(set-buffer-file-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
;;文件和终端的编码都是 utf-8,另外还有针对键盘和选择区的编码,最后是
;;universal
;;在GB* 的系统中,相应设置
;;(set-language-environment 'Chinese-GB)
 楼主| 发表于 2004-3-20 22:24:20 | 显示全部楼层
最初由 bbbush 发表
.emacs
;;中文支持
(set-buffer-file-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
;;文件和终端的编码都是 utf-8,另外还有针对键盘和选择区的编码,最后是
;;universal
;;在GB* 的系统中,相应设置
;;(set-language-environment 'Chinese-GB)

很好,希望各位大哥多交流一下elisp语言的使用经验。
发表于 2004-3-20 23:05:51 | 显示全部楼层
不知道有没有兄弟姐妹有兴趣一起翻译emacs的一个很好的教程,现在加我就3个人,还没开始,主要是人手不够,而且翻译量太大,大家一起来应该会比较快! 具体见这里,先谢了!

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=92794
 楼主| 发表于 2004-3-20 23:07:57 | 显示全部楼层
最初由 aries1998 发表
不知道有没有兄弟姐妹有兴趣一起翻译emacs的一个很好的教程,现在加我就3个人,还没开始,主要是人手不够,而且翻译量太大,大家一起来应该会比较快! 具体见这里,先谢了!

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=92794

倩儿愿意参与。
发表于 2004-3-20 23:14:44 | 显示全部楼层
先看看教程的具体内容吧,如果没什么问题,我星期一就通知另外2位兄弟开工。  mm也帮着拉点兄弟过来,这里mm的人气比较旺,比咱们说话有分量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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