Alex's Slip-box

These are my org-mode notes in sort of Zettelkasten style

Emacs cheatsheet

:ID: BB17CF51-DA23-46BB-A641-7B9D599715E0

This is just a dump or random things I’ve learned how to do in Emacs but will probably forget.

# Evil mode (and then some)

# Movement

Command Description
0 beginning of line
^ beginning of non-whitespace
$ end of line
9j move down 9 lines
w move forward by word
b move backward by word
gg first line
G last line
C-u up half page
C-d down half page
f/ move forward to first “/” character
t/ move forward right before the first “/” character
; repeat that command again
H head of the screen
M middle of the screen
L last of the screen
} move forward by paragraph or block
{ move backwards by paragraph or block
* search for word under the cursor
# search backwards for word under cursor
/ search forward
? search backward
% find matching brace, paren, etc
ma mark a line in a file with marker “a”
`a after moving around, go back to the exact position of marker “a”
'a after moving around, go back to line of marker “a”
:marks view all the marks
'' go back to the last place you were before moving
g; go back to the last place edited
[{ go back to beginning of code block

# Editing

Command Description
A add to end of line
I insert at the beginning of the line
yy copy line
Y copy from cursor to end of line
cc change line
C change from cursor to end of line
cit change text inside html tag
ci' change text inside single quotes
ci{ change text inside curly brackets.
ci change text inside whatever
p paste after cursor
P paste before cursor
o add line below
O add line above
. repeat last command
r replace character
R replace. (overwrite) (good for columns of text)
J join line (cursor can be anywhere on line)

# Deleting text

Command Description
dd delete line
di' delete text inside single quotes (or inside whatever)
x delete char under cursor
X delete char before cursor
D delete from cursor to end of line
d$ delete from cursor to end of line
dtx delete up to x where x is the thing you want to delete up to.
dt space will delete up to first whitespace
df space will delete up to and including the first whitespace

# Visual mode

Command Description
v visual char mode
V visual line mode
C-v block visual mode

# Word Wrapping

auto-fill-mode is what you need. This will automatically wrap words after the line exceeds whatever value is set for fill-column

For example, turn it on for org-mode

(setq-default fill-column 80)
(add-hook 'org-mode-hook (lambda () (auto-fill-mode 1)))

fill-region does what is says

# Advising Functions

# After callback example

;; Save Org buffers after refiling
(advice-add 'org-refile :after 'org-save-all-org-buffers)

# Surrounding

Use Evil-surround s( to surround region (with parenthesis in this example)

vio
s'

cs' to replace surround (example using single quote, but can be anything)

# Selecting text within surround

vi [Option]

# Repeating text

  1. Select the region
  2. SHIFT I (evil insert line count)
  3. Type characters
  4. ESC (the repeated chars are added)

# Font

M-x menu-set-font offers a GUI font picker and size setter with previews.

# helm-projectile-find-file

This does fuzzy matching by default Start search query with a SPC to switch from fuzzy to exact match.

# Treesitter

Having this in emacs means syntax highlighting via a syntax tree rather than regex patters, better movement and hopefully faster.

# Mac

If using emacs plus, tree-sitter will be installed as a dependency of emacs v29+. See also https://github.com/d12frosted/homebrew-emacs-plus/pull/546

# Linux

Need to install tree sitter first, then build emacs v29 from source.

See also https://www.masteringemacs.org/article/how-to-get-started-tree-sitter

# Install Grammars

https://tree-sitter.github.io/tree-sitter/ Tree sitter needs grammars to work. Emacs needs to know where they are. The easiest way is to create a make telling emacs where the grammars are located (ie, git repo) then you can have emacs download and compile them.

(setq treesit-language-source-alist
    '((bash "https://github.com/tree-sitter/tree-sitter-bash")
      (css "https://github.com/tree-sitter/tree-sitter-css")
      (elisp "https://github.com/Wilfred/tree-sitter-elisp")
      (html "https://github.com/tree-sitter/tree-sitter-html")
      (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
      (json "https://github.com/tree-sitter/tree-sitter-json")
      (markdown "https://github.com/ikatyang/tree-sitter-markdown")
      (org "https://github.com/tree-sitter/tree-sitter-org")
      (ruby "https://github.com/ikatyang/tree-sitter-ruby")
      (scss "https://github.com/ikatyang/tree-sitter-scss")
      (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")
      (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")
      (vue "https://github.com/ikatyang/tree-sitter-vue")
      (yaml "https://github.com/ikatyang/tree-sitter-yaml")))

Then use treesit-install-language-grammar

Check if its working. This returns t if the language is supported, otherwise nil

(treesit-language-available-p 'typescript)

# New modes

You can map the old modes to the new ones. but this comes potentially at a price.

(setq major-mode-remap-alist
      '((typescript-mode . typescript-ts-mode)))

# Troubleshooting

# Performance issues (profiling)

Use the built in profiler.

  1. M-x profiler-start and select what you want to profile.
  2. Do the thing that is slow
  3. M-x profiler-stop
  4. M-x profiler-report
  5. Drill down into the items with TAB

# Freezes

# C g will break a loop

# Send kill cmd to trigger debugger

ps aux | grep -ie emacs | grep -v grep | awk '{print $2}' | xargs kill -SIGUSR2

See also https://emacs.stackexchange.com/a/649

# Reinstall a package

For example, delete and install org. Find org in the list and open. There’s a button to install it.

M-x package-delete RET org RET
M-x list-packages RET / n org RET

# Word Processing

# Spell check

# flyspell

See functions flyspell-

# aspell

# Dictionary

See functions dictionary-

# List key strokes

C-h l calls view-lossage. This does not update as keys are pressed, but gives you at static list of the 300 key presses.

# Exiting / Quit / Close

# When in client mode

This will close the client but keep the server running C-x C-c save-buffers-kill-terminal

:q in evil mode does the same thing

# Encryption

See also GPG

Search Results