# emacs(1) ## help ```markdown C-h ? list available help modes C-h e show message output (`*Messages*` buffer) C-h f describe function C-h v describe variable C-h w describe which key invoke function (where-is) C-h c print command bound to C-h k describe command bound to C-h b list buffer local key-bindings C-h F show emacs manual for command/function C-h list possible key-bindings with eg C-x C-h -> list key-bindings beginning with C-x ``` ## package manager ```markdown key fn description ------------------------------------------------ package-refresh-contents refresh package list package-list-packages list available/installed packages `U x` to mark packages for Upgrade & eXecute ``` ## window ```markdown key fn description ---------------------------------------------- C-x 0 delete-window kill focused window C-x 1 delete-other-windows kill all other windows C-x 2 split-window-below split horizontal C-x 3 split-window-right split vertical C-x o other-window other window (cycle) C-x r w window-configuration-to-register save window configuration in a register (use C-x r j to jump to the windows config again) ``` ## minibuffer ```markdown key description ---------------------------- M-e enter edit minibuffer edit mode M-up focus previous completion M-down focus next completion M-ret select focused completion ``` ## buffer ```markdown key fn description --------------------------------------------- C-x C-q read-only-mode toggle read-only mode for buffer C-x k kill-buffer kill buffer C-x s save-some-buffers save buffer C-x w write-file write buffer (save as) C-x b switch-to-buffer switch buffer C-x C-b list-buffers buffer list C-x x r rename-buffer renames a buffer (allows multiple shell, compile, grep, .. buffers) ``` ## ibuffer Builtin advanced buffer selection mode ```markdown key fn description -------------------------------------- ibuffer enter buffer selection h ibuffer help d mark for deletion x kill buffers marked for deletion o open buffer in other window C-o open buffer in other window keep focus in ibuffer s a sort by buffer name s f sort by file name s v sort by last viewed s v sort by major mode , cycle sorting mode = compare buffer against file on disk (if file is dirty `*`) /m filter by major mode /n filter by buffer name /f filter by file name /i filter by modified buffers /E filter by process buffers // remove all filter /g create filter group /\ remove all filter groups ``` ## goto navigation ```markdown key fn description ---------------------------------------- M-g g goto-line go to line M-g M-n next-error go to next error (grep, xref, compilation, ...) M-g M-p previous-error go to previous error M-g i imenu go to place in buffer (symbol, ...) M-< go to begin of buffer M-> go to end of buffer ``` ## isearch ```markdown key fn description ------------------------------------------------- C-s isearch-forward search forward from current position (C-s to go to next match) C-r isearch-backward search backwards from current position (C-r to go to next match) C-w isearch-yank-word-or-char feed next word to current search (extend) M-p isearch-ring-advance previous search input M-n isearch-ring-retreat next search input M-e isearch-edit-string edit search string again M-s o occur open search string in occur ``` ## occur ```markdown key fn description ----------------------------------- M-s o occur get matches for regexp in buffer use during `isearch` to use current search term e enter occur edit mode (C-c C-c to quit) n move to next entry and keep focus in occur buffer p move to previous entry and keep focus in occur buffer C-n goto next line C-p goto previous line o open match in other window C-o open match in other window keep focus in ibuffer ``` ```markdown key fn description --------------------------------------------------------- multi-occur-in-matching-buffers run occur in buffers matching regexp ``` ## grep ```markdown key fn description ----------------------------------- rgrep recursive grep lgrep local dir grep grep raw grep command find-grep run find-grep result in *grep* buffer n/p navigate next/previous match in *grep* buffer q quit *grep* buffer ``` ## yank/paste ```markdown key fn description ------------------------------------------------- C- set-mark-command set start mark to select text C-x C-x exchange-point-and-mark swap mark and point position M-w kill-ring-save copy selected text C-w kill-region kill selected text C-y yank paste selected text M-y yank-pop cycle through kill-ring (only after paste) M-y yank-from-kill-ring interactively select yank from kill ring ``` ## register ```markdown key fn description ------------------------------------------------ C-x r s copy-to-register save region in register C-x r i insert-register insert content of register ``` ## bookmarks ``` key fn description ------------------------------------------- C-x r m bookmark-set set a bookmark C-x r b bookmark-jump jump to a bookmark C-x r l bookmark-bmenu-list list all bookmarks ``` ## block/rect ```markdown key fn description ------------------------------------------------ C-x rectangle-mark-mode activate rectangle-mark-mode string-rectangle insert text in marked rect ``` ## mass edit ```markdown key fn description ------------------------------------------------ C-x h mark-whole-buffer mark whole buffer delete-matching-line delete lines matchng regex kill-matching-line kill lines matching regex (puts them in kill ring) keep-lines keep matching lines replace-string replace unconditional M-% query-replace search & replace C-M-% query-replace-regexp search & replace regex ``` ## narrow ```markdown key fn description --------------------------------------------- C-x n n narrow-to-region show only focused region (narrow) C-x n w widen show whole buffer (wide) ``` ## org ```markdown key fn description ------------------------------------ M-up/M-down re-arrange items in same hierarchy M-left/M-right change item hierarchy C-RET create new item below current C-S-RET create new TODO item below current S-left/S-right cycle TODO states ``` ### org source ```markdown key fn description ------------------------------ / cycle through available competions select completion ``` There is also `fido`, which is the successor of `ido`, which also supports `fido-vertical-mode` in case vertical mode is preferred. ## evil ```markdown key fn description -------------------------- C-z toggle emacs/evil mode C-^ toggle between previous and current buffer C-p after paste cycle kill-ring back C-n after paste cycle kill-ring forward ``` ## dired ```markdown key fn description -------------------------- i open sub-dir in same buffer + create new directory C copy file/dir R move file/dir (rename) S absolute symbolic link Y relative symbolic link d mark for deletion m mark file/dir at point * % mark by regex * * mark all executables * / mark all dirs u un-mark file/dir U un-mark all t toggle marks x execute marked actions ! run shell command on marked files & run shell command on marked files (async) q quit ``` ## info ```markdown key fn description --------------------------------------- n Info-next next page p Info-prev previous page l Info-history-back history go back r Info-history-forward history go forward ^ Info-Up up in info node tree m Info-menu goto menu (by minibuf completion) s Info-search search info g Info-goto-node goto info node (by minibuf completion) Info-history open info history in buffer ``` ## shell commands ```markdown key fn description --------------------------------------------- M-! shell-command run shell command synchronously M-& async-shell-command run shell command asynchronously M-| shell-command-on-region run shell command on region; prefix with C-u to replace region with output of the command ``` ## interactive shell Set `ESHELL` environment variable before starting emacs to change default shell, else customize the `explicit-shell-file-name` variable. ```markdown key fn description --------------------------------------------- M-x shell start interactive shell C-u M-x shell start interactive shell & rename M-r comint-history-isearch-backward-regexp search history, invoke at end of shell buffer M-p comint-previous-input go one up in history C- M-n comint-next-input go one down in history C- C-c C-a go begin of line (honors prompt) C-c C-e go to end of line C-c C-c interrupt active command ```