;+=======================================================================+ ;| 單行代碼 | ;+=======================================================================+ (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) ;;------------------------------代碼測試部分-------------------------------