分页: 2 / 3

Re: 学习Emacs

发表于 : 2008-11-30 11:19
qinglangee
emacs正则表达式
参考:
Emacs 正则表达式简介(From 水木清华)
正则表达式

“. (Period)”
“*”
“+”
“?”
“*?, +?, ??”
是前面几个个操作符的非贪心(non-greedy)的变体
“\{N\}”
“\{N,M\}”
“[ ... ]”
注意,通常在字符集中的特殊字符不再特殊。而在字符集中的“]”,“-”和 “^”却不这样。

如果想在集中包括“]”,必须把它作为字符集中的第一个字符。例如,“[]a]” 匹配“]”或“a”。想包括“-”,它要是字符集中的第一个或最后一个字符。 或者放在一个范围的后面。如“[]-]”匹配“]”和“-”。

如果想在集包括字符“^”,它可以在除第一个位置以外的任何地方。(在开始 位置,它会把这个字符集取补——看下面。)

“[^ ... ]”
“[^”表示“补集合”,匹配的字符是除掉指定的字符外其他所有的字符

当“^”在字符集中第一个时,被看作是特殊字符。而跟在“^”后面的字符被看 作是第一个字符(就是说,此处的“-”和“]”将不是特殊的)。

一个补集合可以匹配换行符,除非换行符被指定为补集合中的一个字符。这不同 于某些象“grep”的程序对正则表达式的处理。

“^”
“$”
“\”
有两个作用:引用特殊字符(包括“\”);产生附加的特殊结构。

因为“\”引用特殊字符,“\$”是一个仅匹配“$”的表达式,“\[”是一个仅 匹配“[”的表达式,等等。

关于反斜线
注意:为兼容性考虑,特殊字符,如果在其没有意义的上下文中,将被当作普通字符。比如:“*foo”中把“*”当作普通字符,因为在它前面没有可以作用的前导表达式。很少有人会根据这条规则去实践;无论如何,在任何地方都加上引用会更好些。

对于大多数情况,“\”后接任何字符仅仅匹配那个字符。然而,有几个例外:以“\”开始的两字符序列会有特殊的意思。其中的第二个字符往往是普通字符。下面是“\”的结构表。

“\|”
“\( ... \)”
分组结构,有三个功能:

1. 围住“\|”的选择项,以实现别的操作。例如“\(foo\|bar\)x”匹配 “foox”或“barx”。
2. 围住复杂的表达式以实现后缀操作符(如“*”“+”和“?”)的操作。例如 “ba\(na\)*”匹配如“bananana”等,有任意个(零或更多)的“na”串。
3. 记录一个已匹配的子串用作后面的参考引用。

最后一个应用并不是括号的分组功能思想的结果;这个分开的特点是给同样的 “\( ... \)”结构赋予的第二种含义。在实际应用中,这两种含义通常不会发生 冲突。当发生冲突的时候,可以使用“谨慎的”分组("shy" group)。

“\(?: ... \)”

“谨慎的”分组("shy" group),这个分组不记录匹配的子串;你不能用“\D”来 引用。这在机械的结合正则表达式的时候有用,这样,你可以为语法目的加入分 组,而不用干涉使用者写的分组的个数。

“\D”
匹配和“\( ... \)”结构第 D 次出现时所匹配的同样的文本。

在“\( ... \)”结构结束之后,匹配程序保存被这个结构匹配的文本(的开始和 结束);之后的正则表达式中,你可以使用“\”跟着一个数字 D 来表示“匹配 和‘\( ... \)’结构第 D 次出现时所匹配的同样的文本。”

正则表达式中前九个出现的“\( ... \)”结构,按正则表达式中左括号出现的次 序从 1 到 9 赋值。因此可以用“\1”到“\9”来引用相应的“\( ... \)”结构。

例如,“\(.*\)\1”匹配任何有完全相同的两部分而无换行符的串。“\(.*\)” 匹配前一半,可以是任意的串,“\1”匹配后面的,但必须和前面的完全相同。

如果一个特定的“\( ... \)”结构匹配了多次(比如后面有一个“*”,这很显 然),那么仅记录最后一次的匹配。

“\`”
“\'”
“\=”
“\b”
匹配空串,但仅在一个词的开始或者结尾的。例如,“\bfoo\b”匹配任何作为单 独的词出现的“foo”。“\bballs?\b”匹配作为单独的词出现的“ball”或 “balls”。
“\B”
匹配空串,但不在词的开始或结尾处。

“\<”
匹配空串,但仅在词的开始处。仅当一个构成词的字符在缓冲区开始处时“\<” 匹配缓冲区开始处的空串。

“\>”
匹配空串,但仅在词的结尾处。仅当缓冲区尾部有构成词的字符时“\>”匹配缓 冲区尾部的空串。

“\w”
“\W”

“\sC”
“\SC”
“\cC”
“\CC”

Author: Wang Chunyu <dddkk@sina.com> Create: "2002-04-20"
Updated: 2004-05-11 Index

Re: 学习Emacs

发表于 : 2008-11-30 12:32
qinglangee
emacs复制行,单词,段落
转:
让 Emacs 为您工作


这段代码定义了三个 Emacs Lisp 函数。这三个函数提供了可以在 Emacs 编辑器中执行的三个操作。分别用来拷贝当前光标所在的 行 ,当前光标所在的 单词 以及当前光标所在的 段落 。

代码: 全选

(defun copy-line (&optional arg)
 "Save current line into Kill-Ring without mark the line"
 (interactive "P")
 (let ((beg (line-beginning-position)) 
	(end (line-end-position arg)))
 (copy-region-as-kill beg end))
)


(defun copy-word (&optional arg)
 "Copy words at point"
 (interactive "P")
 (let ((beg (progn (if (looking-back "[a-zA-Z0-9]" 1) (backward-word 1)) (point))) 
	(end (progn (forward-word arg) (point))))
 (copy-region-as-kill beg end))
)


(defun copy-paragraph (&optional arg)
 "Copy paragraphes at point"
 (interactive "P")
 (let ((beg (progn (backward-paragraph 1) (point))) 
	(end (progn (forward-paragraph arg) (point))))
 (copy-region-as-kill beg end))
))


Re: 学习Emacs

发表于 : 2008-11-30 13:33
qinglangee
Tab Bar

TabBarMode

下载tabbae.el
.emacs文件中加入

代码: 全选

(require 'tabbar)
(tabbar-mode t)

Re: 学习Emacs

发表于 : 2008-12-11 16:46
qinglangee
tabbar.el grey60
";+\\+\\+"
Esc C-s ;() Enter ;++

Re: 学习Emacs

发表于 : 2008-12-18 12:28
ibear
试试
<C-S-backspace> runs the command kill-whole-line
qinglangee 写了:删除一行
emacs的删除一行是C-a C-k,而且只删内容,还留了个空行,不太方便,自己写了个删除一行的函数,绑定到C-d上,C-d一般就用Delete键,全是Windows风格 :em01

代码: 全选

;;;删除一行
(defun zl-delete-line nil
  "delete the whole line"
  (interactive)
  (beginning-of-line);光标移动到行首
  (push-mark);做个标记
  (beginning-of-line 2);移动到下一行行首
  (kill-region (point) (mark)));光标和标记之间的删掉
(global-set-key (kbd "C-d") 'zl-delete-line);删除一行
(global-set-key [delete] 'delete-char);delete 删除一个字符

Re: 学习Emacs

发表于 : 2008-12-22 10:10
sharpshootor
这东西还是看文档最好了,只是都 是英语的,看着累

Re: 学习Emacs

发表于 : 2009-01-30 9:55
qiegwl
谢谢路飞的好贴

Re: 学习Emacs

发表于 : 2009-05-07 12:16
Ai.Freedom
ibear 写了:试试
<C-S-backspace> runs the command kill-whole-line
qinglangee 写了:删除一行
emacs的删除一行是C-a C-k,而且只删内容,还留了个空行,不太方便,自己写了个删除一行的函数,绑定到C-d上,C-d一般就用Delete键,全是Windows风格 :em01

代码: 全选

;;;删除一行
(defun zl-delete-line nil
  "delete the whole line"
  (interactive)
  (beginning-of-line);光标移动到行首
  (push-mark);做个标记
  (beginning-of-line 2);移动到下一行行首
  (kill-region (point) (mark)));光标和标记之间的删掉
(global-set-key (kbd "C-d") 'zl-delete-line);删除一行
(global-set-key [delete] 'delete-char);delete 删除一个字符
嗯, emacs 里有删除整行的函数, 但高手说这样不便于对文档精细操作

Re: 学习Emacs

发表于 : 2009-06-24 1:18
xcz1984
好帖子要留名的。

Re: 学习Emacs

发表于 : 2009-07-19 17:58
qinglangee
在Windows下使用Emacs

1. 到 http://nqmacs.sourceforge.net 下载emacs的Windows编译版本,包括两个文件 emacs-21.3.50.1-20050130c-w32.zip 和 emacs-21.3.50.1-20050130-lisp.zip

2. 将 emacs-21.3.50.1-20050130c-w32.zip 解压缩到想要放置的目录,这里为 D:\Program Reserved\emacs-21.3.50.1-20050130c-w32

3. 将 emacs-21.3.50.1-20050130-lisp.zip 也解压缩在这个目录,然后设置环境变量

HOME=D:\Program Reserved\emacs-21.3.50.1-20050130c-w32

这样在以后 .emacs.d 目录和 .emacs 文件就都在 $HOME 目录下面了,但是这个方法并不好,因为设置 $HOME 会影响 Cygwin 和 MSYS 等很多东西,所以最好的方法是在注册表中设置 HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\HOME=%emacs_dir%

4. 需要自己添加的el文件放在 D:\Program Reserved\emacs-21.3.50.1-20050130c-w32\site-lisp 里面即可

Re: 学习Emacs

发表于 : 2009-08-01 17:34
rocbaby
留印,学习

Re: 学习Emacs

发表于 : 2009-09-03 20:50
magicsilence
2L的 提前准备工作,最后的命令应该有笔误把

sudo apt-get install libtiff4-div
-》 div - dev?

Re: 学习Emacs

发表于 : 2009-09-29 2:37
aiglem
目前发现俩Bug:
2楼
sudo apt-get install libtiff4-div应为
sudo apt-get install libtiff4-dev
sudo apt-get ssh cvs libc6-dev libncurses5-dev应为
sudo apt-get install ssh cvs libc6-dev libncurses5-dev
快3点了,先睡了,早晨再编译 :em09

Re: 学习Emacs

发表于 : 2009-10-09 13:49
lou
好帖,顶 :em11

Re: 学习Emacs

发表于 : 2009-10-18 19:09
dignam
留标签.