Chinaunix首页 | 论坛 | 博客
  • 博客访问: 528468
  • 博文数量: 83
  • 博客积分: 4136
  • 博客等级: 中校
  • 技术积分: 886
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-19 21:14
文章分类

全部博文(83)

文章存档

2013年(1)

2011年(25)

2010年(57)

分类: LINUX

2010-11-23 07:54:48

话说,我也是刚刚入门。。。。。
都说emacs是多么的牛X,多么的绚丽,可是刚刚安装好emacs的我,怎么没有发现呢?请看我的 在RHEL5下安装Emacs

其实,安装好之后,你还要定制你的.emacs文件。什么是.emacs文件,听我慢慢道来(话说我在网上找了那么长时间,都没有人将什么是.emacs文件,人家都是直接说,大家看看我的.emacs文件,然后上来直接就是一大堆代码,难道菜鸟的起步水平也是相当高???)

废话少说,切入正题.

大家还是先看一看我的.emacs文件吧,(狂晕!怎么你也来这套???)



;;///.emacs:

;; plugins directory
(add-to-list 'load-path "~/etc/lisp")


;;;;---------------------- UI -------------------------

;; 标题栏,显示"buffer的名字@Emacs"
(setq frame-title-format "%b@rain_Emacs")

;; 禁用启动信息
(setq inhibit-startup-message t)

;; 显示光标位置:
(setq column-number-mode t)
(setq line-number-mode t)

;; 设置kill-ring-max为200
(setq kill-ring-max 200)

;; 设置tab为4个空格的宽度,而不是原来的2
(setq c-basic-offset 4)
(setq default-tab-width 4)
(setq-default indent-tabs-mode nil)

;; 设置让光标指到某个括号与它匹配的括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)

;; 禁用终端响铃
;;(setq visible-bell t)

;; 高亮显示选择区域
(setq transient-mark-mode t)

;;----------------- 显示日期时间--------------------
;;;(setq display-time-day-and-date t)
;;;(setq display-time-24hr-format t)
;;;(setq display-time-day-and-date t)
;(setq display-time-use-mail-icon t)
;;;(setq display-time-interval 10)
;;;(display-time)
;Time-stamp 设定文档上次保存的信息-------------------------
;需在文档的前8行中加入关键字如: Time-stamp: <> 或 Time-stamp: "",便会自动保存时间戳
(setq time-stamp-active t) ;更新timestamps
(setq time-stamp-warn-inactive t); warn if unable
;设置time-stamp的格式
;当前使用的系统用户名[%u] ;当前的操作系统名[%s]
;星期几[%:a] ;当前时刻%02H : %02M : %02S
;(setq time-stamp-format " File [%f] modified by Liangbo on %:a, %:y.%02m.%02d at %02H : %02M : %02S on %s ")
(setq-default time-stamp-start "\\(\\([Ll]ast-?[Uu]pdate\\)\\|\\([Tt]ime-?[Ss]tamp\\)\\): [^A-Za-z0-9: -\"']?[<\"'][^<>A-Za-z0-9: -\"']?")
(setq-default time-stamp-format " File [%f] modified by Liangbo on %:y.%02m.%02d ")
(setq-default time-stamp-end "\\\\?[^<>A-Za-z0-9: -\"']?[>\"'][^A-Za-z0-9: -\"']?")
(add-hook 'write-file-hooks 'time-stamp);;保存动作时更新时间戳
;-------------------------------------------------------



;; 不产生备份文件
(setq make-backup-files nil)
(setq-default make-backup-files nil) ;不产生临时文件

;; 取消自动保存
(auto-save-mode 0)

;; 防止页面滚动时跳动
(setq scroll-margin 3
     scroll-conservatively 10000)

;; 保存上次的操作记录到SESSION:

;;(require 'session)
;;(add-hook 'after-init-hook 'session-initialize)
;;(setq session-save-file "~/etc/emacs/session")

;; 给每行显示行号: ~e0225855/linum/linum.html
;;(require 'linum)



(defun my-c-mode-auto-pair ()
  (interactive)
  (make-local-variable 'skeleton-pair-alist)
  (setq skeleton-pair-alist '(
                   (?` ?` _ "''")
                   (?\( _ ")")
                   (?\[ _ "]")
                   (?{ \n > _ \n ?} >)
                   (?\" _ "\"")))
  (setq skeleton-pair t)
  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "'") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe))
(add-hook 'c-mode-hook 'my-c-mode-auto-pair)
(add-hook 'c++-mode-hook 'my-c-mode-auto-pair)
;;输入左边的括号,就会自动补全右边的部分.包括(), '', [] , {} ,""

;;;;自动补齐策略
(defun my-indent-or-complete ()
   (interactive)
   (if (looking-at "\\>")
          (hippie-expand nil)
          (indent-for-tab-command))
)
;(global-set-key [(C-tab)] 'my-indent-or-complete)
;;;(control tab)
;(autoload 'senator-try-expand-semantic "senator")
;(setq hippie-expand-try-functions-list
; '(
; senator-try-expand-semantic
; try-expand-dabbrev
; try-expand-dabbrev-visible
; try-expand-dabbrev-all-buffers
; try-expand-dabbrev-from-kill
; try-expand-list
; try-expand-list-all-buffers
; try-expand-line
; try-expand-line-all-buffers
; try-complete-file-name-partially
; try-complete-file-name
; try-expand-whole-kill
; )
;)
;;web方式显示行号
(require 'wb-line-number)
(wb-line-number-enable)

;; 颜色主题:
;;(require 'color-theme)
;;(color-theme-initialize)
;;(color-theme-midnight)

;; 'y' for 'yes', 'n' for 'no'
(fset 'yes-or-no-p 'y-or-n-p)

;; 代码折叠:
;;

;;(load-library "hideshow")
;;(add-hook 'c-mode-hook 'hs-minor-mode)
;;(add-hook 'c++-mode-hook 'hs-minor-mode)
;;(add-hook 'java-mode-hook 'hs-minor-mode)
;;(add-hook 'perl-mode-hook 'hs-minor-mode)
;;(add-hook 'php-mode-hook 'hs-minor-mode)
;;(add-hook 'emacs-lisp-mode-hook 'hs-minor-mode)

;; 给Emacs添加Tab功能:

;;(require 'tabbar)
;;(tabbar-mode 1)
;;(setq tabbar-buffer-groups-function
;;(lambda (buffer)
;;(list "All buffers")))
;;(global-set-key (kbd "M-[") 'tabbar-backward-group)
;;(global-set-key (kbd "M-]") 'tabbar-forward-group)
;;(global-set-key (kbd "M-p") 'tabbar-backward-tab)
;;(global-set-key (kbd "M-n") 'tabbar-forward-tab)
;;(global-set-key [(control tab)] 'tabbar-forward-tab)

;; 隐藏滚动条
;;(scroll-bar-mode -1)

;; 打开图片显示功能
(auto-image-file-mode t)

;; 支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)



;;;;----------------- Programming ------------------------
;; CEDET:

;;(add-to-list 'load-path "~/etc/lisp/cedet/common")
;;(require 'cedet)
;;(semantic-load-enable-excessive-code-helpers)
;;(setq semanticdb-default-save-directory "~/etc/emacs/") ; semanticdb默认路经

;; 设置编译命令为:make
(setq compile-command "make")

;; C/C++语言风格
(defun wx-c-mode-hook()
(setq tab-width 4 indent-tabs-mode nil)
(c-set-style "stroustrup")
; 关闭自动换行
(c-toggle-auto-newline -1)

(global-hl-line-mode 1);;高亮当前行
(global-auto-revert-mode t);;在外部更新了文件后,自动更新

; 贪心删除
(c-toggle-hungry-state 1)
; ctrl+`: 代码折叠
(define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
; 换行自动递进
(define-key c-mode-base-map [(return)] 'newline-and-indent)
; F7:编译
(define-key c-mode-base-map [(f7)] 'compile)

)
(add-hook 'c-mode-hook 'wx-c-mode-hook)
(add-hook 'c++-mode-hook 'wx-c-mode-hook)

;;---------------- Personal Info. ----------------------
(setq user-full-name "rain")
(setq user-mail-address "lqy8310@gmail.com")
(setq track-eol t) ; 当光标在行尾上下移动的时候,始终保持在行尾。


;;;;---------------- Global Hot Key ----------------------

;; F1:最大化当前buffer:
(global-set-key [(f1)] 'delete-other-windows)

;; F2:切换到dired模式
(global-set-key [(f2)] 'dired)

;; F3:切换到shell模式
(global-set-key [(f3)] 'ansi-term)

;; F4:关闭buffer
(global-set-key [(f4)] 'kill-buffer-and-window)

;; F5:打开speedbar
(global-set-key [(f5)] 'speedbar)

;; 跳到另一个窗口
(global-set-key [(f6)] 'other-window)

;; F7:编译
(global-set-key [(f7)] 'compile)

;; F9:gdb
(global-set-key [(f9)] 'gdb)

;; F10: gdb:next
(global-set-key [(f10)] 'gud-next)

;; F11: gdb:step
(global-set-key [(f11)] 'gud-step)


;颜色主题
(add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0")
(require 'color-theme)
(color-theme-initialize)
;(color-theme-pok-wog)
;(color-theme-aalto-dark)
;(color-theme-bharadwaj-slate)
;;(color-theme-aalto-light)
;(color-theme-white-on-grey)
;(color-theme-robin-hood)
;(color-theme-gray30)
(color-theme-midnight)
;" "
;###color-theme^^^^



;### auto-complete ####
;" "
;参考其User Manual安装
(add-to-list 'load-path "/root/etc/lisp/auto-complete-1.3.1")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "/home/diga/.emacsLoadpath/auto-complete-1.3.1/ac-dict")
(ac-config-default)
;### auto-complete ^^^^



下面我大体说一下:

首先这个/root/.emacs文件在你安装好emacs23后是没有的,你需要手动新建这个文件。
   vi ~/.emacs

然后将我上面的代码粘贴进去,然后再看上面的代码

(add-to-list 'load path "~/etc/lisp")
这一句代表emacs的load-path 也就是emacs的插件安放位置是~/etc/lisp目录,因此你还需要新建目录

mkdir ~/etc/lisp

一些所谓的插件无非就是一些*.el文件

注意:
 在打开emacs时候,它会自动加载.emacs文件,在加载过程中不能出现错误,如果有错误提示,emacs就会工作不正常。你可以输入

emacs --debug-init
然后看提示哪些错误,一一改正。

下面举一个例子:

比如在上面我的代码中,有这样的代码:

;颜色主题
(add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0")
(require 'color-theme)
(color-theme-initialize)
;(color-theme-pok-wog)
;(color-theme-aalto-dark)
;(color-theme-bharadwaj-slate)
;;(color-theme-aalto-light)
;(color-theme-white-on-grey)
;(color-theme-robin-hood)
;(color-theme-gray30)
(color-theme-midnight)
;" "
;###color-theme^^^^

一看注释就知道,这是emacs的一个颜色主题插件,其中,在;之后的都会被注释掉
看到:
(add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0")

后,我们知道,这个主题插件放置在~/etc/lisp/color-theme-6.6.0 目录里
如果你上面仅仅是拷贝了我的代码,并把它粘贴在 .emacs文件中,那你是看不到这个主题效果的。
原因就是你还没有下载并安装这个主题插件
1、你可以去
下载
2、解压到 ~/etc/lisp目录就会自动生成
~/etc/lisp/color-theme-6.6.0 目录
3、然后你再把我的颜色主题部分的代码使能

你就能看到效果。。

特别强调:
    在加载  .emacs的过程中,一定不能出错,如出错了就输入命令

emacs --debug-init

    查看有那些错误,并排除错误,一般的错误都是像我刚才举的例子一样,在.emacs里面有一些代码,但是相应目录里面并没有插件。
    解决办法有两个:1、去搞定这些插件,2、把那些代码屏蔽

好了,先讲这么多吧!

欢迎留言和我交流!!!


                                              ohmytime.cublog.cn 转载清注明出处!!
阅读(3635) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~