Files
nix-config-ryan4yin/home/base/desktop/editors/emacs/README.md
2024-01-07 23:23:48 +08:00

6.8 KiB
Raw Blame History

Emacs Editor

Why emacs?

  1. Explore the unknown, just for fun!
  2. Org Mode
  3. Lisp Coding
  4. A top-level tutorial for Emacs(Chinese): https://nyk.ma/tags/emacs/
  5. A Beginner's Guide to Emacs(Chinese): https://github.com/emacs-tw/emacs-101-beginner-survival-guide

Screenshot

Install or Update

After deploying this nix flake, run the following command to install or update emacs:

doom sync

when in doubt, run doom sync!

Testing

via Justfile located at the root of this repo.

# testing
just emacs-test
jsut emacs-purge
just emacs-reload

# clear test data
just emacs-clear

Cheetsheet

Here is the cheetsheet related to my DoomEmacs configs. Please read vim's common cheetsheet at ../README.md before reading the following.

Basics

Terminal(vterm) is useful in GUI mode, I use Zellij instead in terminal mode.

We can run any emacs command via M-x(Alt + x).

Action Shortcut
Popup Terminal(vterm) SPC + o + t
Open Terminal SPC + o + T
Open file tree sidebar SPC + o + p
Exit M-x C-c

Window Navigation

Action Shortcut
Split a window vertically and horizontally SPC w v/s
Move to a window in a specific direction Ctrl-w + h/j/k/l
Move a window to a specific direction Ctrl-w + H/J/K/L
Move to the next window SPC w w
Close the current window SPC w q
Rebalance all windows SPC w =
Set window's width(columns) 80 SPC w | (the Vertical line is escaped due to markdown's limits)
Set window's height 30 SPC w _

File Tree

Action Shortcut
Resize Treemacs's window > & <
Extra Wide Window W
Rename R
Delete File/Direcoty d
New File cf
New Directory cd
Go to parent u
Run shell command in for current node !
Refresh file tree gr
Copy project-path into pasteboard yp
Copy absolute-path into pasteboard ya
Copy relative-path into pasteboard yr
Copy file to another location yf
Move file to another location m
quit q

And bookmarks:

  • Add bookmarks in treemacs: b
  • Show Bookmark List: SPC s m

Splitting and Buffers

Action Shortcut
Buffer List <Space> + ,
Save all buffers(Tab) <Space> + b + S
Kill the current buffer <Space> + b + k
Kill all buffers <Space> + b + K

Editing and Formatting

Action Shortcut
Format Document <Space> + cf
Code Actions <Space> + ca
Rename <Space> + cr
Opening LSP symbols <Space> + cS
Show all LSP Errors <Space> + c + x/X
Show infinite undo history(really useful!) <Space> + s + u
Open filepath/URL at cursor gf
Find files by keyword in path <Space> + <Space>
Grep string in files (vertico + ripgrep) <Space> + sd

Image Preview(GUI mode only)

Use -, + to resize the image, r to rotate the image.

Search & replace

SPC s p foo C-; E C-c C-p :%s/foo/bar/g RET Z Z
  1. SPC s p: search in project
  2. foo: the keyword to search
  3. C-; E: exports what youre looking at into a new buffer in grep-mode
  4. C-c C-p to run wgrep-change-to-wgrep-mode to make the search results writable.
  5. :%s/foo/bar/g RET: replace in the current buffer(just like neovim/vim)
  6. Z Z: to write all the changes to their respective files

Projects

easily switch between projects without exit emacs!

Action
Switch between projects SPC + p + p
Browse the current project SPC + p + .
Add new project SPC + p + a

Workspaces

Very useful when run emacs in daemon/client modes

Action
Switch between workspaces M-1/2/3/...(Alt-1/2/3/..)
New Workspace SPC + TAB + n
New Named Workspace SPC + TAB + N
Delete Workspace SPC + TAB + d
Display Workspaces bar blow SPC + TAB + TAB