Files
nix-config/home/base/desktop/editors/emacs

Emacs Editor

Emacs daemon:

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!

Why emacs?

  1. Explore the unknown, just for fun!
  2. Better support for Lisp-like Languages.
  3. Org Mode

zellij provides a more powerful and stable terminal experience, so here is zellij's terminal shortcuts I use frequently now:

Action Zellij's Shortcut
Floating Terminal Ctrl + <p> + <w>
Horizontal Split Terminal Ctrl + <p> + <d>
Vertical Split Terminal Ctrl + <p> + <n>
Open file tree sidebar SPC + o + p
Exit M-x C-c

Visual Modes

The same as neovim/vim:

Action Shortcut
Toggle visual mode v
Toggle visual block mode <Ctrl> + v (select a block vertically)

Text Manipulation

  • Add at the end of multiple lines: :normal A<text>

    • Execublock: :A<text>

    • visual block mode(ctrl + v)

    • Append text at the end of each line in the selected block

    • If position exceeds line end, neovim adds spaces automatically

  • Delete the last char of multivle lines: :normal $x

    • Execute $x on each line
    • visual mode(v)
    • $ moves cursor to the end of line
    • x deletes the character under the cursor
  • Delete the last word of multiple lines: :normal $bD

    • Execute $bD on each line
    • visual mode(v)
    • $ moves cursor to the end of line
    • b moves cursor to the beginning of the last word
    • D deletes from cursor to the end of line

Splitting and Buffers

Action Shortcut
Next Buffer (Tab) ]b
Previous Buffer (Tab) [b
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
Jump to Definition gd
Jump to References gD
(Un)Comment the selected context gc
(Un)Comment the current line gcc
Open filepath/URL at cursor gf
Find files by keyword in path <Space> + <Space>
Grep string in files (vertico + ripgrep) <Space> + sd

Text Manipulation

Action
Join Selection of Lines With Space J

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