学习Emacs
- qinglangee
- 帖子: 137
- 注册时间: 2008-10-25 5:04
Re: 学习Emacs
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
参考:
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
- qinglangee
- 帖子: 137
- 注册时间: 2008-10-25 5:04
Re: 学习Emacs
emacs复制行,单词,段落
转:
让 Emacs 为您工作
这段代码定义了三个 Emacs Lisp 函数。这三个函数提供了可以在 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))
))
- qinglangee
- 帖子: 137
- 注册时间: 2008-10-25 5:04
- qinglangee
- 帖子: 137
- 注册时间: 2008-10-25 5:04
Re: 学习Emacs
tabbar.el grey60
";+\\+\\+"
Esc C-s ;() Enter ;++
";+\\+\\+"
Esc C-s ;() Enter ;++
- ibear
- 帖子: 787
- 注册时间: 2006-10-19 8:43
- 来自: 长江口
Re: 学习Emacs
试试
<C-S-backspace> runs the command kill-whole-line
<C-S-backspace> runs the command kill-whole-line
qinglangee 写了:删除一行
emacs的删除一行是C-a C-k,而且只删内容,还留了个空行,不太方便,自己写了个删除一行的函数,绑定到C-d上,C-d一般就用Delete键,全是Windows风格代码: 全选
;;;删除一行 (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 删除一个字符
-
- 帖子: 34
- 注册时间: 2007-12-23 12:22
Re: 学习Emacs
这东西还是看文档最好了,只是都 是英语的,看着累
- qiegwl
- 帖子: 13
- 注册时间: 2009-01-28 23:15
Re: 学习Emacs
谢谢路飞的好贴
-
- 帖子: 30
- 注册时间: 2008-01-14 22:11
- 来自: Wuhan, China
- 联系:
Re: 学习Emacs
嗯, emacs 里有删除整行的函数, 但高手说这样不便于对文档精细操作ibear 写了:试试
<C-S-backspace> runs the command kill-whole-line
qinglangee 写了:删除一行
emacs的删除一行是C-a C-k,而且只删内容,还留了个空行,不太方便,自己写了个删除一行的函数,绑定到C-d上,C-d一般就用Delete键,全是Windows风格代码: 全选
;;;删除一行 (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 删除一个字符
-
- 帖子: 38
- 注册时间: 2007-11-08 16:29
Re: 学习Emacs
好帖子要留名的。
- qinglangee
- 帖子: 137
- 注册时间: 2008-10-25 5:04
Re: 学习Emacs
在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 里面即可
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 里面即可
-
- 帖子: 33
- 注册时间: 2007-12-10 1:28
Re: 学习Emacs
留印,学习
- magicsilence
- 帖子: 14
- 注册时间: 2008-08-07 1:31
Re: 学习Emacs
2L的 提前准备工作,最后的命令应该有笔误把
sudo apt-get install libtiff4-div
-》 div - dev?
sudo apt-get install libtiff4-div
-》 div - dev?
-
- 帖子: 1
- 注册时间: 2009-04-07 10:28
Re: 学习Emacs
目前发现俩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点了,先睡了,早晨再编译
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点了,先睡了,早晨再编译
- lou
- 帖子: 33
- 注册时间: 2009-02-17 21:36
Re: 学习Emacs
好帖,顶
-
- 帖子: 11
- 注册时间: 2009-02-25 23:17
Re: 学习Emacs
留标签.