学而不思则罔,思而不学则殆

有其事必有其理, 有其理必有其事

  IT博客 :: 首页 :: 联系 :: 聚合  :: 管理
  85 Posts :: 12 Stories :: 47 Comments :: 0 Trackbacks
    使用tags之前要先对源代码分析建立tags文件,在代码所在目录中运行:etags -R 即可。

我常用的就这几个命令和快捷键:

M-x visit-tags-table <RET> FILE <RET>   选择tags文件
M-. [TAG] <RET> 访问标签
M-* 返回
C-u M-. 寻找标签的下一个定义

cscope用用吧。它其实是一个独立的软件,完全可以脱离vi和emacs使用。但是结合emacs的强大功能,cscope就显得更加方便了。GNU Emacs默认自带cscope的支持。在使用之前,cscope也需要对代码进行索引。在emacs中可以这样做:

C-c s a             设定初始化的目录,一般是你代码的根目录
C-s s I 对目录中的相关文件建立列表并进行索引

建完索引之后,你就可以用cscope在代码里游荡了。常用的一些命令如下:

C-c s s             序找符号
C-c s g 寻找全局的定义
C-c s c 看看指定函数被哪些函数所调用
C-c s C 看看指定函数调用了哪些函数
C-c s e 寻找正则表达式
C-c s f 寻找文件
C-c s i 看看指定的文件被哪些文件include


简单配置

;;;; CC-mode..  http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)


;;;;..C/C++......

(defun my-c-mode-common-hook()
  (setq tab-width 4 indent-tabs-mode nil)
  ;;; hungry-delete and auto-newline
  (c-toggle-auto-hungry-state 1)
  ;;....
  (define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
  (define-key c-mode-base-map [(return)] 'newline-and-indent)
  (define-key c-mode-base-map [(f7)] 'compile)
  (define-key c-mode-base-map [(meta \`)] 'c-indent-command)
;;  (define-key c-mode-base-map [(tab)] 'hippie-expand)
  (define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
  (define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)

 ;;.....
  (setq c-macro-shrink-window-flag t)
  (setq c-macro-preprocessor "cpp")
  (setq c-macro-cppflags " ")
  (setq c-macro-prompt-flag t)
  (setq hs-minor-mode t)
  (setq abbrev-mode t)
  (global-font-lock-mode t)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

;;;;..C++......
(defun my-c++-mode-hook()
  (setq tab-width 4 indent-tabs-mode nil)
  (c-set-style "stroustrup")
;;  (define-key c++-mode-map [f3] 'replace-regexp)
)

// 函数跳转
(require 'xcscope)
(setq cscope-do-not-update-database t)


Emacs常用命令速查

     现在我已经能够熟练使用这些命令了,基本上可以算一个初段的Emacser了,哈哈,总结一下,把这些命令打印出来贴在电脑上,不记得了再查查,从今以后尽量做到写代码和文档都用Emacs来完成.
  1)与文件操作有关的命令
  C-x C-f    查找文件并且在新缓冲区中打开
  C-x C-v    读入另一个文件替换掉用C-x C-f打开的文件
  C-x i    把文件插入到光标的当前位置
  C-x C-s    保存文件
  C-x C-w    把缓冲区内容写入一个文件
  C-x C-c    退出Emacs

  2)与光标移动操作有关的命令
  C-f     光标前移一个字符(右)
  C-b     光标后移一个字符(左)
  C-p     光标前移一行(上)
  C-n     光标后移一行(下)
  M-f     前移一个单词
  M-b     后移一个单词
  C-a     移动到行首
  C-e     移动到行尾
  M-e     前移一个句子
  M-a     后移一个句子
  M-}     前移一个段落
  M-{     后移一个段落
  C-v     屏幕上卷一屏
  M-v     屏幕下卷一屏
  C-x ]    前移一页
  C-x [    后移一页
  M-<     前移到文件头
  M->;     后移到文件尾
  C-l     重新绘制屏幕,当前行放在画面中心
  M-n 或者 C-u n  重复执行n次后续命令
  按下M-x后在辅助输入区中输入"goto-line"跳到指定的行,输入"goto-char"跳到指定的字符

  3)与文件删除操作有关的命令
  C-d     删除光标位置上的字符
  DEL     删除光标前面的字符
  M-d     删除光标后面的单词
  M-DEL    删除光标前面的单词
  C-k     从光标位置删除到行尾
  M-k     删除光标后面的句子
  C-x DEL    删除光标前面的句子
  C-y     恢复被删除的文本或者粘贴最近删除或复制的文本
  C-w     删除文件块
  按下M-x后在辅助输入区中输入"kill-paragraph"删除光标后面的段落,按下"backward-kill-paragraph"删除光标前面的段落

  4)与文本块操作有关的命令
  C-@     标记文本块的开始(或结束)位置
  C-x C-x    互换插入点和文本标记的位置
  C-w 或 SHIFT-DEL 删除文本块
  M-w     复制文本块
  M-h     标记段落
  C-x C-p    标记页面
  C-x h    标记整个缓冲区

  5)与位置交换操作有关的命令
  C-t     交换两个字符的位置
  M-t     交换两个单词的位置
  C-x C-t    交换两个文本行的位置
  按下M-x后在辅助输入区中输入"transpose-sentences"交换两个句子的位置,按下"transpose-paragraph"交换两个段落的位置

  6)与改变字母大小写操作有关的命令
  M-c     单词首字母改为大写
  M-u     单词的字母全部改为大写
  M-l     单词的字母全部改为小写

  7)与查找操作相关的命令
  C-s     向前递增查找
  C-r     向后递增查找
  C-s C-w    开始递增查找,把光标位置的单词做查找字符串
  C-s C-y    开始递增查找,把光标位置到行尾之间的文本做查找字符串
  C-s return searchstring return  向前开始非递增查找操作
  C-r return searchstring return  向后开始非递增查找操作
  C-s return C-w  向前开始单词查找(不受换行符、空格、标点符号影响)
  C-r return C-w  向后开始单词查找(不受换行符、空格、标点符号影响)

  8) 与使用编辑缓冲区和窗口有关的命令
  C-x b    如果输入一个新的文件名则新建一个文件并且编辑,否则打开该文件
  C-x s    保存全部缓冲区
  C-x b    删除缓冲区
  M-x rename-buffer 重命名当前缓冲区
  C-x C-q    把当前编辑缓冲区设置为只读属性
  C-x 0    删除当前所在的窗口
  C-x 1    当前缓冲区满屏显示
  C-x 2    创建上下排列的窗口
  C-x 3    创建左右排列的窗口
  C-x o    在窗口之间移动



posted on 2007-05-30 15:52 易道 阅读(1051) 评论(0)  编辑 收藏 引用 所属分类: 软件的使用
只有注册用户登录后才能发表评论。