荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (清风浮云 人生), 信区: Linux
标  题: Emacs Tips(fwd)
发信站: BBS 荔园晨风站 (Wed Oct  4 12:30:20 2000), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@smth.org 所发表 】
发信人: fkbch (心魔@笨愚斋), 信区: Linux
标  题: Emacs Tips(fwd)
发信站: BBS 水木清华站 (Thu Apr 22 19:23:54 1999)

-*- outline -*-


  $Id: xemacs-tricks,v 1.12 1999/04/08 13:24:58 clem Exp $


  本技巧集会持续更新, 您可以先抓回去, 使用 Emacs 的 outline-mode 达到较

  好的浏览效果


  * gdbsrc

  在 XEmacs 下, M-x gdbsrc 在除错上比 M-x gdb 更方便, 可以直接在

  source buffer 按 n, s 等键 trace。


  * Meta 键

  Emacs 最令 PC 上的初学者痛恨的, 就是得利用无名指去「勾」 Esc 当 Meta 用

  了, 其实这不是 Emacs 的错, 在 Emacs 刚出现的年代, 终端机上有那些键还

  没一定的标准呢!


  有些键盘, 如 Sun 的机器, 会有独立的 Meta 键。 此外假如你有张 Win95 相

  容键盘, 上面的 「Windows键」 可以当做 Meta 用。 ( 但非 sticky, 比如说

  要打 M-x, 你得将 「Windows键」 跟 x 一起按下)


  GNU Emacs 20 和 XEmacs 都支援这功能。


  不过在某些 Windows Manager 下, 比如说 fvwm, 这功能似乎会失效。


  * filladapt-mode

  http://www.automatrix.com/~skip/xemacs/filladapt.htm


  强烈, 强烈推荐一定要试试看。


  * outline-mode

  我以前在一年内用掉两本大型活页本, 叠起来约莫 10 公分。 现在我有个 500

  多 K 的 outline 档, 折叠起来只有 400 多行, 我可以按几个键搜索、剪贴或

  是插入...


  现在还有什麽遗憾呢? 大概是 X-Windows 没有自然注音吧...


  你最好了解 narrowing 後再使用 outline-mode, 否则可能会不小心删到不该删

  的。


  此外 hyperbole 的 koutline-mode 更为强大, 可自动编号, anchoring,

  hyperlink, 不过 XEmacs 20.4 无法执行, GNU Emacs or 其他版本的 XEmacs

  倒可试试。


  http://www.altrasoft.com/hyperbole.html


  * tip tip tip


  http://www.automatrix.com/~skip/xemacs/tip.html

  http://www-numi.fnal.gov:8875/fnal_minos/computing/emacs_primer.html


  * redo

  Emacs 下的 redo 是在 undo 之後, 「移动游标」, 接着再 undo, 有点儿不直

  觉, 以前看过解释, 忘了。


  http://www.wonderworks.com/ , 有个 redo package 可安装, 虽然我没试过。


  * 寻找相关的 Elisp 程式


    请到 DejaNews Power Search

    http://www.dejanews.com/home_ps.shtml

    Forum 中输入 gnu.emacs.sources

    并搜索你想要的程式。


    比如说你可以查查 cxref 或 dict。


    此外 http://www.xemacs.org/elisp.html

    http://www.anc.ed.ac.uk/~stephen/emacs/ell.html (200 多个 elisp 程式)

    也整理了一些相关的联结。


    通常 unix 下常用软体, 从 debugger、cvs 到 IRC, 都有 Emacs 提供「一致

  的介面」, Unix 下标准的 「UI」 通常有几种


    0.输入选项, 执行, 读入标准输入, 输出到标准输出。 (non-interactive)

    1.terminal (文字模式 editors...)

    2.GNU getline (提供 Emacs 或 vi 按键相容, 如 bash, tcsh)

    3.X-Windows (通常很不统一, CDE , gnome , kde 等提供整合工作环境)

    4.Emacs (本身就是整合的工作环境)


    一个 tty 下的程式, 即使你找不到它的 X-Windows frontend, 你依然可能找

  到它的 Emacs frontend,Enjoy it! :)


  * alt key

  假如为了必免按键定义冲突, 你可以将快速键定义在 alt-

  可惜 tty 下不能这样定义。 (这是我喜欢 X-Windows 的一个主要原因)

  以下是我偏好的设定


  (define-key global-map '(alt ?0) 'delete-window)

  (define-key global-map '(alt ?1) 'delete-other-windows)

  (define-key global-map '(alt ?2) 'split-window-vertically)

  (define-key global-map '(alt ?3) 'split-window-horizontally)

  (define-key global-map '(alt ?o) 'other-window)

  (define-key global-map '(alt ?k) 'kill-buffer)

  (define-key global-map '(alt ?s) 'save-buffer)

  (define-key global-map '(alt ?d) 'switch-to-buffer)


  此外建议你不要 override Emacs 原本的按键设定。 因为很多按键会在别的

  mode 被重新定义, 而他们会被定义到有关连意义的指令。 (如 C-n 会定义到「

  往下..」)


  * open new frame


    C-x 5 2 是非常方便的功能。 关闭请用 C-x 0。 比如当你在分割视窗 (C-x

  2 或 3), 想要独立放大单一 window 时, 可以在那 window 按 C-x 5 2。 此外

  别忘了 C-z 可以暂时缩小目前的 frame。 每个 frame 有自己的 minibuffer。


    善用 frame 在某些方面会比 screen+window (another "windows" under

  ttys) 好用。


  * regular expression search

  C-u C-s 可以直接使用 regular expression 来 isearch。 这是「非常」好用的

  功能。


  * narrowing

  narrowing 是一个蛮好用的功能。

  因为 replace-string 或 replace-regexp 会代换至 buffer 尾端, 假如你只想

  要代换一部分的字串, 请先将那区域 narrow 起来。

  C-x n n (narrow)

  C-x n w (还原)

  在 .emacs 中加上

  (put 'narrow-to-region 'disabled nil) ;enable without confirmation

  可以必免每次它都会询问你


  比如说你可以先将一个 region narrow 起来

  接着 M-x replace-regexp 『^』『    』

  就可将此段落缩排 4 个空白。


  * evaluate emacs expression under buffer

  Emacs 是一个 Lisp Environment, 这代表大部份的程式(用 lisp 写的那几十万

  行) 都是可以在执行期间动态改变的。 由於 Lisp 的性质, 你不太可能因为写错

  程式而造成 Emacs core dump, 相对於 C, 你只要在几十万行程式中弄错一个

  pointer,整个程式会立刻 crash 掉。


  即使你不需要利用 Lisp customize, 了解 lisp 对於编辑工作也是很方便的。


  在大部份编辑 buffer 中, 在一个 lisp expression 後按 C-c C-e 即可

  evaluate 这个 expression。


  比如在你可先在你的日记 buffer 上直接打入以下程式:


  (setq index 1) ※

  (setq chinese-week '("日" "一" "二" "三" "四" "五" "六")) ※

  (while (< index 20)

          (insert "\n* -- 1/" (number-to-string index)

          "(" (nth (mod (+ 4 index) 7) chinese-week) ") --")

          (setq index (1+ index))) ※


  并在标示 ※ 的地方都按 C-c C-e, 则 Emacs 就会在 buffer 中直接插入


   * -- 1/1(五) --

   * -- 1/2(六) --

   * -- 1/3(日) --

  ...


  假如你不喜欢 lisp, 当然也写个 perl script 也不错, 在不过得小心的是

  perl 处理某些中文字元得作特殊的 quoting。


  同样的技巧蛮适合处理 regular expression 的替换。 请善用 replace-regexp

  这个函式。 在目前缺乏中文的 sed 或 perl 的情况下, 这是我所知唯一能处理

  中文 regular expression 的方法。


--
看着她笑,他忽然觉得她好寂寞好寂寞。
她静静的看了他半天,才柔柔慢慢的:「 你好像已经找到了。」

※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.112.103.235]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店