我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: emacs配置大全(转)--还不错 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

独飞の孤心



性别: 帅哥 状态: 该用户目前不在线
头衔: 孽缘!
等级: 荣誉会员
家族: 单身贵族
发贴: 4484
威望: 3
浮云: 496
在线等级:
注册时间: 2005-10-12
最后登陆: 2011-09-23

5come5帮你背单词 [ duke /dju:k/ n. 公爵 ]


emacs配置大全(转)--还不错

本文主要讨论以下几方面的设置:
1.字体
2.cedet
3.ecb
4.cscope
5.gdb-many-window
6.行号
7.缩进


环境:
openSUSE 10.2
默认装的是Emacs 21,我从网上下了Emacs 22.1的tar包,编译安装。
1.字体
    默认的字体非常之小,以下是一篇非常详细的Emacs下设置字体的教程
http://www.yuanma.org/data/2006/0503/article_355.htm
可惜太长了,长到我实在是懒得看。我抄了个现成的:
(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1")
或者只写:
(set-default-font "10x20")
第二种方法效果不错:)
2.cedet
  下载cedet: http://cedet.sourceforge.net/
按照INSTALL安装就行,然后设置.emacs。INSTALL里有一段关于设置的,粘贴过来即可,另外最好在.emacs中设一个speedbar的快捷键:
(global-set-key [(f4)] 'speedbar-get-focus)
这样按一个F4,speedbar就出来了。
再加一条:
  (define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
于是,在程序中按下Alt+/,就会弹出菜单让你自动补全。

3.ecb
    http://ecb.sourceforge.net/
.emacs里:
(add-to-list 'load-path "~/software/ecb-2.32")
;;(require 'ecb)
(require 'ecb-autoloads)
打开emacs,然后M-x ecb-activate即可打开ecb。
4.cscope
  这个应该和ecb的有些功能是重复的
先装好cscope,再把/cscope-15.6/contrib/xcscope目录下的xcscope.el加载到emacs中去:
(add-to-list 'load-path "~/software/cscope-15.6/contrib/xcscope")
(require 'xcscope)
之后先M-x !,然后cscope -b,之后就可以在源代码中进行跳转了。命令见cscope菜单
这里有篇讲怎么在emacs下安装和使用cscope的:
http://ann77.stu.cdut.edu.cn/EmacsCscope.html
5.gdb-many-window
  这个功能插件可以使emacs的调试界面像VC一样,有watch, stacktrace等窗口,真正实现图形化gdb.
下载:
http://www.inet.net.nz/~nickrob/multi-gud.el
http://www.inet.net.nz/~nickrob/multi-gdb-ui.el
设置.emacs:
(setq gdb-many-windows t)
;;...
(load-library "multi-gud.el")
(load-library "multi-gdb-ui.el")
在emacs中编译好程序,然后M-x gdb,连按两次ret,多窗口gdb就出来了
还不行的看详细官方教程:http://www.inet.net.nz/
一遍使用gdb-ui的教程:
http://blog.chinaunix.net/u/5958/showart_137996.html

6.行号
见:
http://ann77.stu.cdut.edu.cn/EmacsDisplayLineNumber.html
然后在.emacs里加上:
(add-to-list 'load-path "~/backup/emacs") ;;这行根据你放el文件的地方改
(require 'display-line-number)
(global-display-line-number-mode 1)
;;(setq display-line-number-mode-on t)
(add-hook 'c-mode-hook 'display-line-number-mode)
(add-hook 'cc-mode-hook 'display-line-number-mode)
这个感觉比setnu.el那个好用,setnu.el有时候行号会乱掉的。
7.缩进
emacs的缩进方式和其它编辑器有些不同,text-mode下不能tab,只能用C-q tab才行。
c-mode或cc-mode下缩进只有2格,这个当然不符合大多数人的习惯,如果要设为4:
(add-hook 'c-mode-hook
          '(lambda ()
            (c-set-style "Stroustrup")))
如果要设成8:
options->Customize Emacs->Browse Customization Group->Programming->Language->C->C-Basic-offset,设成8就行,保存

主要参考文献:
Emacs安装一个扩展包的方法
http://ann77.stu.cdut.edu.cn/EmacsInstallPackege.html
一个比较全的.emacs配置文件:
http://www.cppblog.com/guangping/archive/2006/08/25/11683.html
在emacs下用c/c++编程
http://www.caole.net/diary/emacs_write_cpp.html
我的.emacs文件,供参考(比较乱,没整理过):
(setq initial-frame-alist '((top . 0) (left . 0) (width . 1024) (height . 768)))


(column-number-mode t)
(transient-mark-mode t)
(setq line-number-mode t)
(setq default-tab-width 8)

(customize-set-variable 'scroll-bar-mode' right)
;;(setq default-directory "home/jzj/backup/emacs/")
(setq inhibit-startup-message t)
(setq global-font-lock-mode t)
(setq make-backup-files nil)
(setq auto-save-mode nil)
(setq x-select-enable-clipboard t)
(setq mouse-yank-at-point t)
;;(global-set-key [home] 'beginning-of-buffer)

;;(global-set-key [end] 'end-of-buffer)
(global-set-key [f3] 'display-line-number-mode-on)
;;(global-set-key [f4] 'other-window)
(global-set-key [f5] 'compile)
(setq-default compile-command "make")
;;(global-set-key [f7] 'du-onekey-compile)
(global-set-key [f6] 'gdb)
(global-set-key [C-f7] 'previous-error)
(global-set-key [f7] 'next-error)

;;(set-default-font "9x15")
;;(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1")
(set-default-font "10x20")
;;(set-default-font "-outline-新宋体-normal-r-normal-normal-14-*-96-96-c-*-gb2312")

;; Load CEDET
(load-file "~/software/cedet-1.0pre4/common/cedet.el")

;; Enabling various SEMANTIC minor modes.  See semantic/INSTALL for more ideas.
;; Select one of the following:

;; * This enables the database and idle reparse engines
;;(semantic-load-enable-minimum-features)

;; * This enables some tools useful for coding, such as summary mode
;;  imenu support, and the semantic navigator
;;(semantic-load-enable-code-helpers)

;; * This enables even more coding tools such as the nascent intellisense mode
;;  decoration mode, and stickyfunc mode (plus regular code helpers)
;;(semantic-load-enable-guady-code-helpers)

;; * This turns on which-func support (Plus all other code helpers)
(semantic-load-enable-excessive-code-helpers)

;; This turns on modes that aid in grammar writing and semantic tool
;; development.  It does not enable any other features such as code
;; helpers above.
(semantic-load-enable-semantic-debugging-helpers)

(global-set-key [(f4)] 'speedbar-get-focus)

(require 'cc-mode)
(c-set-offset 'inline-open 0)
;;(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)
(defun my-c-mode-common-hook()
  (setq tab-width 8 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 [(f6)] '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)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

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

(setq gdb-many-windows t)

(add-to-list 'load-path "~/backup/emacs")
(require 'gud)

(require 'display-line-number)
(global-display-line-number-mode 1)
;;(setq display-line-number-mode-on t)
(add-hook 'c-mode-hook 'display-line-number-mode)
(add-hook 'cc-mode-hook 'display-line-number-mode)

(add-to-list 'load-path "~/software/ecb-2.32")
;;(require 'ecb)
(require 'ecb-autoloads)

;;for gdb-many-window mode
(load-library "multi-gud.el")
(load-library "multi-gdb-ui.el")

;; cscope in emacs
(add-to-list 'load-path "~/software/cscope-15.6/contrib/xcscope")
(require 'xcscope)

;; hotkey for cscope
(define-key global-map [(control f3)]  'cscope-set-initial-directory)
(define-key global-map [(control f4)]  'cscope-unset-initial-directory)
(define-key global-map [(control f5)]  'cscope-find-this-symbol)
(define-key global-map [(control f6)]  'cscope-find-global-definition)
(define-key global-map [(control f7)]
'cscope-find-global-definition-no-prompting)
(define-key global-map [(control f8)]  'cscope-pop-mark)
(define-key global-map [(control f9)]  'cscope-next-symbol)
(define-key global-map [(control f10)] 'cscope-next-file)
(define-key global-map [(control f11)] 'cscope-prev-symbol)
(define-key global-map [(control f12)] 'cscope-prev-file)
(define-key global-map [(meta f9)]  'cscope-display-buffer)
(define-key global-map [(meta f10)] 'cscope-display-buffer-toggle)

(set-face-background 'default "#334455")
(set-face-foreground 'default "wheat")
(set-cursor-color "white")


;;(add-to-list 'load-path "~/software/color-theme-6.6.0")
;;(require 'color-theme)
;;(color-theme-dark-blue)


转自 :http://blog.csdn.net/nhczp/archive/2007/11/02/1862695.aspx
本帖最近评分记录:
  • 浮云:10(yunyue)
  • 顶端 Posted: 2008-04-29 09:40 | [楼 主]
    独飞の孤心



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 孽缘!
    等级: 荣誉会员
    家族: 单身贵族
    发贴: 4484
    威望: 3
    浮云: 496
    在线等级:
    注册时间: 2005-10-12
    最后登陆: 2011-09-23

    5come5帮你背单词 [ slang /slæŋ/ n. 俚语,俗语 ]


    如何安装扩展包:


    假定扩展包的名字叫作 xxx.el 通常情况下,安装方法如下.

        * 拷贝 xxx.el 到 ~/Emacs/download.elisp 下
        * 在 .emacs 中写入

          (add-to-list 'load-path "~/Emacs/download.elisp")

        如果你的 .emacs 已经有了这句话,就不用再写了。

        * 在 .emacs 中写入

          (require 'xxx)

        这样基本就可以用了。然后注意 xxx.el 文件的开头部分,一般 xxx.el 的作者会在那里纪录基本配置方法和使用方法。有可能的话,可以从那里抄一些语句到 .emacs 中了。

        * 重新启动 Emacs

        如果你不想重新启动 Emacs ,也可以

        M-x load-file ~/.emacs

        或者用 Emacs 打开 .emacs ,然后

        M-x eval-buffer
    顶端 Posted: 2008-04-29 09:46 | [1 楼]
    独飞の孤心



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 孽缘!
    等级: 荣誉会员
    家族: 单身贵族
    发贴: 4484
    威望: 3
    浮云: 496
    在线等级:
    注册时间: 2005-10-12
    最后登陆: 2011-09-23

    5come5帮你背单词 [ organization /o:gənai'zeiən/ n. 组织,安排,团体,有机休 ]


    如何显示行号:


        我知道显示 行号的两个扩展包是 wb-line-number.el 和 setnu.el。

        * wb-line-number.el 用单独的一个窗口显示行号,和 buffer 本身 又一个很大的 scroll bar ,很不好看,我不喜欢用。
        * Setnu.el 不错,显示的就像 VI 一样。但是, setnu.el 和font lock mode 有冲突, 如果启动 font lock 的时候 C-y , or M-x yank 的时候就会显示行号出乱子.

        于是,我写了一个代替 setnu.el 的程序。这个实现现在来看还没有 setnu.el 的问题, 而且比 setnu.el 强壮,如果和那个包冲突,出问题了,上下翻页后也会回复正常。或者改动了 buffer 的内容,或者用 C-l 等等方法,都可以让它恢复正常。觉得 setnu.el 地实现方法很复杂.

        从技术上讲,我发现他为文件中的每一行都建立一个 overlay (or extent , in XEmacs) ,也就是说如果有 10000行的文件就建立 10000个 overlay . 我的实现方法是只建立屏幕可见部分的 overlay , 也就是说,如果你的window 中只有 24 行,那么就建立 24 个 overlay .

        我的实现方[屏蔽]频繁的删除,重建 overlay , 我原以为会很慢, 但事实上还不错. 只不过在 CPU 负载非常大的时候,会有若干行的行号显示不出来, 不过没有关系, 等 CPU 闲了, 上下翻一下就好了.

        下面是 display-line-number 的安装配置方法。

    ;; 加载显示行号模块
    (require 'display-line-number)
    ;; 如果想所有打开的文件都显示行的话就打开下面的注释
    (global-display-line-number-mode 1)
    ;; 设置显示格式
    (setq display-line-number-format "%4d|")
    ;; 在 tool bar 上增加一个图标,
    ;; 注意: 一定要在 load-path 中 可以找到 display-line-nuber.xpm 文件才行。
    ;;
    (tool-bar-add-item "display-line-number"
                      'display-line-number-mode
                      'display-line-number-mode
                      :help "display line number!"
                      :button (cons :toggle  '(and (boundp
                                                    display-line-number-mode)
                                                    display-line-number-mode)))

    ;;
    ;; 使用方法
    ;; M-x display-line-number-mode
    ;; 用来 toggle 显示行号的模式
    ;; M-x display-line-number-mode-on
    ;; 启动显示行号的模式
    ;; M-x display-line-number-mode-off
    ;; 关闭显示行号的模式
    ;; 仅对某种 mode 启动显示行号的模式
    ;; (add-hook 'c-mode-hook 'display-line-number-mode)
    顶端 Posted: 2008-04-29 09:46 | [2 楼]
    独飞の孤心



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 孽缘!
    等级: 荣誉会员
    家族: 单身贵族
    发贴: 4484
    威望: 3
    浮云: 496
    在线等级:
    注册时间: 2005-10-12
    最后登陆: 2011-09-23

    5come5帮你背单词 [ extinct /iks'tiŋkt/ a. 绝种的,灭绝的,熄灭的 ]


    显示行号的扩展:

    下载后把.rar去掉
    附件: display-line-number.el.rar (7 K) 下载次数:1

    顶端 Posted: 2008-04-29 09:48 | [3 楼]
    chenyukang



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    发贴: 2275
    威望: 0
    浮云: 1127
    在线等级:
    注册时间: 2006-09-24
    最后登陆: 2020-08-17

    5come5帮你背单词 [ overnight /'əuvənait/ adv. & a. 通宵(的),一夜(的) ]


    (set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1")
    或者只写:
    (set-default-font "10x20")

    不好看 默认的字体看着还比较舒服。。。。
    顶端 Posted: 2008-04-29 09:48 | [4 楼]
    ufly



    性别: 帅哥 状态: 该用户目前不在线
    等级: 希望之光
    发贴: 1930
    威望: 0
    浮云: 1366
    在线等级:
    注册时间: 2006-06-19
    最后登陆: 2010-10-14

    5come5帮你背单词 [ infancy /'infənsi/ n. 婴儿期,幼年期,初期 ]


    emacs用了一年多,lz提到的那些都用过,不过考虑了很久还是决定转vim了,现在还是觉得vim的操作方式很爽,其实当初选emacs唯一的理由就是和gdb结合的好,但是实际中调大点的程序还是eclipse效率高。
    顶端 Posted: 2008-04-29 10:21 | [5 楼]
    我来我网·5come5 Forum » Linux专区

    Total 0.008796(s) query 5, Time now is:12-22 15:09, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号