zoukankan      html  css  js  c++  java
  • 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 %? 
      时间:%T" :prepend t)
    
      ;; inbox 快速记录未归类的文本
      ("i" "Inbox" entry
        (file+headline "~/.emacs.d/document/Inboxs/Inbox.org" "Inbox")
        "* %U - %^{heading} %^g 
     %i 
    ")
    
      ;; 日志记录
      ("j" "Journal" entry
       (file+datetree "~/.emacs.d/document/Inboxs/Journal.org")
       "* %U - %^{heading} 
     %^g 
     %? 
     %i 
    ")
    
      ;; 笔记
      ("n" "Note" entry
       (file+headline "~/.emacs.d/document/Notes/Note1.org" "Notes")
       "* %^{heading} 
     %^g 
     %? 
     %i 
     时间:%U")
    
      ;; 博客
      ("b" "Blog" entry
       (file+headline "~/.emacs.d/document/Inboxs/Blog.org" "Blog Topics")
       "*  %^{博客名} 
     %^g 
     %? 
     时间:%U" :prepend t :clock-in t :clock-resume  t)
    
      ;; 读书记录
      ("r" "Book" entry
       (file+headline "~/.emacs.d/document/Inboxs/Book.org" "Book")
       "* %^{书名} 
     时间:%U 
     %? 
     %i 
    ":clock-in t :clock-resume  t)
    
      ;; 工作情况
      ("w" "Work" entry
       (file+headline "~/.emacs.d/document/Inboxs/Work.org" "Work")
       "* TODO [#B] %^{任务名} 
     时间:%U 
    ":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
          "\([。!?]\|……\|[.?!][]"')}]*\($\|[ 	]\)\)[ 	
    ]*")
    (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)
    
    
    
    
    ;;------------------------------代码测试部分-------------------------------
  • 相关阅读:
    k8s service定义与创建
    k8s service存在的意义
    k8s job控制器-执行一次性任务
    k8s CronJob定时任务
    k8s Daemonset功能
    k8s deployment控制器Replicaset
    k8s deployment删除
    k8s deployment控制器水平扩容
    k8s deployment发布失败回滚
    k8s deployment控制器:滚动升级 平滑过渡 零停机
  • 原文地址:https://www.cnblogs.com/niubidexiebiao/p/12636205.html
Copyright © 2011-2022 走看看