emacs-init.el配置
;+=======================================================================+ ;| 单行代码 | ;+=======================================================================+ (menu-bar-mode -1) ;; 隐藏菜单栏 (blink-cursor-mode 1) ;; 开启光标闪烁 (tool-bar-mode -1) ;; 隐藏工具栏 (scroll-bar-mode -1) ;; 滚动栏隐藏 (global-linum-mode -1) ;; 关闭行号 (show-paren-mode t) ;; 括号配对 (electric-pair-mode t) ;; 自动补全括号 (global-hl-line-mode 1) ;; 高亮当前行 (global-auto-revert-mode 1) ;; 自动加载外部修改过的文件 (delete-selection-mode 1) ;; 当你选中一段文字 之后输入一个字符会替换掉你选中部分的文字。 (fset 'yes-or-no-p 'y-or-n-p) ;; 简化yes no ;(setq user-mail-address "1434513612@qq.com") ;; 设置用户邮箱 (setq-default cursor-type 'bar) ;; 设置光标为线状 (setq user-full-name "xiebiao" ;; 设置用户名 frame-title-mode t ;; 在窗口的标题栏上显示文件名称 frame-title-format "emacs@%b" ;; 设置标题栏 inhibit-splash-screen t ;; 关闭启动画面 gnus-inhibit-startup-message t ;; 关闭引导界面 make-backup-files nil ;; 关闭自动备份文件~ backup-inhibited t ;; 不产生备份 auto-save-mode nil ;; 自动保存模式 truncate-lines nil ;; 自动换行 transient-mark-mode t ;; 高亮显示选择区域 blink-cursor-blinks 2 ;; 光标闪烁3次 global-font-lock-mode t ;; 进行语法加亮 show-paren-style 'parenthesis ;; 只高亮括号 require-final-newline t ;; 自动的在文件末增加一新行 track-eol t ;; 当光标在行尾上下移动的时候,始终保持在行尾。 c-default-style "awk" ;; 设置c++编译颜色风格 visible-bell t ;; 关闭提示音 ring-bell-function 'ignore ;; 没有提示音,也不闪屏 initial-frame-alist (quote ((fullscreen . maximized))) ;; 默认全屏 ) ;+=======================================================================+ ;| 子龙山人 | ;+=======================================================================+ (require 'package) (package-initialize) (setq package-archives '( ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/") ("gnu" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/") ("org" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/org/"))) (require 'cl) ;; Add Packages (defvar my/packages '( yasnippet ;; 自定义补全 monokai-theme ;; material-theme org-bullets ;; org-mode列表字符 ;htmlize ;; 导出html ;ox-reveal ;; 幻灯片 ;ycmd ;company-ycmd ;flycheck-ycmd company ;; 补全 cdlatex ;; latex auctex ;; latex which-key ;; 关键词提示 undo-tree ;; 撤销树 ;linum ;; 行号控制 neotree ;; 文件树 flycheck ;; 语言检查 better-defaults ggtags ;; 代码跳转 ivy counsel swiper ;; 搜索 avy ;; 快速定位跳转 iedit ;; 批量换名 window-numbering ;; buffer编号 expand-region ;; 快速选择区域 projectile ;; 项目文件管理 multiple-cursors ;; 多光标 ) "Default packages") (setq package-selected-packages my/packages) (defun my/packages-installed-p () (loop for pkg in my/packages when (not (package-installed-p pkg)) do (return nil) finally (return t))) (unless (my/packages-installed-p) (message "%s" "Refreshing package database...") (package-refresh-contents) (dolist (pkg my/packages) (when (not (package-installed-p pkg)) (package-install pkg)))) (add-to-list 'my/packages 'monokai-theme);; 安装主题 (load-theme ' monokai t) ;; monokai, material, atom-one-dark, dracula ;+=======================================================================+ ;| 字体代码 | ;+=======================================================================+ (set-frame-font "Source Code Pro 11") ;(set-default-font "Courier New 11") (set-fontset-font "fontset-default" 'unicode "仿宋 11") ;; for windows ;;org-table字体 (custom-set-faces '(org-table ((t (:foreground "#6c71c4" :family "Ubuntu Mono"))))) ;+=======================================================================+ ;| orgmode | ;+=======================================================================+ ;; GTD : 收集-处理-管理-执行-回顾-反省 (require 'org) ;; 设置todo关键词 (setq org-todo-keywords '((sequence "TODO(t!)" "DOING(i!)" "NEXT(n!)" "|" "DONE(d@/!)" "ABORT(a@/!)"))) ;; 设置todo颜色 (setq org-todo-keyword-faces '(("TODO" . (:foreground "red" :weight bold)) ("DOING" . (:foreground "yellow" :weight bold)) ("NEXT" . (:foreground "orange" :weight bold)) ("DONE" . (:foreground "green" :weight bold)) ;;完成 ("ABORT" . (:foreground "ForestGreen"));;异常终止 ));red ForestGreen Goldenrod OrangeRed Brown green orange magenta ;yellow gray white DarkOrange DodgerBlue SkyBlue ;; 优先级范围和默认任务的优先级 (setq org-highest-priority ?A) (setq org-lowest-priority ?E) (setq org-default-priority ?B) ;; 优先级醒目外观 (setq org-priority-faces '((?A . (:foreground "DarkOrange" :weight bold)) (?B . (:foreground "yellow" :weight bold)) (?C . (:foreground "DarkGreen" :weight bold)) (?D . (:foreground "SkyBlue" :weight bold)) (?E . (:foreground "black" :weight bold)) ));;(?B . (:background "DarkOrange" :foreground "white" :weight bold)) ;; 设置标签 (setq org-tag-alist '(("read" . ?r) ("work" . ?w) ("study" . ?s) ("program" . ?p) ("cpp" . ?c) ("mind" . ?m) ("idea" . ?i) ("leetcode". ?l))) (setq org-src-fontify-natively t);; 添加 Org-mode 文本内语法高亮 ;(setq default-major-mode 'org-mode) ;;设置初始目录为project项目目录 (setq default-directory "~/.emacs.d/document/Orgmode") ;; 设置 org-agenda 打开快捷 (global-set-key (kbd "C-c a") 'org-agenda) ;; 设置默认的笔记 ;(setq org-default-notes-file "~/.emacs.d/document/Inboxs/Inbox.org") ;; orgmode子弹符号 (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)));;需要安装org-bullets包 ;; 设置默认 Org Agenda 文件目 方法二 (setq org-agenda-files '("~/.emacs.d/document/GTD/Task.org" "~/.emacs.d/document/GTD/Plan.org" "~/.emacs.d/document/GTD/Todo.org")) ;+=======================================================================+ ;| org中插入截图 | ;+=======================================================================+ ;; 让图片不要真实大小显示 (setq org-image-actual-width nil) ;; 截图函数 (defun my-org-screenshot () "Take a screenshot into a time stamped unique-named file in the same directory as the org-buffer and insert a link to this file." (interactive) (setq filename (concat (make-temp-name (concat (buffer-file-name) "_" (format-time-string "%Y%m%d_%H%M%S_")) ) ".png")) (shell-command "snippingtool /clip") (shell-command (concat "powershell -command \" Add-Type -AssemblyName System.Windows.Forms; if ($([System.Windows.Forms.Clipboard]::ContainsImage())) {$image = [System.Windows.Forms.Clipboard]::GetImage(); [System.Drawing.Bitmap]$image.Save('" filename "', [System.Drawing.Imaging.ImageFormat]::Png); Write-Output 'clipboard content saved as file'} else { Write-Output 'clipboard does not contain image data'}\"")) (insert (concat "[[file:" filename "]]")) (org-display-inline-images)) ;; 绑定快捷键C-x C-a (define-key org-mode-map (kbd "C-x C-a") 'my-org-screenshot) ;+=======================================================================+ ;| capture | ;+=======================================================================+ (global-set-key (kbd "C-c c") 'org-capture);;打开capture的快捷键 ;; 设置capture模板 (setq org-capture-templates '( ;; agenda ;("a" "Agenda" table-line ; (file "~/.emacs.d/document/Orgmode/Agenda.org") ; "| %^{项目} | %^{姓名} | %^{手机号}| %U |")) ;; 插入链接 ("l" "Links " entry (file+headline "~/.emacs.d/document/Inboxs/Link.org" "Links") "* %^L" :prepend t) ;; todo 项目 ("t" "ToDo" entry (file+datetree "~/.emacs.d/document/GTD/Todo.org") "* TODO %? \n 时间:%T" :prepend t) ;; inbox 快速记录未归类的文本 ("i" "Inbox" entry (file+headline "~/.emacs.d/document/Inboxs/Inbox.org" "Inbox") "* %U - %^{heading} %^g \n %i \n") ;; 日志记录 ("j" "Journal" entry (file+datetree "~/.emacs.d/document/Inboxs/Journal.org") "* %U - %^{heading} \n %^g \n %? \n %i \n") ;; 笔记 ("n" "Note" entry (file+headline "~/.emacs.d/document/Notes/Note1.org" "Notes") "* %^{heading} \n %^g \n %? \n %i \n 时间:%U") ;; 博客 ("b" "Blog" entry (file+headline "~/.emacs.d/document/Inboxs/Blog.org" "Blog Topics") "* %^{博客名} \n %^g \n %? \n 时间:%U" :prepend t :clock-in t :clock-resume t) ;; 读书记录 ("r" "Book" entry (file+headline "~/.emacs.d/document/Inboxs/Book.org" "Book") "* %^{书名} \n 时间:%U \n %? \n %i \n":clock-in t :clock-resume t) ;; 工作情况 ("w" "Work" entry (file+headline "~/.emacs.d/document/Inboxs/Work.org" "Work") "* TODO [#B] %^{任务名} \n 时间:%U \n":clock-in t :clock-resume t) )) ;+=======================================================================+ ;| C++配置 | ;+=======================================================================+ (global-set-key [f11] 'gdb) (global-set-key [f10] 'gud-gdb) (global-set-key [f9] 'compile-file-gcc) (global-set-key [f12] 'compile-file-g++) (defun compile-file-gcc () (interactive) ; (compile (format "g++ -o %s %s -lm -Wall -g -std=c++11 -Ofast" (compile (format "gcc -o %s %s -lm -Wall -g && c.exe" (file-name-sans-extension (buffer-name))(buffer-name) (file-name-sans-extension (buffer-name)))) ) (defun compile-file-g++ () (interactive) (compile (format "g++ -o %s %s -lm -Wall -g -std=c++11 -O2 && t.exe" (file-name-sans-extension (buffer-name))(buffer-name) (file-name-sans-extension (buffer-name))))) ;+=======================================================================+ ;| company | ;+=======================================================================+ (require 'company) (add-hook 'after-init-hook 'global-company-mode) ;; 全局开启 (global-company-mode t) (setq company-idle-delay 0.1 ;菜单延迟 company-minimum-prefix-length 2 ;开始补全字数 company-require-match nil company-dabbrev-ignore-case nil company-dabbrev-downcase nil company-show-numbers t ;显示序号 company-transformers '(company-sort-by-backend-importance) company-continue-commands '(not helm-dabbrev)) ;; 补全快捷键 (global-set-key (kbd "<C-tab>") 'company-complete) (global-set-key (kbd "RET") 'newline-and-indent) ;; 补全菜单选项快捷键 (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) ;; Company 有时候补全功能并不是非常理想,这时就可以使用 Hippie Expand 来完成补全 (setq hippie-expand-try-function-list '(try-expand-debbrev try-expand-debbrev-all-buffers try-expand-debbrev-from-kill try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-complete-lisp-symbol-partially try-complete-lisp-symbol)) ;+=======================================================================+ ;| Latex | ;+=======================================================================+ ;; cdlatex 模块 (require 'cdlatex) (add-hook 'LaTeX-mode-hook 'turn-on-cdlatex) (add-hook 'LaTex-mode-hook 'turn-on-reftex) ;; outline 设置 (outline-minor-mode t) (setq outline-minor-mode-prefix [(control o)]) (add-hook 'LaTex-mode-hook 'outline-minor-mode) (add-hook 'LaTex-mode-hook 'outline-hide-body) ;;outline 好像没有效果 ;; 默认编辑器设置 ;(setq TeX-command-default "XeLaTeX") ;(setq TeX-save-query nil ) ;(setq TeX-show-compilation t);;可用代码 ;;----------- 新加的代码,如果有影响可以删除---; (load "auctex.el" nil t t) (setq TeX-output-view-style (quote (("^pdf$" "." "evince %o %(outpage)")))) ;(add-hook 'LaTeX-mode-hook ; (lambda() ; (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t)) ; (setq TeX-command-default "XeLaTeX"))) (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) (setq preview-scale-function 1.3) (setq LaTeX-math-menu-unicode t) (setq TeX-insert-braces nil) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) ;;Auctex for Latex (add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar) (add-hook 'LaTeX-mode-hook 'turn-on-auto-fill) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (add-hook 'LaTeX-mode-hook (lambda() ;;调用latex命令 (add-to-list 'TeX-command-list (list "LaTeX" "latex %s.tex" 'TeX-run-command nil t)) ;;调用dvipdfmx命令 (add-to-list 'TeX-command-list (list "dvi2pdf" "dvipdfmx %s.dvi" 'TeX-run-command nil t)) ;;调用pdflatex命令;;调用pdflatex命令;;调用pdflatex命令 (add-to-list 'TeX-command-list (list "pdf Latex" "pdflatex %s.tex" 'TeX-run-command nil t)) ; View PDF (add-to-list 'TeX-command-list (list "View pdf" "start .\\\"%s.pdf\""'TeX-run-command nil t)) ;;设置环境为xelatex (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t)) ;;(setq TeX-command-default "XeLaTeX") ;;(setq TeX-save-query nil ) ;;(setq TeX-show-compilation t) )) ;;======================== latex-math-mode ================= ;; latex-math-mode (add math symbols to menu and shortcuts) ;; So that you can use, e.g., `a, to input \alpha. You may also define ;; your own customized shortcuts by setting the variable ;; LaTeX-math-list before loading LaTeX-math-mode. ;; to enable maths support (setq LaTeX-math-mode t) (setq TeX-electric-escape t) ;; you may like it or dislike it. ;; I found it useful when inputting repeated commands -- you just ;; need to type \ and ENTER to repeat the last latex command. (add-hook 'LaTeX-mode-hook 'latex-math-mode) ; with AUCTeX LaTeX mode (add-hook 'latex-mode-hook 'latex-math-mode) ; with Emacs latex mode (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) ;; ===================在.org文档中使用latex=========== (require 'ox-latex) (setq org-latex-create-formula-image-program 'dvipng) (org-babel-do-load-languages 'org-babel-load-languages '( (R . t) (dot . t) (haskell . t) (python . t) (C . t) (emacs-lisp . nil) (latex . t) )) ;+=======================================================================+ ;| 自动保存 | ;+=======================================================================+ (defgroup auto-save nil "Auto save file when emacs idle." :group 'auto-save) (defcustom auto-save-idle 0.1;;!!!!!!!!!!!! "The idle seconds to auto save file." :type 'integer :group 'auto-save) (defcustom auto-save-slient nil "Nothing to dirty minibuffer if this option is non-nil." :type 'boolean :group 'auto-save) (setq auto-save-default nil) ;; 前方高能核心代码, 请集中注意力 (defun auto-save-buffers () (interactive) (let ((autosave-buffer-list)) (save-excursion (dolist (buf (buffer-list)) (set-buffer buf) (if (and (buffer-file-name) (buffer-modified-p)) (progn (push (buffer-name) autosave-buffer-list) (if auto-save-slient (with-temp-message "" (basic-save-buffer)) (basic-save-buffer)) ))) (unless auto-save-slient (cond ((= (length autosave-buffer-list) 1) (message "# Saved %s" (car autosave-buffer-list))) ((> (length autosave-buffer-list) 1) (message "# Saved %d files: %s" (length autosave-buffer-list) (mapconcat 'identity autosave-buffer-list ", ")))))))) (defun auto-save-enable () (interactive) (run-with-idle-timer auto-save-idle t #'auto-save-buffers)) (auto-save-enable);; 开启自动保存功能 (setq auto-save-slient t);; 自动保存的时候静悄悄的, 不要打扰我 ;+=======================================================================+ ;| 杂碎的代码 | ;+=======================================================================+ ;; 记住光标上次打开文件时的位置 (require 'saveplace) (save-place-mode 1) ;; 时间,窗口 ;(display-time-mode 1) ;; 常显 ;(setq display-time-24hr-format t) ;;格式 ;(setq display-time-day-and-date t) ;;显示时间、星期、日期 ;;(set-frame-parameter (selected-frame) 'alpha (list 85 50));; 设置屏幕透明 ;;(set-frame-width (selected-frame) 77);;设置初始窗口宽度 ;;(set-frame-height (selected-frame) 34);;设置初始窗口高度 ;; 防止页面滚动时跳动scroll-margin 3可以在靠近屏幕边沿3行时就开始滚动,可以很好的看到上下文。 (setq scroll-step 1 scroll-margin 3;;可以在靠近屏幕边沿3行时就开始滚动 scroll-conservatively 10000);;设置为每次翻滚一行,可以使页面更连续 ;;鼠标滚轮,默认的滚动太快,这里改为3行 (defun up-slightly () (interactive) (scroll-up 1)) (defun down-slightly () (interactive) (scroll-down 1)) (global-set-key [mouse-4] 'down-slightly) (global-set-key [mouse-5] 'up-slightly) ;;设置最近访问文件可见 (require 'recentf) (recentf-mode t) (setq recentf-max-saved-items 200 recentf-max-menu-items 15);; 设置最近访问文件数量为10 ;; 打开最近文件快捷键,这个快捷键绑定可以用之后的插件 counsel 代替 (global-set-key (kbd "C-x C-r") 'recentf-open-files) ;; 设定删除保存记录为200,可以方便以后无限恢复 (setq kill-ring-max 200) ;; 窗口管理:将当前窗口分割为上下两个,并切换到另外一个 buffer (defun split-window-new-buffer () (interactive) (split-window-below) (call-interactively 'switch-to-buffer)) ;; 代码缩进,一次重新缩进全部缓冲区的代码 (defun indent-buffer() (interactive) (indent-region (point-min) (point-max))) (defun indent-region-or-buffer() (interactive) (save-excursion (if (region-active-p) (progn (indent-region (region-beginning) (region-end)) (message "Indent selected region.")) (progn (indent-buffer) (message "Indent buffer."))))) (global-set-key (kbd "C-M-\\") 'indent-region-or-buffer) ;; 窗口光标后退,C-x o的相反操作 (defun prev-window () (interactive) (other-window -1)) (global-set-key (kbd "C-x p") 'prev-window) ;; 加载延迟模块start (require 'dired-x) ;; 使得 C-x C-j 就可以进入当前文件夹的所在路径 ;; 让 Emacs 重用唯一的一个缓冲区作为 Dired Mode 显示专用缓冲区 (put 'dired-find-alternate-file 'disabled nil) ;; 主动加载 Dired Mode ;; (require 'dired) ;; (defined-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) ;; 延迟加载 (with-eval-after-load 'dired (define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file)) ;; 递归删除和复制目录 (setq dired-recursive-deletes 'always) (setq dired-recursive-copies 'always) (setq gc-cons-threshold most-positive-fixnum);设置垃圾回收阈值,加速启动速度。 (auto-image-file-mode t);; 打开图片显示功能 ;; 快速打开link.org (defun open-key-info-file1 () (interactive) (split-window-horizontally) (find-file-other-window "~/.emacs.d/document/Inboxs/Link.org") ;;(outline-mode) (hide-body)) (global-set-key (kbd "C-x C-1") 'open-key-info-file1) ;; 快速打开emacskey.org (defun open-key-info-file2 () (interactive) (split-window-horizontally) (find-file-other-window "~/.emacs.d/document/Orgmode/emacsKeys.org") ;;(outline-mode) (hide-body)) (global-set-key (kbd "C-x C-2") 'open-key-info-file2) ; 设置打开init.el文件的快捷键 (defun open-my-init-file() (interactive) (find-file "~/.emacs.d/init.el")) (global-set-key (kbd "<f7>") 'open-my-init-file); 设置init.el文件的快捷键 ;; 剪切,复制,粘贴,全选 ;(cua-mode t) ;; window的剪切粘贴 (global-set-key (kbd "C-z") 'undo);; 撤消 (global-set-key (kbd "C-q") 'mark-whole-buffer);; 全选ctrl+a ;; 自定义缩写补全表 (setq-default abbrev-mode t) (define-abbrev-table 'global-abbrev-table ' ( ("8zl" "zilongshanren") ("yasn" "yas-new-snippet") )) ;; 初始显示界面 (setq initial-scratch-message nil) (setq initial-major-mode 'text-mode) ;(setq initial-scratch-message "hello") ;; 启动后直接显示工作目录 (setq initial-buffer-choice "c:/User/Project/EmacsProject/t.cpp") ;; 启动优化 ;;增加启动期间垃圾回收的阈值,启动结束后还原。 ;;设置启动时file-name-handler-alist为nil (defvar mage--file-name-handler-alist file-name-handler-alist) (defun mage|pre-init() (setq gc-cons-threshold 402653184 gc-cons-percentage 1.0 file-name-handler-alist nil)) (defun mage|post-init () (setq gc-cons-threshold 16777216 gc-cons-percentage 0.15 file-name-handler-alist mage--file-name-handler-alist)) (add-hook 'before-init-hook #'mage|pre-init) (add-hook 'emacs-startup-hook #'mage|post-init) ;自定义缩进长度 (setq standard-indent 4) ;; 设置默认tab宽度 (setq tab-width 4 indent-tabs-mode t c-basic-offset 4) (setq default-tab-width 4) ;; 设置 sentence-end 可以识别中文标点 (setq sentence-end "\\([。!?]\\|……\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*") (setq sentence-end-double-space nil) ;; 语法高亮 (setq font-lock-maximum-decoration t) (setq font-lock-global-modes '(not shell-mode text-mode));;除 shell-mode 和 text-mode 之外的模式中使用语法高亮。 (setq font-lock-verbose t) (global-font-lock-mode 1) ;; ;; 设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择 (set-face-foreground 'highlight "white") (set-face-background 'highlight "DarkOrange");;#3e9d6a (set-face-foreground 'region "cyan") (set-face-background 'region "gray10") (set-face-foreground 'secondary-selection "skyblue");;skyblue (set-face-background 'secondary-selection "darkblue");;darkblue ;+=======================================================================+ ;| ivy counsel swiper | ;+=======================================================================+ ;; ivy counsel swiper (require 'ivy) (ivy-mode 1) (setq ivy-use-virtual-buffers t) (setq enable-recursive-minibuffers t) ;; enable this if you want swiper to use it ;; (setq search-default-mode #'char-fold-to-regexp) (global-set-key (kbd "<f6>") 'ivy-resume) (define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history) ;; Ivy-based interface to standard commands ;;(global-set-key "\C-s" 'swiper-isearch) (global-set-key (kbd "C-s") 'swiper) (global-set-key (kbd "M-x") 'counsel-M-x) (global-set-key (kbd "C-x C-f") 'counsel-find-file) (global-set-key (kbd "M-y") 'counsel-yank-pop) (global-set-key (kbd "<f2> f") 'counsel-describe-function) (global-set-key (kbd "<f2> v") 'counsel-describe-variable) (global-set-key (kbd "<f2> l") 'counsel-find-library) (global-set-key (kbd "<f1> i") 'counsel-info-lookup-symbol) (global-set-key (kbd "<f1> u") 'counsel-unicode-char) (global-set-key (kbd "<f1> j") 'counsel-set-variable) (global-set-key (kbd "C-x b") 'ivy-switch-buffer) (global-set-key (kbd "C-c v") 'ivy-push-view) (global-set-key (kbd "C-c V") 'ivy-pop-view) ;; Ivy-based interface to shell and system tools (global-set-key (kbd "C-x l") 'counsel-locate) (global-set-key (kbd "C-c J") 'counsel-file-jump) ;; Ivy-resume and other commands (global-set-key (kbd "C-c C-r") 'ivy-resume) (global-set-key (kbd "C-c b") 'counsel-bookmark) (global-set-key (kbd "C-c d") 'counsel-descbinds) ;(global-set-key (kbd "C-c g") 'counsel-git) (global-set-key (kbd "C-c o") 'counsel-outline) (global-set-key (kbd "C-c t") 'counsel-load-theme) (global-set-key (kbd "C-c F") 'counsel-org-file) (setq ivy-use-virtual-buffers t ivy-initial-inputs-alist nil ivy-count-format "%d/%d " enable-recursive-minibuffers t ivy-re-builders-alist '((t . ivy--regex-ignore-order))) (setq swiper-action-recenter t swiper-include-line-number-in-search t) ;; counsel-gtags 设置 (add-hook 'c-mode-hook 'counsel-gtags-mode) (add-hook 'c++-mode-hook 'counsel-gtags-mode) (with-eval-after-load 'counsel-gtags (define-key counsel-gtags-mode-map (kbd "M-t") 'counsel-gtags-find-definition) (define-key counsel-gtags-mode-map (kbd "M-r") 'counsel-gtags-find-reference) (define-key counsel-gtags-mode-map (kbd "M-s") 'counsel-gtags-find-symbol) (define-key counsel-gtags-mode-map (kbd "M-,") 'counsel-gtags-go-backward)) ;+=======================================================================+ ;| 其他小模块 | ;+=======================================================================+ ;; 调整背景色 ;(set-background-color "grey15");; 背景颜色 ;(set-foreground-color "grey");;颜色 ;; 单词补全 ;(add-to-list 'load-path "~/.emacs.d/elpa/company-english-helper") ;(require 'company-english-helper);可以用 ;M-x toggle-company-english-helper 激活 ;; 幻灯片模块oxreveal ;(require 'ox-reveal) ;; linum ;(global-linum-mode t) ;(setq linum-format "%4d ");;行号控制4位数 ;; yasnippet自定义补全 (require 'yasnippet) (yas-global-mode 1) ;; flycheck (require 'flycheck) (add-hook 'elpy-mode-hook 'flycheck-mode) (global-flycheck-mode t) ;设置系统的编码,避免各处的乱码。 (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) ;; which-key (require 'which-key) (which-key-mode t) (which-key-setup-side-window-bottom) ;; undo-tree (require 'undo-tree) (global-undo-tree-mode) (defadvice undo-tree-visualizer-mode (after undo-tree-face activate) (buffer-face-mode)) ;; 快速选择区域 (require 'expand-region) (global-set-key (kbd "C-=")'er/expand-region) ;;开启buffer编号 ;(require 'window-numbering) (window-numbering-mode 1) (setq window-numbering-assign-func (lambda () (when (equal (buffer-name) "*Calculator*") 9))) ;; iedit (require 'iedit) (define-key global-map (kbd "C-c ;") 'iedit-mode) ;; neotree (require 'neotree) (setq neo-smart-open t) (setq neo-window-fixed-size nil) (setq-default neo-show-hidden-files nil) (global-set-key [f4] 'neotree-delete-node) (global-set-key [f8] 'neotree-toggle) ;; avy (global-set-key (kbd "C-:") 'avy-goto-char) ;; 跳转一个字符 (global-set-key (kbd "C-'") 'avy-goto-char-2) ;; 跳转两个字符 (global-set-key (kbd "M-g f") 'avy-goto-line) ;; 跳转行 (global-set-key (kbd "M-g w") 'avy-goto-word-1) ;; 跳转词,一个输入 (global-set-key (kbd "M-g e") 'avy-goto-word-0) ;; 跳转词,不需输入 (avy-setup-default) (global-set-key (kbd "C-c C-j") 'avy-resume) ;; projectile (projectile-mode 1) (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) ;;multiple-cursor (require 'multiple-cursors) (global-set-key (kbd "C-c m c") 'mc/edit-lines) (global-set-key (kbd "C->") 'mc/mark-next-like-this) (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) (global-set-key (kbd "C-M->") 'mc/skip-to-next-like-this) (global-set-key (kbd "C-M-<") 'mc/skip-to-previous-like-this) (global-unset-key (kbd "M-<down-mouse-1>")) (global-set-key (kbd "M-<mouse-1>") 'mc/add-cursor-on-click) ;; gtags (setenv "PATH" (concat "C:/Program Files/Emacs26.3/.emacs.d/elpa/global-6.6.3/bin;" (getenv "PATH"))) (setq exec-path (append exec-path '("C:/Program Files/Emacs26.3/.emacs.d/elpa/global-6.6.3/bin"))) (add-to-list 'load-path "~/.emacs.d/elpa/gtags/") (require 'gtags) (global-set-key (kbd "C-c f") 'ggtags-find-file) (global-set-key (kbd "M-.") 'ggtags-find-tag-dwim) ;;--------------- (autoload 'gtags-mode "gtags" "" t) (add-hook 'gtags-mode-hook '(lambda () ; Local customization (overwrite key mapping) (define-key gtags-mode-map "\C-f" 'scroll-up) (define-key gtags-mode-map "\C-b" 'scroll-down) )) (add-hook 'gtags-select-mode-hook '(lambda () (setq hl-line-face 'underline) (hl-line-mode 1) )) (add-hook 'c-mode-common-hook 'gtags-mode) (add-hook 'c++-mode-common-hook 'gtags-mode) ;(add-hook 'java-mode-common-hook 'gtags-mode) ; Customization (setq gtags-suggested-key-mapping t);; 以建议的使用键绑定 (setq gtags-auto-update t) ;(setq ggtags-global-ignore-case t) (setq ggtags-sort-by-nearness t) ;;------------------------------代码测试部分-------------------------------