您的位置:首页 > 其它

到现在, 这个 emacs 配置用着最爽

2011-06-27 09:02 246 查看
把下面的内容放到 ~/.emacs, 没有的插件自己GOOGLE, 实在找不到我也可以提供.

==============================================================

;;设置有用的个人信息

(setq user-full-name "Heng Liu")

(setq user-mail-address "liuhengloveyou@gmail.com")

;; 引入系统变量, 中文输入法需要

(setenv "LC_CTYPE" "zh_CN.utf-8")

(setenv "EDITOR" "/usr/bin/emacs")

;; 字体设置

(custom-set-faces '(default ((t (:slant normal :weight normal :height 83 :width normal)))))

(custom-set-variables

'(column-number-mode t)

'(ecb-options-version "2.32")

'(ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1))

'(menu-bar-mode t)

'(scroll-bar-mode nil)

'(show-paren-mode t)

'(size-indication-mode t)

'(tool-bar-mode nil)

'(transient-mark-mode (quote (only . t))))

;;关闭启动画面

(setq inhibit-startup-message t)

;; 关闭出错时的蜂鸣提示声

(setq visible-bell t)

;; 尽快显示按键序列

(setq echo-keystrokes 0.1)

;; 用来显示当前光标在哪个函数

(which-func-mode 1)

(setq which-func-unknown "unknown func")

;; 父目录/buffer名,显示同名buffer

(setq uniquify-buffer-name-style 'forward)

;; 默认启用文本模式

(setq default-major-mode 'text-mode)

(add-hook 'text-mode-hook 'turn-on-auto-fill)

(setq enable-recursive-minibuffers t)

;; 单独跳出一个frame

(setq special-display-buffer-names '("*Help*" "*Apropos*"))

;; 显示行号

(global-linum-mode 1)

;;显示列号

(setq column-number-mode t)

;;默认显示 80列就换行

(setq default-fill-column 80)

;;在minibuffer里启用自动补全函数和变量

(icomplete-mode 1)

;;允许minibuffer自由变化其宽度大小

(setq resize-mini-windows t)

;;指针不要闪

(blink-cursor-mode -1)

;; Linux 下复制内容到系统的剪切板

(setq x-select-enable-clipboard t)

;; 启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp

(partial-completion-mode 1)

;;很大的 kill ring 方便的在 kill-ring 里寻找需要的东西

(setq kill-ring-max 200)

(defadvice yank-pop (around kill-ring-browse-maybe (arg))

"If last action was not a yank, run `browse-kill-ring' instead."

(if (not (eq last-command 'yank))

(browse-kill-ring)

ad-do-it))

(ad-activate 'yank-pop)

(global-set-key (kbd "C-c k") 'browse-kill-ring)

;; 设置书签文件

;; C-x r m Bookmark bookmark-set 设置一个名为 Bookmark 的书签

;; C-x r l bookmarks-bmenu-list 列出所有已保存的书签

;; C-x r b Bookmark bookmark-jump 跳转至名为 Bookmark 的书签中所设置的位置

;; bookmark-delete 删除一个书签

;; bookmark-save 将所有的书签保存到书签文件中

;; 跟书签功能类似的寄存器

;; C-x r space X point-to-register 将光标保存到寄存器 X

;; C-x r s X copy-to-register 将区域保存到寄存器 X

;; C-x r r X copy-rectangle-to-register 将选定的矩形区块保存到寄存器 X

;; view-register 查看一个给定的寄存器的内容

;; C-x r j X jump-to-register 将光标移动到寄存器 X 中给定的位置

;; C-x r i X insert-register 在光标处插入寄存器 X 的内容

(setq bookmark-default-file "~/.emacs.d/emacs.bmk")

;;设置缩略词的文件

(setq abbrev-file-name "~/.emacs.d/abbrev_defs")

;; 在emacs读man文档时,使用当前buffer

(setq Man-notify-method 'pushy)

;;启用备份

(setq version-control t)

;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档

(setq kept-old-versions 2)

;;备份最新的版本5次,理解同上

(setq kept-new-versions 5)

;;删掉不属于以上7版本的版本

(setq delete-old-versions t)

;;设置备份文件的路径

(setq backup-directory-alist '(("." . "~/.emacs.d/backup")))

;;备份设置方法,直接拷贝

(setq backup-by-copying t)

;; 不产生备份文件

(setq make-backup-files nil)

;; 不产生备份

(setq backup-inhibited t)

;; 不生成名为#filename#的临时文件

(setq auto-save-default nil)

;; 自动保存

(setq auto-save-mode t)

;;自动重载更改的文件

(global-auto-revert-mode 1)

;;当鼠标移动的时候自动转换frame,window或者minibuffer

(setq mouse-autoselect-window t)

;;以 y/n代表 yes/no

(fset 'yes-or-no-p 'y-or-n-p)

;;将F10绑定为显示菜单栏

(global-set-key [(f10)] 'menu-bar-mode)

;;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线

(mouse-avoidance-mode 'animate)

;;支持emacs和外部程序的粘贴

(setq x-select-enable-clipboard t)

;; Tell Emacs fill commands to insert two after a colon

(setq colon-double-space t)

;; 在文档最后自动插入空白行

(setq require-final-newline t)

;;括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号

(show-paren-mode t)

(setq show-paren-style 'parentheses)

;;在标题栏显示buffer的名字.区分不同的主机和用户名称

(setq frame-title-format '((:eval (getenv-internal "LOGNAME"))"@"(:eval (system-name))":"(:eval (or (buffer-file-name) (buffer-name)))))

;; mode line上的时间显示

(display-time-mode t)

(setq display-time-24hr-format t)

(setq display-time-day-and-date nil)

(setq display-time-interval 60)

;;让 Emacs 可以直接打开和显示图片

(setq auto-image-file-mode t)

;; 高亮显示要拷贝的区域

(transient-mark-mode t)

;; 高亮显示当前行

(highlight-current-line-on 1)

;;光标显示为一竖线

(setq-default cursor-type 'bar)

;;进行语法加亮

(global-font-lock-mode t)

;;允许临时设置标记

(transient-mark-mode t)

;;用空格代替tab

;;(setq default-tab-width 4 indent-tabs-mode nil)

;;(setq tab-width 4 indent-tabs-mode nil)

;;(setq tab-stop-list ())

;; edit

(put 'set-goal-column 'disabled nil)

(put 'narrow-to-region 'disabled nil)

(put 'upcase-region 'disabled nil)

(put 'downcase-region 'disabled nil)

;;鼠标滚轮,默认的滚动太快,这里改为3行

(defun up-slightly () (interactive) (scroll-up 3))

(defun down-slightly () (interactive) (scroll-down 3))

(global-set-key [mouse-4] 'down-slightly)

(global-set-key [mouse-5] 'up-slightly)

;;设置 sentence-end 可以识别中文标点

(setq sentence-end "//([。!?]//|……//|[.?!][]/"')}]*//($//|[ /t]//)//)[ /t/n]*")

(setq sentence-end-double-space nil)

;;解决emacs shell乱码

(setq ansi-color-for-comint-mode t)

(setq ansi-color-names-vector ["black" "red" "green" "blue" "yellow" "magenta" "cyan" "white"])

(setq verilog-auto-lineup (quote all))

(customize-group 'ansi-colors)

(kill-this-buffer);;关闭customize窗口

;; shell-command - enables tab-completion for `shell-command'

(shell-command-completion-mode)

;;shell,gdb退出后,自动关闭该buffer

(defun kill-buffer-when-exit ()

"Close assotiated buffer when a process exited"

(let ((current-process (ignore-errors (get-buffer-process (current-buffer)))))

(when current-process

(set-process-sentinel current-process

(lambda (watch-process change-state)

(when (string-match "//(finished//|exited//)" change-state)

(kill-buffer (process-buffer watch-process))))))))

(add-hook 'gdb-mode-hook 'kill-buffer-when-exit)

(add-hook 'shell-mode-hook 'kill-buffer-when-exit)

;;让 dired 可以递归的拷贝和删除目录

(setq dired-listing-switches "-lh")

(setq dired-recursive-copies 'top)

(setq dired-recursive-deletes 'top)

;;括号匹配,找到对应的括号{}

(defun match-paren (arg)

"Go to the matching paren if on a paren; otherwise insert %."

(interactive "p")

(cond ((looking-at "//s/(") (forward-list 1) (backward-char 1))

((looking-at "//s/)") (forward-char 1) (backward-list 1))

(t (self-insert-command (or arg 1)))))

(global-set-key "%" 'match-paren)

;;自动补全括号,包括(), '', [] , {} ,""

(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)

;;可以递归的使用 minibuffer

(setq scroll-margin 3 scroll-conservatively 10000)

;;不显示ecbTip

(setq ecb-tip-of-the-day nil)

(global-ede-mode 1) ; Enable the Project management system

(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion

;;启动/关闭ECB

(defun openecb () (interactive) (ecb-activate) (ecb-layout-switch "left1") (xgtags-mode))

(global-set-key [f12] 'openecb)

(global-set-key [C-f12] 'ecb-deactivate)

;; tabbar 标签功能

(tabbar-mode t)

(global-set-key (kbd "<s-up>") 'tabbar-backward-group)

(global-set-key (kbd "<s-down>") 'tabbar-forward-group)

(global-set-key (kbd "<s-left>") 'tabbar-backward)

(global-set-key (kbd "<s-right>") 'tabbar-forward)

;; ibuffer - operate on buffers like dired

(global-set-key (kbd "C-x C-b") 'ibuffer)

;; ido - interactively do things with buffers and files.

(setq ido-confirm-unique-completion t)

(setq ido-default-buffer-method 'samewindow)

(setq ido-use-filename-at-point t)

(setq ido-enable-flex-matching t)

(ido-mode t)

(ido-everywhere t)

(set-face-background 'ido-first-match "green")

(set-face-foreground 'ido-subdir "blue3")

(setq ido-enable-flex-matching t)

;;goto-char:当你按 C-c a x (x 是任意一个字符) 时,光 标就会到下一个 x 处,再次按 x,光标就到下一个 x.

(defun wy-go-to-char (n char)

"Move forward to Nth occurence of CHAR.

Typing `wy-go-to-char-key' again will move forwad to the next Nthoccurence of CHAR."

(interactive "p/ncGo to char: ")

(search-forward (string char) nil nil n)

(while (char-equal (read-char) char)

(search-forward (string char) nil nil n))

(setq unread-command-events (list last-input-event)))

(global-set-key (kbd "C-c g") 'wy-go-to-char)

;;;;;;;;;;;;;;;;;;;;

;;C语言编辑

;;;;;;;;;;;;;;;;;;;;

;; 加载GLOBAL

(require 'xgtags)

;;(setq c-mode-hook '(lambda () (gtags-mode 1)))

;; 变量自动对

(global-set-key "/C-x/C-j" 'align)

;; 智能编译 & GDB

(require 'smart-compile)

(global-set-key [(f5)] 'smart-compile)

(global-set-key (kbd "<f6>") 'gdb)

(global-set-key (kbd "<f7>") 'gdb-many-windows)

;; 自动跳到第一个error

(setq compilation-auto-jump-to-first-error t)

(add-hook 'gdb-mode-hook

(lambda ()

(local-set-key "/C-u" 'comint-kill-input)

(local-set-key "/M-p" 'comint-previous-matching-input-from-input)))

;; Auto-complete 自动补全

(require 'auto-complete-config)

(add-to-list 'ac-dictionary-directories "/usr/local/share/emacs/site-lisp/ac-dict")

(ac-config-default)

(global-set-key [(control ?/)] 'ac-complete-gccsense)

;; CUA矩阵编辑模式

;; M-x cua-mod

;; 然后移动光标到矩阵左上角并使用 Ctrl-Enter

;; gccsense

;; (require 'gccsense)

;; 快速include一个系统头文件

(mapc

(lambda (mode)

(define-abbrev-table mode '(("inc" "" skeleton-include 1))))

'(c-mode-abbrev-table c++-mode-abbrev-table))

;; 输入 inc , 可以自动提示输入文件名称,可以自动补全.

(define-skeleton skeleton-include

"generate include<>" ""

> "#include <"

(completing-read "Include File:"

(mapcar #'(lambda (f) (list f ))

(apply 'append

(mapcar

#'(lambda (dir)

(directory-files dir))

(list "/usr/include"

"/usr/include/sys"

"/usr/local/include"

"/usr/lib/gcc/i486-linux-gnu/4.4/include"

"/usr/lib/gcc/i486-linux-gnu/4.4/include-fixed")))))">")

;; CEDET

(require 'xcscope)

(require 'cedet)

;; Semantic代码间跳转和自动补全

(semantic-load-enable-minimum-features)

(semantic-load-enable-code-helpers)

;;(semantic-load-enable-guady-code-helpers)

(semantic-load-enable-excessive-code-helpers)

(semantic-load-enable-semantic-debugging-helpers)

;; 可视化书签

(enable-visual-studio-bookmarks)

;; 代码折叠

(require 'semantic-tag-folding nil 'noerror)

(global-semantic-tag-folding-mode 1)

(define-key semantic-tag-folding-mode-map (kbd "C-c C--") 'semantic-tag-folding-fold-block)

(define-key semantic-tag-folding-mode-map (kbd "C-c C-+") 'semantic-tag-folding-show-block)

(define-key semantic-tag-folding-mode-map (kbd "C-_") 'semantic-tag-folding-fold-all)

(define-key semantic-tag-folding-mode-map (kbd "C-+") 'semantic-tag-folding-show-all)

;;配置Semantic的检索范围

(setq semanticdb-project-roots (list (expand-file-name "/")))

(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

)

)

(global-set-key [(meta ?/)] 'semantic-ia-complete-symbol-menu)

;;高亮光标处单词

(require 'highlight-symbol)

(global-set-key [(control f8)] 'highlight-symbol-at-point)

(global-set-key [f8] 'highlight-symbol-next)

(global-set-key [(shift f8)] 'highlight-symbol-prev)

(defun my-c-mode-common-hook()

(interactive)

(setq semantic-load-turn-everything-on t)

(require 'semantic-load)

(c-set-style "K&R")

(setq tab-width 8)

(setq indent-tabs-mode t)

(setq c-basic-offset 8)

;;(c-toggle-auto-state 1);自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐

(c-toggle-auto-newline 1)

(c-toggle-hungry-state 1);此模式下,当按Backspace时会删除最多的空格,使得if缩进正

(imenu-add-menubar-index);在菜单中加入当前Buffer的函数索引

(which-function-mode);在状态条上显示当前光标在哪个函数体内部

(c-toggle-auto-hungry-state 1)

;; (define-key c-mode-map [return] 'newline-and-indent)

(auto-fill-mode)

;; xgtags

;; Commonly keybingdings, etags style.

(global-set-key (kbd "<C-M-.>") 'xgtags-find-with-grep)

(global-set-key (kbd "<C-M-;>") 'xgtags-find-rtag)

;; Cscope style

(local-set-key "/C-cas" 'xgtags-find-symbol)

(local-set-key "/C-cad" 'xgtags-find-tag)

(local-set-key "/C-cac" 'xgtags-find-rtag)

(local-set-key "/C-caf" 'xgtags-find-file)

(local-set-key "/C-cai" 'xgtags-find-with-idutils)

(local-set-key "/C-can" 'xgtags-select-next-tag)

(local-set-key "/C-cap" 'xgtags-select-prev-tag)

(local-set-key "/C-cau" 'xgtags-pop-stack)

)

(add-hook 'c-mode-hook 'my-c-mode-common-hook)

(add-hook 'c++-mode-hook 'my-c-mode-common-hook)

;; 清除代码中不必要的空格和TAB

(global-set-key [f4] 'whitespace-cleanup)

;; 全屏

(defun my_fullscreen ()

(interactive)

(x-send-client-message nil 0 nil "_NET_WM_STATE" 32

'(2 "_NET_WM_STATE_FULLSCREEN" 0)))

(global-set-key [f11] 'my_fullscreen)

;;把这些缺省禁用的功能打开

(put 'set-goal-column 'disabled nil)

(put 'narrow-to-region 'disabled nil)

(put 'upcase-region 'disabled nil)

(put 'downcase-region 'disabled nil)

(put 'LaTeX-hide-environment 'disabled nil)

;; 用flymake检测C/C++语法

;;(autoload 'flymake-find-file-hook "flymake" "" t)

;;(add-hook 'find-file-hook 'flymake-find-file-hook)

;;(setq flymake-gui-warnings-enabled nil)

;;(setq flymake-log-level 0)

;; ORG模块

;;(require 'org-install)

;;(require 'org-publish)

;;(add-to-list 'auto-mode-alist '("//.org//'" . org-mode))

;;(add-hook 'org-mode-hook 'turn-on-font-lock)

;;(add-hook 'org-mode-hook

;;(lambda () (setq truncate-lines nil)))

;;;; 只高亮显示最后一个代表层级的*

;;(setq org-hide-leading-stars t)

;; 给已完成事项打上时间戳。可选note,附加注释

;;(setq org-log-done 'time)

;;(global-set-key "/C-cl" 'org-store-link)

;;;; C-c a进入日程表

;;(global-set-key "/C-ca" 'org-agenda)

;;(global-set-key "/C-cb" 'org-iswitchb)

;;(setq org-agenda-files (list "~/notes/todolist.org"))

;;

;;(require 'color-theme)

;;(color-theme-bharadwaj-slate)

;; GIT 版本管理

;;(setq load-path (cons (expand-file-name "/usr/share/doc/git-core/contrib/emacs") load-path))

;; (require 'vc-git)

;; (when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))

;; (require 'git)

;; (autoload 'git-blame-mode "git-blame"

;; "Minor mode for incremental blame for Git." t)

;; google go lang

;; (require 'go-mode-load)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐