📄 00000019.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: costa (老猫~continue), 信区: Linux <BR>标 题: Emacs tips from freebsd.org.cn (转载) <BR>发信站: BBS 水木清华站 (Sun Jun 11 22:00:50 2000) <BR> <BR>【 以下文字转载自 FreeBSD 讨论区 】 <BR>【 原文由 hhuu 所发表 】 <BR>emacs小技巧 <BR>本技巧集会持续更新, 您可以先抓回去, 使用 Emacs 的 outline-mode 达到较 <BR> <BR>好的浏览效果 <BR> <BR>* gdbsrc <BR>在 XEmacs 下, M-x gdbsrc 在除错上比 M-x gdb 更方便, 可以直接在 <BR>source buffer 按 n, s 等键 trace。 <BR> <BR>* Meta 键 <BR>Emacs 最令 PC 上的初学者痛恨的, 就是得利用无名指去「勾」 Esc 当 Meta 用 <BR> <BR>了, 其实这不是 Emacs 的错, 在 Emacs 刚出现的年代, 终端机上有那些键还 <BR> <BR>没一定的标准呢! <BR> <BR>有些键盘, 如 Sun 的机器, 会有独立的 Meta 键。 此外假如你有张 Win95 相 <BR> <BR>容键盘, 上面的 「Windows键」 可以当做 Meta 用。 ( 但非 sticky, 比如说 <BR> <BR>要打 M-x, 你得将 「Windows键」 跟 x 一起按下) <BR> <BR>GNU Emacs 20 和 XEmacs 都支援这功能。 <BR> <BR>不过在某些 Windows Manager 下, 比如说 fvwm, 这功能似乎会失效。 <BR> <BR>* filladapt-mode <BR><A HREF="http://www.automatrix.com/~skip/xemacs/filladapt.htm">http://www.automatrix.com/~skip/xemacs/filladapt.htm</A> <BR> <BR>强烈, 强烈推荐一定要试试看。 <BR> <BR>* outline-mode <BR>我以前在一年内用掉两本大型活页本, 叠起来约莫 10 公分。 现在我有个 500 <BR> <BR>多 K 的 outline 档, 折叠起来只有 400 多行, 我可以按几个键搜索、剪贴或 <BR> <BR>是插入... <BR> <BR>现在还有什麽遗憾呢? 大概是 X-Windows 没有自然注音吧... <BR> <BR>你最好了解 narrowing 後再使用 outline-mode, 否则可能会不小心删到不该删 <BR> <BR>的。 <BR> <BR>此外 hyperbole 的 koutline-mode 更为强大, 可自动编号, anchoring, <BR>hyperlink, 不过 XEmacs 20.4 无法执行, GNU Emacs or 其他版本的 XEmacs <BR> <BR>倒可试试。 <BR> <BR><A HREF="http://www.altrasoft.com/hyperbole.html">http://www.altrasoft.com/hyperbole.html</A> <BR> <BR>* tip tip tip <BR> <BR><A HREF="http://www.automatrix.com/~skip/xemacs/tip.html">http://www.automatrix.com/~skip/xemacs/tip.html</A> <BR><A HREF="http://www-numi.fnal.gov:8875/fnal_minos/computing/emacs_primer.html">http://www-numi.fnal.gov:8875/fnal_minos/computing/emacs_primer.html</A> <BR> <BR>* redo <BR>Emacs 下的 redo 是在 undo 之後, 「移动游标」, 接著再 undo, 有点儿不直 <BR> <BR>觉, 以前看过解释, 忘了。 <BR> <BR><A HREF="http://www.wonderworks.com/">http://www.wonderworks.com/</A> , 有个 redo package 可安装, 虽然我没试过。 <BR> <BR> <BR>* 寻找相关的 Elisp 程式 <BR> <BR>请到 DejaNews Power Search <BR><A HREF="http://www.dejanews.com/home_ps.shtml">http://www.dejanews.com/home_ps.shtml</A> <BR>Forum 中输入 gnu.emacs.sources <BR>并搜索你想要的程式。 <BR> <BR>比如说你可以查查 cxref 或 dict。 <BR> <BR>此外 <A HREF="http://www.xemacs.org/elisp.html">http://www.xemacs.org/elisp.html</A> <BR><A HREF="http://www.anc.ed.ac.uk/~stephen/emacs/ell.html">http://www.anc.ed.ac.uk/~stephen/emacs/ell.html</A> (200 多个 elisp 程式) <BR>也整理了一些相关的联结。 <BR> <BR>通常 unix 下常用软体, 从 debugger、cvs 到 IRC, 都有 Emacs 提供「一致 <BR> <BR>的介面」, Unix 下标准的 「UI」 通常有几种 <BR> <BR>0.输入选项, 执行, 读入标准输入, 输出到标准输出。 (non-interactive) <BR>1.terminal (文字模式 editors...) <BR>2.GNU getline (提供 Emacs 或 vi 按键相容, 如 bash, tcsh) <BR>3.X-Windows (通常很不统一, CDE , gnome , kde 等提供整合工作环境) <BR>4.Emacs (本身就是整合的工作环境) <BR> <BR>一个 tty 下的程式, 即使你找不到它的 X-Windows frontend, 你依然可能找 <BR> <BR>到它的 Emacs frontend,Enjoy it! :) <BR> <BR>* alt key <BR>假如为了必免按键定义冲突, 你可以将快速键定义在 alt- <BR>可惜 tty 下不能这样定义。 (这是我喜欢 X-Windows 的一个主要原因) <BR>以下是我偏好的设定 <BR> <BR>(define-key global-map '(alt ?0) 'delete-window) <BR>(define-key global-map '(alt ?1) 'delete-other-windows) <BR>(define-key global-map '(alt ?2) 'split-window-vertically) <BR>(define-key global-map '(alt ?3) 'split-window-horizontally) <BR>(define-key global-map '(alt ?o) 'other-window) <BR>(define-key global-map '(alt ?k) 'kill-buffer) <BR>(define-key global-map '(alt ?s) 'save-buffer) <BR>(define-key global-map '(alt ?d) 'switch-to-buffer) <BR> <BR>此外建议你不要 override Emacs 原本的按键设定。 因为很多按键会在别的 <BR>mode 被重新定义, 而他们会被定义到有关连意义的指令。 (如 C-n 会定义到「 <BR> <BR>往下..」) <BR> <BR>* open new frame <BR> <BR>C-x 5 2 是非常方便的功能。 关闭请用 C-x 0。 比如当你在分割视窗 (C-x <BR>2 或 3), 想要独立放大单一 window 时, 可以在那 window 按 C-x 5 2。 此外 <BR> <BR>别忘了 C-z 可以暂时缩小目前的 frame。 每个 frame 有自己的 minibuffer。 <BR> <BR> <BR>善用 frame 在某些方面会比 screen+window (another "windows" under <BR>ttys) 好用。 <BR> <BR>* regular expression search <BR>C-u C-s 可以直接使用 regular expression 来 isearch。 这是「非常」好用的 <BR> <BR>功能。 <BR> <BR>* narrowing <BR>narrowing 是一个蛮好用的功能。 <BR>因为 replace-string 或 replace-regexp 会代换至 buffer 尾端, 假如你只想 <BR> <BR>要代换一部分的字串, 请先将那区域 narrow 起来。 <BR>C-x n n (narrow) <BR>C-x n w (还原) <BR>在 .emacs 中加上 <BR>(put 'narrow-to-region 'disabled nil) ;enable without confirmation <BR>可以必免每次它都会询问你 <BR> <BR>比如说你可以先将一个 region narrow 起来 <BR>接著 M-x replace-regexp 『^』『 』 <BR>就可将此段落缩排 4 个空白。 <BR> <BR>* evaluate emacs expression under buffer <BR>Emacs 是一个 Lisp Environment, 这代表大部份的程式(用 lisp 写的那几十万 <BR> <BR>行) 都是可以在执行期间动态改变的。 由於 Lisp 的性质, 你不太可能因为写错 <BR> <BR>程式而造成 Emacs core dump, 相对於 C, 你只要在几十万行程式中弄错一个 <BR> <BR>pointer,整个程式会立刻 crash 掉。 <BR> <BR>即使你不需要利用 Lisp customize, 了解 lisp 对於编辑工作也是很方便的。 <BR> <BR> <BR>在大部份编辑 buffer 中, 在一个 lisp expression 後按 C-c C-e 即可 <BR>evaluate 这个 expression。 <BR> <BR>比如在你可先在你的日记 buffer 上直接打入以下程式: <BR> <BR>(setq index 1) ※ <BR>(setq chinese-week '("日" "一" "二" "三" "四" "五" "六")) ※ <BR>(while (< index 20) <BR>(insert "\n* -- 1/" (number-to-string index) <BR>"(" (nth (mod (+ 4 index) 7) chinese-week) ") --") <BR>(setq index (1+ index))) ※ <BR> <BR>并在标示 ※ 的地方都按 C-c C-e, 则 Emacs 就会在 buffer 中直接插入 <BR> <BR>* -- 1/1(五) -- <BR> <BR>* -- 1/2(六) -- <BR>* -- 1/3(日) -- <BR>... <BR> <BR>假如你不喜欢 lisp, 当然也写个 perl script 也不错, 在不过得小心的是 <BR>perl 处理某些中文字元得作特殊的 quoting。 <BR> <BR>同样的技巧蛮适合处理 regular expression 的替换。 请善用 replace-regexp <BR> <BR>这个函式。 在目前缺乏中文的 sed 或 perl 的情况下, 这是我所知唯一能处理 <BR> <BR>中文 regular expression 的方法。 <BR> <BR> <BR> <BR>-- <BR> Laker, Laker, Laker, Laker............................. <BR> To the next step. <BR> <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.6] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -