-# Possible commands
+# Command bar
-You can execute an editor command by pressing `Ctrl-e` followed by the command.
-Here are the possible commands that you can use.
+The command bar is opened by pressing CtrlE. It is a single-line buffer,
+meaning that all keybindings from a normal buffer are supported (as well
+as mouse and selection).
-* `quit`: Quits micro.
+When running a command, you can use extra syntax that micro will expand before
+running the command. To use an argument with a space in it, put it in
+quotes. The command bar parser uses the same rules for parsing arguments that
+`/bin/sh` would use (single quotes, double quotes, escaping). The command bar
+does not look up environment variables.
-* `save filename?`: Saves the current buffer. If the filename is provided it will
- 'save as' the filename.
+# Commands
-* `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.
+Micro provides the following commands that can be executed at the command-bar
+by pressing `CtrlE` and entering the command. Arguments are placed in single
+quotes here but these are not necessary when entering the command in micro.
- 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.
+* `bind 'key' 'action'`: creates a keybinding from key to action. See the
+ `keybindings` documentation for more information about binding keys.
+ This command will modify `bindings.json` and overwrite any bindings to
+ `key` that already exist.
-* `set option value`: sets the option to value. See the `options` help topic
- for a list of options you can set.
+* `help 'topic'?`: opens the corresponding help topic. If no topic is provided
+ opens the default help screen.
-* `setlocal option value`: sets the option to value locally (only in the current
- buffer).
+* `save 'filename'?`: saves the current buffer. If the file is provided it
+ will 'save as' the filename.
-* `show option`: shows the current value of the given option.
+* `quit`: quits micro.
-* `eval "expression"`: Evaluates a Lua expression. Note that micro will not
- print anything so you should use `messenger:Message(...)` to display a
- value.
+* `replace 'search' 'value' 'flags'?`: This will replace `search` with `value`.
+ The `flags` are optional. Possible flags are:
+ * `-a`: Replace all occurrences at once
+ * `-l`: Do a literal search instead of a regex search
-* `run sh-command`: runs the given shell command in the background. The
+ Note that `search` must be a valid regex (unless `-l` is passed). If one
+ of the arguments does not have any spaces in it, you may omit the quotes.
+
+* `replaceall 'search' 'value'`: this will replace all occurrences of `search`
+ with `value` without user confirmation.
+
+ See `replace` command for more information.
+
+* `set 'option' 'value'`: sets the option to value. See the `options` help
+ topic for a list of options you can set. This will modify your
+ `settings.json` with the new value.
+
+* `setlocal 'option' 'value'`: sets the option to value locally (only in the
+ current buffer). This will *not* modify `settings.json`.
+
+* `show 'option'`: shows the current value of the given option.
+
+* `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.
+
+* `hsplit 'filename'`: same as `vsplit` but opens a horizontal split instead
+ of a vertical split.
-* `vsplit filename`: opens a vertical split with `filename`. If no filename is
- provided, a vertical split is opened with an empty buffer.
+* `tab 'filename'`: opens the given file in a new tab.
-* `hsplit filename`: same as `vsplit` but opens a horizontal split instead of
- a vertical split.
+* `tabswitch 'tab'`: This command will switch to the specified tab. The `tab`
+ can either be a tab number, or a name of a tab.
-* `tab filename`: opens the given file in a new tab.
+* `textfilter 'sh-command'`: filters the current selection through a shell
+ command as standard input and replaces the selection with the stdout of
+ the shell command. For example, to sort a list of numbers, first select
+ them, and then execute `> textfilter sort -n`.
* `log`: opens a log of all messages and debug statements.
-* `plugin install plugin_name`: installs the given plugin.
+* `plugin list`: lists all installed plugins.
-* `plugin remove plugin_name`: removes the given plugin.
+* `plugin install 'pl'`: install a plugin.
-* `plugin list`: lists all installed plugins.
+* `plugin remove 'pl'`: remove a plugin.
+
+* `plugin update 'pl'`: update a plugin (if no arguments are provided
+ updates all plugins).
-* `plugin update`: updates all installed plugins.
+* `plugin search 'pl'`: search available plugins for a keyword.
-* `plugin search plugin_name`: searches for the given plugin.
- Note that you can find a list of all available plugins at
- github.com/micro-editor/plugin-channel.
+* `plugin available`: show available plugins that can be installed.
- You can also see more information about the plugin manager
- in the `Plugin Manager` section of the `plugins` help topic.
+* `reload`: reloads all runtime files.
+
+* `cd 'path'`: Change the working directory to the given `path`.
+
+* `pwd`: Print the current working directory.
+
+* `open 'filename'`: Open a file in the current buffer.
+
+* `reset 'option'`: resets the given option to its default value
+
+* `retab`: Replaces all leading tabs with spaces or leading spaces with tabs
+ depending on the value of `tabstospaces`.
+
+* `raw`: micro will open a new tab and show the escape sequence for every event
+ it receives from the terminal. This shows you what micro actually sees from
+ the terminal and helps you see which bindings aren't possible and why. This
+ is most useful for debugging keybindings.
+
+* `showkey`: Show the action(s) bound to a given key. For example
+ running `> showkey CtrlC` will display `Copy`.
+
+* `term exec?`: Open a terminal emulator running the given executable. If no
+ executable is given, this will open the default shell in the terminal
+ emulator.
---
The following commands are provided by the default plugins:
* `lint`: Lint the current file for errors.
-
-* `gofmt`: Run gofmt on the current file.
-
-* `goimports`: Run goimports on the current file.
+* `comment`: automatically comment or uncomment current selection or line.