- Learn to use emacsclient and set up a daemon, your Emacs experience will improve a lot and you’ll save a lot of time.
- Learn to use Emacs’s inner file manager.
- Try to avoid terminal version of emacs when possible.
SPC h w
helps you find keyboard shortcuts for different commands, andSPC h k
tells you how key combinations translate to emacs commands.- Github doesn’t render org files very well. It’s best that you download this file and open it in Emacs. If not possible, use the html version made with org-html-themes
C
- “Control” keyM
- “Alt” or “Option” keyS
- “Super” or “Command” keySPC
- “Space” key
SPC f s
for saving the current fileSPC :
for entering a commandSPC q q
to close EmacsSPC f D
to delete this file
SPC p p
to open a projectSPC SPC
to open a file in a projectSPC o p
to open the file explorerSPC o E
to open the shell (eshell) in fullscreenSPC o e
to open the shell (eshell) in a popup windowSPC f r
recently visited filesSPC f R
recently visited files in a projectM-x projectile-discover-projects-in-directory
to find projects within given folder using ProjectileM-x projectile-discover-projects-in-search-path
to find projects in the folder defined by theprojectile-project-search-path
variable using Projectile
- Dired (Directory Editor) is how you interfaces with a directory
- Press
C-x d
to open dired. - Use
RET
to go to a folder or open a file. - Use
-
for going one folder back - Use
+
for creating a new directory - Use
d
to mark the files for deletion, pressx
to delete. - Use
M
to change permissions - Use
o
to sort by modes. - Use
O
to change the owner. - Use
m
to mark andu
to unmark files or directories. U
to unselect all- Use
t
to invert the selection. t
to switch between files and directories- Use
C
to copy. - Use
R
to move. - Move with
h
,j
,k
,l
- Toggle
(
for simple view SPC .
to create or find a file*
to select all directories.C
copy to another windowR
move to another windowdired-do-what-i-mean-target
set to truei
to edit file/dir name
- Buffers are a special concept in emacs they can be terminals, files, directories, etc
SPC b b
to open another buffer- workspace buffer
SPC b B
you can see all the bufferSPC ,
to switch buffers (its an alias)SPC SHIFT ,
to switch to all buffersSPC b X
You can create a scratch bufferSPC b s
to save and name it
SPC w v
window split verticallySPC w s
window split horizonalSPC w w
to switch windowsSPC w q
to close window, frame, quit EMACS if last frameSPC w +
andSPC w -
to increase and decrease window heightSPC w >
andSPC w <
to increase and decrease window width- You can use vim motion keys to navigate between open windows for example
SPC w H
moves the window to the left. - Windows are panes in your screen
SPC TAB n
New workspaceSPC TAB N
Newly named workspaceSPC TAB [
Previous workspaceSPC TAB ]
Next workspaceSPC TAB d
Remove workspaceSPC TAB R
Restore last sessionM-1
Switch to workspace 1M-2
Switch to workspace 2 and so forth.
SPC f p
to open the config.- To add a package, add the package to
.doom.d/package.el
- Then close and
doom refresh
- Then go to
.doom.d/config.el
to configure the package def-package!
is a macro you can use to configure packagesspace h help
you can look up method man pages:init
is used for setting the package up:config
to set configuration after the package has been initialized:after
lets you set which package it should load after
- You can use
:after!
to configure packages that are already there
f
and then the letter you want to navigate to.,
will go backward;
will go forward after that “find”
t
to find and move cursor to the charachter before what you’ve searched.v
puts you in visual mode. You can select text by withv t some-char-you-navigate-to
orv f some-char-you-navigate-to
;
to jump to the next find,
to jump to the previous ones
to snipe
- Evil-snipe lets you go to all the occurrences in your document
g s SPC
to use avy and going to a certain word in file.t
is the same thing except for a character you want to jump to before the one you inserts
to do a double character search- Evil-snipe will remember your last search so
,
and;
will navigate F
orT
to go backwardsg s SPC
and then select the letter that avy gives you to navigate to that spot- These letters are on your home row so they are easy to click
SPC h v
for variable, to set the avy variable to search all open windowsavy-all-windows
lets you search in all windows open.
- You can remove a word with
g s SPC select-one-letter x select-the-removal-spot
- You can use
X
to stay in your original spot of search
- You can use
- You can go
g s space select-one-letter i select-the-correction-spot
to correct the spelling of the search- Install ispell on your OS first
- You can
yank
a word from one place to another withg s SPC select-one-letter y select-the-correction-spot-to-paste
- Use
t
to “teleport” the word from one place to anotherg s SPC select-one-letter t select-the-correction-spot-to-teleport
- Make selections and then edit those selections interactively
M-d
will select the current word, and again will find another occurrenceM-D
will find the occurrence upward- You can use a visual selection to select multiple words.
R
will select all occurrencesCTRL n
for next selectionCTRL p
for previous- Exclude matches with
RET
- You can make an edit and the changes will be reflected in all the selection
- Org mode gives you structure to your document
*
for a h1**
for an h2 and so on- You can
TAB
a section to fold a subtree (hide it) - You can use
SHIFT TAB
to cycle through folded states CTRL return
to create a headline of the same typeM-arrow up
lets you shift the position of the sectionM-h
promotes a headline to the next levelM-l
demotes- You can create lists
- onw
- 2
- wooo
- 3
SPC m l
to add a link to an org page- You can add
::
to specify a heading or a line number - You can paste http links as well
- You can “link” some text with specific code
SPC m l
elisp: (+ 2 2) when you click the link, emacs will evaluate the expression - Show My Agenda
- List Files in directory
SPC n l
stores a link to a particular headline
SPC i s
for inserting code snippets- Example:
(+ 2 3 4 5)
- Example:
C-c C-c
to execute the code.SPC m '
to edit inside the babel in another buffer.- Results will show up in a
##+RESULTS
header - This feature is called Babel
- One snippet can consume the output of another snippet
- You can create your own snippets in the following directory:
~/.doom.d/snippets/
- Create a task by prefixing any heading with
TODO
DONE
means the task is done- You can create your custom key words by changing this variable:
org-todo-keywords
- remember you can get to your variables through
SPC h v
(M-x counsel-describe-variable) - These values are already set in Doom:
((sequence "TODO(t)" "PROJ(p)" "STRT(s)" "WAIT(w)" "HOLD(h)" "|" "DONE(d)" "KILL(k)") (sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)"))
- remember you can get to your variables through
SPC m t
to change a status of a todoSHIFT left
andSHIFT right
can be used to change the status of a todo as well.- If you finish a task with a command, org mode will add a date that you “closed” the task.
SPC o a t
to open the agenda -> todo listq
to quitorg-agenda-files
is a variable you can set to filter which files agenda searches for todos in.
SHIFT up
andSHIFT down
will toggle the priority of tasksorg-fancy-priorities
gives you fancy looking priorities
- Tags can be attached to any headlines
SPC m q
to tag a headline- Example:
- TODO play more games :fun:
- Tags are hierarchical so nested headings will be tagged with the parent header tag
org-tag-sparce-tree
will search for headings that only have a specific tag
SPC m o
is used for setting a property.
- You can use categories to change the label in agenda view.
- If you want to keep track of your habits using org mode, you can set the
STYLE
property to habit.- If you want to set a category (for chani
- Two types of lists, ordered and unordered lists
SHIFT right
andSHIFT left
can be used to change the type of lists.
- You can also change an unorded list by changing the first item to 1. and then typing
C-c C-c
and vice verca.
- [ ] This is still todo
- [-] This is in progress
- [X] This is a done task
- [-] Task 1
- [X] Task 2
- You can do this by adding [/] to the heading and pressing
C-c C-c
- You can’t assign a tag or a priority
- Magit is enabled by default in Doom Emacs’s init.el
SPC g g
shows Magit status page- Most commands are done from the status page
- Use tab to expand headlines in the status page
?
in Magit’s status page for a nice list of available commands and help,q
to close this help page- Open diff view for a file with
TAB
- Press
s
under “Unstaged changes” to stage a changeu
to undo a changec
to commit
b s
for branch and spinoff to create another branch, rewinding the commits you made to masterb b
to switch branches
t t
to create a tag, default place is the commit you are currently selectingV
to select a change in a diff andx
to discard that change.s
to stagec
to commit, you canq
to quit the commit screenP
to push and thenp
to your remote oru
to a another remote
- Forge is installed in emacs doom
@
for forge- Set up forge with
M x forge-pull
- the first time you will get a token from github
@ c p
to create a pull request with forge- select the base branch
- then select the target branch
- then provide a short description
CTRL c CTRL c
to finish the pull request
- Now there will be a
pull requests
tab
- Set up vterm in your init.el file.
SPC o T
for opening vtermSPC o t
for opening vterm in a popup window
- Set up neotree or treemacs in your init.el file.
SPC o p
for opening neotree or treemacs
C-c C-z
to insert a note for a heading in org mode.
- Note taken on [2020-12-18 Fri 21:52]
Like this!
C-c C-c
to insert a tag for a heading in org mode.
SPC X
to capture (the new thing gets caputured to a single file but that’s fine since we can easily refile it.)SPC m r r
to refile
These keybinding only work after installing org-roam. To install org roam edit your init.el
file and add (org +roam2)
in its designated place. Watch this video to understand what org-roam is.
SPC n r f
Find an existing node or create a new one.SPC n r i
Insert a link to another node.SPC n r r
Toggle backlinks paneSPC m m o t
Add a roam tag.SPC m m o a
Add a roam alias.
- Link to youtube video series
- This org file is mostly from the notes taken from the series above by ianjones.us
- Three Huge Mistakes New Emacs Users Make (they are included in the tips above)
- [ ] Org Roam
- [ ] abbrev-mode