- 浏览: 543551 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
原文地址:http://blog.csdn.net/emacx/article/details/6064123
以前没有用过这个东西,昨天研究了一下,很不错。把这个东西的使用方法简单的记录在下面! etags是一个用来创建tag table文件的程序,创建的数据格式emacs能够理解(还有一个程序ctags, 创建的tag table文件是给vi用的,和etags命令基本差不错)。 etags能处理 C, C++, Java, Fortran,python,php,perl等很多种语言 etags命令处理在命令行指定的文件,然后默认在当前目录生成表文件(可以通过-o参数修改) etags命令不能支持递归的查找文件,所以使用find命令配合 find . -name "*.[chCHp]*" -print | etags - 这样就可以在当前目录生成一个TAGS文件,剩下的就是在emacs当中使用了! 在emacs中大致记住三个命令 1.ESC x visit-tags-table RETURN --打开Tags tabs文件 2.ESC . 假定当前你把光标放在某个函数或其他语法对象上,这个命令在当前窗口打开当前查找的对象声明,定义所在 3.C-x 4. 这个在一个新窗口中打开--个人认为在阅读代码时这个命令或许更加适用。 4. C-x 1 返回 Emacs中etags的使用 - [技术相关]2006-08-01 etags is basically a multifile search facility that knows about C and Perl function definitions as well as searching in general. With it, you can find a function anywhere in an entire directory without having to remember in which file the function is defined, and you can do searches and query-replaces that span multiple files. etags uses tag tables, which contain lists of function names for each file in a directory along with information on where the functions' definitions are located within the files. Many of the commands associated with etags involve regular expressions (see Chapter 11) in search strings. 使用etags 1.创建tag表。 在当前的工作目录中调用etags程序。它的参数是正则表达式。 如:etags *.[ch]。从所有以.c或.h结尾的文件中,构建一个tag表 在shell mode或M-!命令下,执行etags。输出结果是一个TAGS文件。 如果要更新TAGS文件,则重新调用一下etags命令即可。 2.创建好tag表后,告知emacs。 M-x visit-tags-table 3.相关命令: M-.:在tag表查找函数名中包含有某个字符串的函数。a nice feature:它把光标当前所在的word当作默认查找字符串。 C-x 4:作用与M-.相似,不过是使用另一个缓冲区 M-,:查看下一个函数。如果存在多个符合查询条件的函数,M-.只显示结果列表中按字母序排的第一个函数,M-,用来查看下一个函数 M-x tags-search:输入正则表达式,查找所有列在tag表中的文件。凡是符合reglar expression的内容都显示出来。这点有点类似grep。结果中可通过M-,查看下一个。 M-x tags-query-replace:查询替换。作用在tag中列出的所有文件上。 C-u M-x tags-query-replace:只有完全匹配时,才替换(replaces only matches that are whole words) 如果用Esc或C-g推出了tags-query-replace,可通过M-,再恢复 M-x tags-apropos:如果给定正则表达式作参数,它将在*Tags List*中列出匹配该正则表达式的所有tags M-x list-tags:list所有给定C文件中的在tag表中所有的tag。可通过M-.查看每个函数的定义 1. Etags 基础 在emacs里可以用etags命令生成emacs专用的tags文件,有了此文件之后便可以使用一些emacs tags的命令,比如对于编辑C/C++程序的人员可以方便的定位一个函数的定义,或者对函数名进行自动补齐: find -name "*.h" -or -name "*.cpp" |xargs etags --members / 不好使 --language=c++ 我在使用上述命令时未能成功,但以下命令可以 find -name "*.cpp" -exec etags -a {} /; 或 find . -name "*.[chCH]" -print | etags - 上述命令可以在当前目录查找所有的.h和.cpp文件并把它们的摘要提取出来做成TAGS文件,具体的etags的用法可以看一下etags的manual。 在.emacs中加入这样的语句: (setq tags-file-name "~/sim973/src/TAGS") 这样emacs就会自动读取这个tags文件的内容。 几个重要的命令。 M-. 查找一个tag,比如函数定义类型定义等。 C-u M-. 查找下一个tag的位置 M-* 回到上一次运行M-.前的光标位置。 M-TAB 自动补齐函数名。 2. 一些整合的快捷键 易于编译和TAGS的使用,搜集自 zslevin 的帖子(LinuxForum GNU Emacs/XEmacs) C-f5, 设置编译命令 f5, 保存当前窗口然后编译当前窗口文件 (defun du-onekey-compile () "Save buffers and start compile" (interactive) (save-some-buffers t) (compile compile-command)) (global-set-key [C-f5] 'compile) (global-set-key [f5] 'du-onekey-compile) F7, 查找 TAGS 文件(更新 TAGS 表) C-F7, 在当前目录下生成包含所有递归子目录的 TAGS 文件(使用了shell中的find命令) C-. 开个小窗查看光标处的 tag C-, 只留下当前查看代码的窗口(关闭查看 tag 的小窗) M-. 查找光标处的 tag,并跳转 M-, 跳回原来查找 tag 的地方 C-M-, 提示要查找的 tag,并跳转 C-M-. 要匹配的 tag 表达式(系统已定义) Shift-Tab, C/C++ 和 lisp 等模式中补全函数名(一般情况下M-Tab被窗口管理器遮屏了) 定义按键,在生成相应 tag 文件时,比如一个目录下所有的 *.cpp 和 *.h 文件使用这样的正则表达式 *.[ch]*,在下面的 C-F7 中可能会用到。 (global-set-key [(f7)] 'visit-tags-table) ; visit tags table (global-set-key [C-f7] 'sucha-generate-tag-table) ; generate tag table (global-set-key [(control .)] '(lambda () (interactive) (lev/find-tag t))) (global-set-key [(control ,)] 'sucha-release-small-tag-window) (global-set-key [(meta .)] 'lev/find-tag) (global-set-key [(meta ,)] 'pop-tag-mark) (global-set-key (kbd "C-M-,") 'find-tag) (define-key lisp-mode-shared-map [(shift tab)] 'complete-tag) (add-hook 'c-mode-common-hook ; both c and c++ mode (lambda () (define-key c-mode-base-map [(shift tab)] 'complete-tag))) 上面定义的命令需要用到的函数: (defun lev/find-tag (&optional show-only) "Show tag in other window with no prompt in minibuf." (interactive) (let ((default (funcall (or find-tag-default-function (get major-mode 'find-tag-default-function) 'find-tag-default)))) (if show-only (progn (find-tag-other-window default) (shrink-window (- (window-height) 12)) ;; 限制为 12 行 (recenter 1) (other-window 1)) (find-tag default)))) (defun sucha-generate-tag-table () "Generate tag tables under current directory(Linux)." (interactive) (let ((exp "") (dir "")) (setq dir (read-from-minibuffer "generate tags in: " default-directory) exp (read-from-minibuffer "suffix: ")) (with-temp-buffer (shell-command (concat "find " dir " -name /"" exp "/" | xargs etags ") (buffer-name))))) (defun sucha-release-small-tag-window () "Kill other window also pop tag mark." (interactive) (delete-other-windows) (ignore-errors (pop-tag-mark))) 在源代码的目录下面运行这个命令: coon@zevita:/usr/local/arm-elf$ find . | grep '/.h$/|/.cc/$' | etags - 然后在emacs中: 运行M-x visit-tags-table 输入刚才的目录,注意不用输入TAGS 然后就可以用下面的命令浏览tag了 `M-. TAG ' 跳到第一个 TAG 的定义处。 `C-u M-.' 如果刚刚用过 M-. , 那么查找下一个定义处。 `C-u - M-.' 回到上一个定义处。 `C-M-. PATTERN ' 按正则表达式搜索 TAG 的定义。 `C-u C-M-.' 如果刚刚用过了 C-M-. , 那么查找下一个。 `C-x 4 . TAG ' 和 M-. 类似, 不过在另一个窗格显示。(`find-tag-other-window'). `C-x 5 . TAG ' 和 M-. 类似, 不过在另一个窗框显示。(`find-tag-other-frame'). `M-*' 回到开始查找 TAG 的地方。
以前没有用过这个东西,昨天研究了一下,很不错。把这个东西的使用方法简单的记录在下面! etags是一个用来创建tag table文件的程序,创建的数据格式emacs能够理解(还有一个程序ctags, 创建的tag table文件是给vi用的,和etags命令基本差不错)。 etags能处理 C, C++, Java, Fortran,python,php,perl等很多种语言 etags命令处理在命令行指定的文件,然后默认在当前目录生成表文件(可以通过-o参数修改) etags命令不能支持递归的查找文件,所以使用find命令配合 find . -name "*.[chCHp]*" -print | etags - 这样就可以在当前目录生成一个TAGS文件,剩下的就是在emacs当中使用了! 在emacs中大致记住三个命令 1.ESC x visit-tags-table RETURN --打开Tags tabs文件 2.ESC . 假定当前你把光标放在某个函数或其他语法对象上,这个命令在当前窗口打开当前查找的对象声明,定义所在 3.C-x 4. 这个在一个新窗口中打开--个人认为在阅读代码时这个命令或许更加适用。 4. C-x 1 返回 Emacs中etags的使用 - [技术相关]2006-08-01 etags is basically a multifile search facility that knows about C and Perl function definitions as well as searching in general. With it, you can find a function anywhere in an entire directory without having to remember in which file the function is defined, and you can do searches and query-replaces that span multiple files. etags uses tag tables, which contain lists of function names for each file in a directory along with information on where the functions' definitions are located within the files. Many of the commands associated with etags involve regular expressions (see Chapter 11) in search strings. 使用etags 1.创建tag表。 在当前的工作目录中调用etags程序。它的参数是正则表达式。 如:etags *.[ch]。从所有以.c或.h结尾的文件中,构建一个tag表 在shell mode或M-!命令下,执行etags。输出结果是一个TAGS文件。 如果要更新TAGS文件,则重新调用一下etags命令即可。 2.创建好tag表后,告知emacs。 M-x visit-tags-table 3.相关命令: M-.:在tag表查找函数名中包含有某个字符串的函数。a nice feature:它把光标当前所在的word当作默认查找字符串。 C-x 4:作用与M-.相似,不过是使用另一个缓冲区 M-,:查看下一个函数。如果存在多个符合查询条件的函数,M-.只显示结果列表中按字母序排的第一个函数,M-,用来查看下一个函数 M-x tags-search:输入正则表达式,查找所有列在tag表中的文件。凡是符合reglar expression的内容都显示出来。这点有点类似grep。结果中可通过M-,查看下一个。 M-x tags-query-replace:查询替换。作用在tag中列出的所有文件上。 C-u M-x tags-query-replace:只有完全匹配时,才替换(replaces only matches that are whole words) 如果用Esc或C-g推出了tags-query-replace,可通过M-,再恢复 M-x tags-apropos:如果给定正则表达式作参数,它将在*Tags List*中列出匹配该正则表达式的所有tags M-x list-tags:list所有给定C文件中的在tag表中所有的tag。可通过M-.查看每个函数的定义 1. Etags 基础 在emacs里可以用etags命令生成emacs专用的tags文件,有了此文件之后便可以使用一些emacs tags的命令,比如对于编辑C/C++程序的人员可以方便的定位一个函数的定义,或者对函数名进行自动补齐: find -name "*.h" -or -name "*.cpp" |xargs etags --members / 不好使 --language=c++ 我在使用上述命令时未能成功,但以下命令可以 find -name "*.cpp" -exec etags -a {} /; 或 find . -name "*.[chCH]" -print | etags - 上述命令可以在当前目录查找所有的.h和.cpp文件并把它们的摘要提取出来做成TAGS文件,具体的etags的用法可以看一下etags的manual。 在.emacs中加入这样的语句: (setq tags-file-name "~/sim973/src/TAGS") 这样emacs就会自动读取这个tags文件的内容。 几个重要的命令。 M-. 查找一个tag,比如函数定义类型定义等。 C-u M-. 查找下一个tag的位置 M-* 回到上一次运行M-.前的光标位置。 M-TAB 自动补齐函数名。 2. 一些整合的快捷键 易于编译和TAGS的使用,搜集自 zslevin 的帖子(LinuxForum GNU Emacs/XEmacs) C-f5, 设置编译命令 f5, 保存当前窗口然后编译当前窗口文件 (defun du-onekey-compile () "Save buffers and start compile" (interactive) (save-some-buffers t) (compile compile-command)) (global-set-key [C-f5] 'compile) (global-set-key [f5] 'du-onekey-compile) F7, 查找 TAGS 文件(更新 TAGS 表) C-F7, 在当前目录下生成包含所有递归子目录的 TAGS 文件(使用了shell中的find命令) C-. 开个小窗查看光标处的 tag C-, 只留下当前查看代码的窗口(关闭查看 tag 的小窗) M-. 查找光标处的 tag,并跳转 M-, 跳回原来查找 tag 的地方 C-M-, 提示要查找的 tag,并跳转 C-M-. 要匹配的 tag 表达式(系统已定义) Shift-Tab, C/C++ 和 lisp 等模式中补全函数名(一般情况下M-Tab被窗口管理器遮屏了) 定义按键,在生成相应 tag 文件时,比如一个目录下所有的 *.cpp 和 *.h 文件使用这样的正则表达式 *.[ch]*,在下面的 C-F7 中可能会用到。 (global-set-key [(f7)] 'visit-tags-table) ; visit tags table (global-set-key [C-f7] 'sucha-generate-tag-table) ; generate tag table (global-set-key [(control .)] '(lambda () (interactive) (lev/find-tag t))) (global-set-key [(control ,)] 'sucha-release-small-tag-window) (global-set-key [(meta .)] 'lev/find-tag) (global-set-key [(meta ,)] 'pop-tag-mark) (global-set-key (kbd "C-M-,") 'find-tag) (define-key lisp-mode-shared-map [(shift tab)] 'complete-tag) (add-hook 'c-mode-common-hook ; both c and c++ mode (lambda () (define-key c-mode-base-map [(shift tab)] 'complete-tag))) 上面定义的命令需要用到的函数: (defun lev/find-tag (&optional show-only) "Show tag in other window with no prompt in minibuf." (interactive) (let ((default (funcall (or find-tag-default-function (get major-mode 'find-tag-default-function) 'find-tag-default)))) (if show-only (progn (find-tag-other-window default) (shrink-window (- (window-height) 12)) ;; 限制为 12 行 (recenter 1) (other-window 1)) (find-tag default)))) (defun sucha-generate-tag-table () "Generate tag tables under current directory(Linux)." (interactive) (let ((exp "") (dir "")) (setq dir (read-from-minibuffer "generate tags in: " default-directory) exp (read-from-minibuffer "suffix: ")) (with-temp-buffer (shell-command (concat "find " dir " -name /"" exp "/" | xargs etags ") (buffer-name))))) (defun sucha-release-small-tag-window () "Kill other window also pop tag mark." (interactive) (delete-other-windows) (ignore-errors (pop-tag-mark))) 在源代码的目录下面运行这个命令: coon@zevita:/usr/local/arm-elf$ find . | grep '/.h$/|/.cc/$' | etags - 然后在emacs中: 运行M-x visit-tags-table 输入刚才的目录,注意不用输入TAGS 然后就可以用下面的命令浏览tag了 `M-. TAG ' 跳到第一个 TAG 的定义处。 `C-u M-.' 如果刚刚用过 M-. , 那么查找下一个定义处。 `C-u - M-.' 回到上一个定义处。 `C-M-. PATTERN ' 按正则表达式搜索 TAG 的定义。 `C-u C-M-.' 如果刚刚用过了 C-M-. , 那么查找下一个。 `C-x 4 . TAG ' 和 M-. 类似, 不过在另一个窗格显示。(`find-tag-other-window'). `C-x 5 . TAG ' 和 M-. 类似, 不过在另一个窗框显示。(`find-tag-other-frame'). `M-*' 回到开始查找 TAG 的地方。
发表评论
-
使用emacs时候,去掉ubuntu的alt键默认功能
2014-12-11 10:35 570原文地址:http://askubuntu.com/quest ... -
学习Emacs系列教程(十):多窗口
2014-12-09 10:07 428原文地址:http://www.cnblogs.com/rob ... -
Emacs 配置文件,包括自动提示,yasnippet和PHP-mod和cscope等
2014-12-04 12:03 1157原文地址:http://outofmemory.cn/code ... -
emacs ide配置
2014-12-04 12:00 479原文地址:http://www.boyunjian.com/d ... -
emacs 常用命令与配置
2014-12-04 11:46 596原文地址:http://www.cnblogs.com/UnG ... -
一起学用Emacs(一):Emacs基本命令
2014-10-24 13:40 584原文地址:http://linux.chinaunix.net ... -
Emacs 中的查找
2014-10-24 09:30 367原文地址:http://emacser.com/ann77/E ... -
Emacs常用命令速查
2014-10-22 10:26 424原文地址:http://www.chinaunix.net/o ... -
在emacs下配置php-mode实现库函数自动补全
2014-10-22 09:56 1448原文地址:http://blog.sina.com.cn/s/ ... -
慢慢将emacs 配置成极其强大的web IDE开发环境
2014-10-20 13:59 620原文地址:http://www.douban.com/grou ... -
【转载】在emacs下配置php-mode实现库函数自动补全
2014-10-20 10:17 597原文地址:http://blog.sina.com.cn/s/ ... -
Emacs中打造强大的Python IDE
2014-10-20 10:07 807原文地址:http://www.cnblogs.com/cod ... -
emacs插件以及配置 转
2014-10-11 09:55 1370原文地址:http://blog.csdn.net/liang ... -
在 emacs 中使用 bing translate api 实现高效翻译
2014-10-10 11:06 888原文地址:http://emacser.c ... -
使用.emacs.d目录管理Emacs配置文件
2014-10-09 17:39 1544原文地址:http://blog.csdn.net/aka_x ... -
emacs 生存指南
2014-10-09 17:30 584原文地址:http://blog.csdn.net/aka_x ... -
Emacs as a Python IDE
2014-10-09 14:36 491原文地址:http://cnlox.is-programmer ... -
Emacs下配置Java开发环境
2014-10-09 14:35 621原文地址:http://longgue.iteye.com/b ...
相关推荐
Emacs使用详解Emacs使用详解Emacs使用详解
emacs使用手册 简要介绍emacs的使用
emacs多年使用总结
Emacs使用手册 Emacs使用手册 Emacs
Emacs.使用手册 中文版 比较早期的文档,但还是很有参考价值
怎样在cygwin中安装使用emacs,手动安装的手动安装的手动安装的
Emacs 的 info 使用说明 Emacs 的整合环境 如何在 Emacs 中执行 Shell 的指令 有关目录的编辑方法 如何编辑远方机器上的档案 程式的编辑,编译与测试 如何在 Emacs 中列印文件 在 Emacs 中如何收发信件 其它...
dotemacs, 用于vim用户的emacs配置 dotemacs这是我个人的KISS配置。介绍有许多emacs配置,这是什么使这一?吻这是个简单愚蠢的配置。 它用 3个简单构建块构建,足够小,它是白色魔术而不是 black 魔术。简单构建 ...
gnu emacs 是个强大的编辑器,使用起来是有一定的难度的,但是这个文档能帮你很快的适应它的操作。
emacs使用手册(很权威),比较全面的介绍了emacs的快捷键和各种技巧
Emacs中文手册.pdf
markdown-mode is a major mode for editing [Markdown][]-formatted ;; text files in GNU Emacs. markdown-mode is free software, licensed ;; under the GNU GPL. ;;
Emacs的中文教程,介绍Emacs的主要操作方式。
emacs 中文 手册 - -绝对 经典
archlinux下emacs中文乱码问题的解决及中文输入模块的添加.docx
emacs-async, 在Emacs中,用于异步处理的简单库 asyncasync.el 是用于在Emacs中进行异步处理的MODULE 。 还提供了这里软件包中的一些异步应用程序:dired异步smtp-mail-async异步 bytecomp安装你可以使用 pa
可以对emacs有一个比较深入的了解,同时也能加强英语的学习
linux emacs 中文 教程 学习emacs 不错的材料
Emacs官方使用指南(中文版的)希望有所帮助!