冷风
2002-01-24, 23:19
清华水木FreeBSD
【 以下文字转载自 FreeBSD 讨论区 】
【 原文由 pure 所发表 】
-*- outline -*-
$Id: 1763,v 1.5 2000/11/20 12:42:48 sympa 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 "
* -- 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 的方法。
【 以下文字转载自 FreeBSD 讨论区 】
【 原文由 pure 所发表 】
-*- outline -*-
$Id: 1763,v 1.5 2000/11/20 12:42:48 sympa 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 "
* -- 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 的方法。