Emacs Master Cultivation manual
Shortcut key
C-n, next line (shorthand: Nextline)
C-p, Previous line (shorthand: Previous line)
C-f, move one character Forward (shorthand: Forward)
C-b, one character backward (shorthand: backward)
C-k, delete from cursor position to end (shorthand: Kill)
C-a, back to the beginning of the line (shorthand: a is the beginning of the alphabet)
C-e, End of line (shorthand: End of line)
M - <, return to the beginning of the editing area (shorthand: <)
M - >, go to the last position in the editing area (shorthand: >)
C-v, flip down one screen
M-v, flip up one screen
Self contained documents: C-h t; Shorthand Help Tutorial
View the meaning of shortcut key: C-h k; Shorthand help keyword
View function definition and shortcut key binding: C-h f; Shorthand Help Function
First experience
Turn off the menu bar, toolbar, scroll bar, etc.:
(menu-bar-mode -1) (tool-bar-mode -1) (scroll-bar-mode -1)
The location of Emacs configuration files will be found in the following order:
- ~/.emacs
- ~/.emacs.d
- ~/.config/emacs/init.el
The first is a single file configuration; The second is more in line with engineering; The third applies only to versions ≥ 27. The tutorial will start with the first and gradually change to the second mode.
emacs configuration code
;;Turn off the startup interface (setq inhibit-startup-screen t) (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/"))) (setq package-check-signature nil) ;Signature verification fails occasionally (require 'package) ;; Initialize package manager (unless (bound-and-true-p package--initialized) (package-initialize)) ;; Refresh software source index (unless package-archive-contents (package-refresh-contents)) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package))
Managing extensions using use package
-
What is a use package
- Simple understanding, is a macro
- Manage plug-ins in a simpler and unified way
-
How to use it?
- Basic format, and give an example
;; The most concise format
(use-package restart-emacs);; Common formats
(use-package smooth-scrolling
:ensure t ; Are you sure you have installed
:defer nil ; Do you want to delay loading
:init (setq smooth-scrolling-margin 2) ; Initialization parameters
:config (smooth-scrolling-mode t) ; Basic configuration parameters
:bind ; Binding of shortcut keys
:hook) ;hook mode binding;; Recommended configurations (some from the official recommendations of use package)
(eval-and-compile
(setq use-package-always-ensure t) ; You do not need to manually add the: ensure t keyword for each package
(setq use-package-always-defer t) ; The default is delayed loading. You don't need to add each package manually: defer t
(setq use-package-always-demand nil)
(setq use-package-expand-minimally t)
(setq use-package-verbose t))
Change theme
(use-package gruvbox-theme :init (load-theme 'gruvbox-dark-soft t)) (use-package smart-mode-line :init (setq sml/no-confirm-load-theme t) (setq sml/theme 'respectful) (sml/setup))
Engineering management configuration
-
lisp/init-elpa.el is used to store Elpa and Package initialization
-
lisp/init-package.el is used to store installed extensions
-
lisp/init-ui.el is used to store configuration related to interface topics
-
First set the loaded target directory to the load path.
(add-to-list 'load-path (expand-file-name (concat user-emacs-directory "lisp")))
-
Each file exposes the name of external call through provide. For example:
(provide 'init-ui)
-
Then in init Call through require in the El file:
require 'init-ui
-
About custom configuration
It is recommended to write a separate file. When it is open source, the file will not be submitted to Git. For example, custom el(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
-
The following configurations will generate different configuration codes due to different operating systems, so it is necessary to judge the operating system.
(defconst *is-mac* (eq system-type 'darwin)) (defconst *is-linux* (eq system-type 'gnu/linux)) (defconst *is-windows* (or (eq system-type 'ms-dos) (eq system-type 'windows-nt)))
-
Solve the jam of Emacs on Windows by modifying the font:
(use-package emacs :if (display-graphic-p) :config ;; Font settings (if *is-windows* (progn (set-face-attribute 'default nil :font "Microsoft Yahei Mono 9") (dolist (charset '(kana han symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) charset (font-spec :family "Microsoft Yahei Mono" :size 12)))) (set-face-attribute 'default nil :font "Source Code Pro for Powerline 11")))
-
One point start configuration:
Set the system code to avoid random code everywhere.(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)
Set garbage collection threshold to speed up startup.
(setq gc-cons-threshold most-positive-fixnum)
-
Test start time:
Measurement of startup time through benchmark init package:(use-package benchmark-init :init (benchmark-init/activate) :hook (after-init . benchmark-init/deactivate))
Small TIPS:
-
Interrupt command input:
C-g when entering any command, you can abandon the command and continue to type through the shortcut key at any time. -
Replace yes/no with y/n:
(use-package emacs :config (defalias 'yes-or-no-p 'y-or-n-p))
-
Line number configuration:
(use-package emacs :config (setq display-line-numbers-type 'relative) (global-display-line-numbers-mode t))
Text editing
- Select / copy / cut / paste for text editing:
- Copy M-w
- Shear C-w
- Paste C-y;; Shorthand Yank
- Deletion of text editing
-
Scenario 1: delete C-k from the cursor position to the end of the line
-
Scenario 2: delete the current row
By default, there is no such shortcut key. You can install an extension, crux, which provides a series of optimization shortcut commands including this scenario.(use-package crux :bind ("C-c k" . crux-smart-kill-line))
-
Scenario 3: delete the first non empty character before / after at one time (delete continuous blank)
(use-package hungry-delete :bind (("C-c DEL" . hungry-delete-backward) ("C-c d" . hungry-delete-forward)))
-
Move the line / area of text editing up and down
(use-package drag-stuff :bind (("<M-up>". drag-stuff-up) ("<M-down>" . drag-stuff-down)))
-
Enhanced search for text editing
(use-package ivy :defer 1 :demand :hook (after-init . ivy-mode) :config (ivy-mode 1) (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)) (ivy-posframe-mode 1))) (use-package counsel :after (ivy) :bind (("M-x" . counsel-M-x) ("C-x C-f" . counsel-find-file) ("C-c f" . counsel-recentf) ("C-c g" . counsel-git))) (use-package swiper :after ivy :bind (("C-s" . swiper) ("C-r" . swiper-isearch-backward)) :config (setq swiper-action-recenter t swiper-include-line-number-in-search t))
-
Automatic completion of text editing
(use-package company :config (setq company-dabbrev-code-everywhere t company-dabbrev-code-modes t company-dabbrev-code-other-buffers 'all company-dabbrev-downcase nil company-dabbrev-ignore-case t company-dabbrev-other-buffers 'all company-require-match nil company-minimum-prefix-length 2 company-show-numbers t company-tooltip-limit 20 company-idle-delay 0 company-echo-delay 0 company-tooltip-offset-display 'scrollbar company-begin-commands '(self-insert-command)) (push '(company-semantic :with company-yasnippet) company-backends) :hook ((after-init . global-company-mode)))
-
Sequence change of text editing
The two characters before and after the cursor are interchanged C-t
The two words before and after the cursor are interchanged M-t -
Word count of text editing
- Entire Buffer statistics:
M-=
;; perhaps
M-x count-words-region - Selected area statistics:
;; Select first
M-x count-words
- Entire Buffer statistics:
-
Emacs common plug-ins
-
crux optimizes Emacs common operations
(use-package crux :bind (("C-a" . crux-move-beginning-of-line) ("C-c ^" . crux-top-join-line) ("C-x ," . crux-find-user-init-file) ("C-c k" . crux-smart-kill-line)))
-
Which key shortcut
When you press a key, it will prompt you the meaning of the next key. And wait for you to press.(use-package which-key :defer nil :config (which-key-mode))
-
Emacs window management
-
Buffer management of window management
Buffer switching: C-x b
Kill the current Buffer: C-x k
Batch management Buffer:C-x C-b ;; get into Buffer list d ;; Mark deletion u ;; Unmark current line U ;; Unmark all x ;; Perform operation ? ;; View key help
-
MiniBuffer interactive optimization of window management
The MiniBuffer displayed in the lower left corner has a large sight range, and it is more suitable to move to the central position.(use-package ivy-posframe :init (setq ivy-posframe-display-functions-alist '((swiper . ivy-posframe-display-at-frame-center) (complete-symbol . ivy-posframe-display-at-point) (counsel-M-x . ivy-posframe-display-at-frame-center) (counsel-find-file . ivy-posframe-display-at-frame-center) (ivy-switch-buffer . ivy-posframe-display-at-frame-center) (t . ivy-posframe-display-at-frame-center)))
-
Split screen of window management
Turn on horizontal split screen C-x 3
Open vertical split screen C-x 2
Keep only the current split screen C-x 1
Close current split screen C-x 0 -
Split screen width adjustment of window management
Increase height C-x^
Increase / decrease width C-X {C-X} -
Fast switching split screen of window management
By default, the following shortcut keys can be used to cycle and jump the window: C-x o -
Tab tab management of window management
C-x t 2 ;; New Tab
1 ;; Close other tabs
0 Close the current Tab
b ;; Open Buffer in a new Tab
Programming language environment configuration
Language Server Protocol Support for Emacs
Languages: Some languages have to be installed manually. Others can be installed with M-xlsp-install-server.