]> git.lizzy.rs Git - micro.git/blobdiff - runtime/help/help.md
Add tab command to open a file in a new tab
[micro.git] / runtime / help / help.md
index 5863b8a581b6f3ac8ecdd50cc9bf09b43ed03493..41242ef57c26f0a8fa1709574cc97c66bf0702cd 100644 (file)
 # Micro help text
 
-### Keybindings
-
-These are the default keybindings, along with their actions.
+Micro is a terminal-based text editor that aims to be easy to use and intuitive, 
+while also taking advantage of the full capabilities of modern terminals.
 
-#### Editor bindings
+### Usage
 
-* Ctrl-q:   Quit
-* Ctrl-e:   Execute a command
-* Ctrl-g:   Toggle help text
-* Ctrl-b:   Run a shell command
+Once you have built the editor, simply start it by running 
+`micro path/to/file.txt` or simply `micro` to open an empty buffer.
 
-#### Buffer bindings
+Micro also supports creating buffers from stdin:
 
-* Ctrl-s:   Save
-* Ctrl-o:   Open file
-
-* Ctrl-z:   Undo
-* Ctrl-y:   Redo
+```
+$ ifconfig | micro
+```
 
-* Ctrl-f:   Find
-* Ctrl-n:   Find next
-* Ctrl-p:   Find previous
+You can move the cursor around with the arrow keys and mouse.
 
-* Ctrl-a:   Select all
+### Keybindings
 
-* Ctrl-c:   Copy
-* Ctrl-x:   Cut
-* Ctrl-k:   Cut line
-* Ctrl-v:   Paste
+Here are the default keybindings in json form which is also how
+you can rebind them to your liking.
 
-* Ctrl-u:   Half page up
-* Ctrl-d:   Half page down
-* PageUp:   Page up
-* PageDown: Page down
+```json
+{
+       "Up":             "CursorUp",
+       "Down":           "CursorDown",
+       "Right":          "CursorRight",
+       "Left":           "CursorLeft",
+       "ShiftUp":        "SelectUp",
+       "ShiftDown":      "SelectDown",
+       "ShiftLeft":      "SelectLeft",
+       "ShiftRight":     "SelectRight",
+       "AltLeft":        "WordLeft",
+       "AltRight":       "WordRight",
+       "AltShiftRight":  "SelectWordRight",
+       "AltShiftLeft":   "SelectWordLeft",
+       "CtrlLeft":       "StartOfLine",
+       "CtrlRight":      "EndOfLine",
+       "CtrlShiftLeft":  "SelectToStartOfLine",
+       "CtrlShiftRight": "SelectToEndOfLine",
+       "CtrlUp":         "CursorStart",
+       "CtrlDown":       "CursorEnd",
+       "CtrlShiftUp":    "SelectToStart",
+       "CtrlShiftDown":  "SelectToEnd",
+       "Enter":          "InsertEnter",
+       "Space":          "InsertSpace",
+       "Backspace":      "Backspace",
+       "Backspace2":     "Backspace",
+       "Alt-Backspace":  "DeleteWordLeft",
+       "Alt-Backspace2": "DeleteWordLeft",
+       "Tab":            "InsertTab",
+       "CtrlO":          "OpenFile",
+       "CtrlS":          "Save",
+       "CtrlF":          "Find",
+       "CtrlN":          "FindNext",
+       "CtrlP":          "FindPrevious",
+       "CtrlZ":          "Undo",
+       "CtrlY":          "Redo",
+       "CtrlC":          "Copy",
+       "CtrlX":          "Cut",
+       "CtrlK":          "CutLine",
+       "CtrlD":          "DuplicateLine",
+       "CtrlV":          "Paste",
+       "CtrlA":          "SelectAll",
+       "CtrlT":          "AddTab"
+       "CtrlRightSq":    "PreviousTab",
+       "CtrlBackslash":  "NextTab",
+       "Home":           "Start",
+       "End":            "End",
+       "PageUp":         "CursorPageUp",
+       "PageDown":       "CursorPageDown",
+       "CtrlG":          "ToggleHelp",
+       "CtrlR":          "ToggleRuler",
+       "CtrlL":          "JumpLine",
+       "Delete":         "Delete",
+       "Esc":            "ClearStatus",
+       "CtrlB":          "ShellMode",
+       "CtrlQ":          "Quit",
+       "CtrlE":          "CommandMode",
+       "CtrlW":          "NextSplit",
+       
+       // Emacs-style keybindings
+       "Alt-f": "WordRight",
+       "Alt-b": "WordLeft",
+       "Alt-a": "StartOfLine",
+       "Alt-e": "EndOfLine",
+       "Alt-p": "CursorUp",
+       "Alt-n": "CursorDown"
+}
+```
 
-* Home:     Go to beginning of file
-* End:      Go to end of file
+You can use the alt keys + arrows to move word by word.
+Ctrl left and right move the cursor to the start and end of the line, and
+ctrl up and down move the cursor the start and end of the buffer.
 
-* Ctrl-r:   Toggle line numbers
+You can hold shift with all of these movement actions to select while moving.
 
-The buffer bindings may be rebound using the `~/.config/micro/bindings.json` file. Each key is bound to an action.
+The bindings may be rebound using the `~/.config/micro/bindings.json`
+file. Each key is bound to an action.
 
-For example, to bind `Ctrl-y` to undo and `Ctrl-z` to redo, you could put the following in the `bindings.json` file.
+For example, to bind `Ctrl-y` to undo and `Ctrl-z` to redo, you could put the
+following in the `bindings.json` file.
 
 ```json
 {
-    "CtrlY": "Undo",
-    "CtrlZ": "Redo"
+       "CtrlY": "Undo",
+       "CtrlZ": "Redo"
 }
 ```
 
@@ -57,51 +115,149 @@ You can execute an editor command by pressing `Ctrl-e` followed by the command.
 Here are the possible commands that you can use.
 
 * `quit`: Quits micro.
+
 * `save`: Saves the current buffer.
 
-`replace "search" "value"`: This will replace `search` with `value`.
-Note that `search` must be a valid regex.  If one of the arguments
-does not have any spaces in it, you may omit the quotes.
+* `replace "search" "value" flags`: This will replace `search` with `value`. 
+   The `flags` are optional.
+   At this point, there is only one flag: `c`, which enables `check` mode 
+   which asks if you'd like to perform the replacement each time
+
+   Note that `search` must be a valid regex.  If one of the arguments
+   does not have any spaces in it, you may omit the quotes.
+
+* `set option value`: sets the option to value. Please see the next section for
+   a list of options you can set.
+
+* `run sh-command`: runs the given shell command in the background. The 
+   command's output will be displayed in one line when it finishes running.
+
+* `bind key action`: creates a keybinding from key to action. See the sections on
+   keybindings above for more info about what keys and actions are available.
+
+* `vsplit filename`: opens a vertical split with `filename`. If no filename is
+   provided, a vertical split is opened with an empty buffer
 
-`set option value`: sets the option to value. Please see the next section for a list of options you can set.
+* `hsplit filename`: same as `vsplit` but opens a horizontal split instead of
+   a vertical split
 
-`run sh-command`: runs the given shell command in the background. The command's output will be displayed
-in one line when it finishes running.
+* `tab filename`: opens the given file in a new tab.
 
 ### Options
 
 Micro stores all of the user configuration in its configuration directory.
 
-Micro uses the `$XDG_CONFIG_HOME/micro` as the configuration directory. As per the XDG spec,
-if `$XDG_CONFIG_HOME` is not set, `~/.config/micro` is used as the config directory.
+Micro uses the `$XDG_CONFIG_HOME/micro` as the configuration directory. As per
+the XDG spec, if `$XDG_CONFIG_HOME` is not set, `~/.config/micro` is used as 
+the config directory.
 
 Here are the options that you can set:
 
-`colorscheme`: loads the colorscheme stored in $(configDir)/colorschemes/`option`.micro
+* `colorscheme`: loads the colorscheme stored in 
+   $(configDir)/colorschemes/`option`.micro
+
        default value: `default`
-       Note that the default colorschemes (default, solarized, and solarized-tc) are not located in configDir,
-       because they are embedded in the micro binary
+       Note that the default colorschemes (default, solarized, and solarized-tc)
+       are not located in configDir, because they are embedded in the micro binary
+
+       The colorscheme can be selected from all the files in the 
+       ~/.config/micro/colorschemes/ directory. Micro comes by default with three
+       colorschemes:
+
+       * default: this is the default colorscheme.
+
+       * solarized: this is the solarized colorscheme (used in the screenshot). 
+         You should have the solarized color palette in your terminal to use it.
+
+       * solarized-tc: this is the solarized colorscheme for true color, just 
+         make sure your terminal supports true color before using it and that the 
+         MICRO_TRUECOLOR environment variable is set to 1 before starting micro.
+
+       * monokai-tc: this is the monokai colorscheme. It requires true color to
+         look perfect, but the 256 color approximation looks good as well.
+
+       * atom-dark-tc: this colorscheme is based off of Atom's "dark" colorscheme.
+         It requires true color to look good.
+
+
+* `tabsize`: sets the tab size to `option`
 
-`tabsize`: sets the tab size to `option`
        default value: `4`
 
-`syntax`: turns syntax on or off
+* `indentchar`: sets the indentation character
+
+       default value: ` `
+
+* `ignorecase`: perform case-insensitive searches
+
+       default value: `off`
+
+* `syntax`: turns syntax on or off
+
+       default value: `on`
+
+* `tabstospaces`: use spaces instead of tabs
+
+       default value: `off`
+
+* `autoindent`: when creating a new line use the same indentation as the 
+   previous line
+
+       default value: `on`
+
+* `cursorline`: highlight the line that the cursor is on in a different color
+   (the color is defined by the colorscheme you are using)
+
+       default value: `off`
+
+* `ruler`: display line numbers
+
+       default value: `on`
+
+* `statusline`: display the status line at the bottom of the screen
+
        default value: `on`
 
-`tabsToSpaces`: use spaces instead of tabs
+* `savecursor`: remember where the cursor was last time the file was opened and
+   put it there when you open the file again
+
+       default value: `off`
+
+* `saveundo`: when this option is on, undo is saved even after you close a file
+   so if you close and reopen a file, you can keep undoing
+
        default value: `off`
 
-`autoindent`: when creating a new line use the same indentation as the previous line
-    default value: `on`
+* `scrollmargin`: amount of lines you would like to see above and below the cursor
+
+       default value: `3`
+
+* `scrollspeed`: amount of lines to scroll for one scroll event
+
+       default value: `2`
+
+---
+
+Default plugin options:
+
+* `linter`: lint languages on save (supported languages are C, D, Go, Java,
+   Javascript, Lua). Provided by the `linter` plugin.
 
-`ruler`: display line numbers
-    default value: `on`
+       default value: `on`
+
+* `autoclose`: Automatically close `{}` `()` `[]` `""` `''`. Provided by the autoclose plugin
+
+       default value: `on`
 
-`gofmt`: Run `gofmt` whenever the file is saved (this only applies to `.go` files)
-    default value: `off`
+* `goimports`: Run goimports on save. Provided by the `go` plugin.
 
-`goimports`: run `goimports` whenever the file is saved (this only applies to `.go` files)
-    default value: `off`
+       default value: `off`
+
+* `gofmt`: Run gofmt on save. Provided by the `go` plugin.
+
+       default value: `on`
 
-In the future, the `gofmt` and `goimports` will be refactored using a plugin system. However,
-currently they just make it easier to program micro in micro.
+Any option you set in the editor will be saved to the file 
+~/.config/micro/settings.json so, in effect, your configuration file will be 
+created for you. If you'd like to take your configuration with you to another
+machine, simply copy the settings.json to the other machine.