]> git.lizzy.rs Git - micro.git/blob - runtime/help/options.md
491eaba5f2b8029a7c487db61c00895a01a0f5bd
[micro.git] / runtime / help / options.md
1 # Options
2
3 Micro stores all of the user configuration in its configuration directory.
4
5 Micro uses `$MICRO_CONFIG_HOME` as the configuration directory. If this
6 environment variable is not set, it uses `$XDG_CONFIG_HOME/micro` instead. If
7 that environment variable is not set, it uses `~/.config/micro` as the
8 configuration directory. In the documentation, we use `~/.config/micro` to
9 refer to the configuration directory (even if it may in fact be somewhere else
10 if you have set either of the above environment variables).
11
12 Here are the available options:
13
14 * `autoindent`: when creating a new line, use the same indentation as the 
15    previous line.
16
17         default value: `true`
18
19 * `autosave`: automatically save the buffer every n seconds, where n is the
20    value of the autosave option. Also when quitting on a modified buffer, micro
21    will automatically save and quit. Be warned, this option saves the buffer
22    without prompting the user, so data may be overwritten. If this option is
23    set to `0`, no autosaving is performed.
24
25     default value: `0`
26
27 * `autosu`: When a file is saved that the user doesn't have permission to
28    modify, micro will ask if the user would like to use super user
29    privileges to save the file. If this option is enabled, micro will
30    automatically attempt to use super user privileges to save without
31    asking the user.
32
33     default value: `false`
34
35 * `backup`: micro will automatically keep backups of all open buffers. Backups
36    are stored in `~/.config/micro/backups` and are removed when the buffer is
37    closed cleanly. In the case of a system crash or a micro crash, the contents
38    of the buffer can be recovered automatically by opening the file that was
39    being edited before the crash, or manually by searching for the backup in
40    the backup directory. Backups are made in the background for newly modified
41    buffers every 8 seconds, or when micro detects a crash.
42
43     default value: `true`
44
45 * `backupdir`: the directory micro should place backups in. For the default
46    value of `""` (empty string), the backup directory will be
47    `ConfigDir/backups`, which is `~/.config/micro/backups` by default. The
48    directory specified for backups will be created if it does not exist.
49
50     default value: `""` (empty string)
51
52 * `basename`: in the infobar and tabbar, show only the basename of the file
53    being edited rather than the full path.
54
55     default value: `false`
56
57 * `clipboard`: specifies how micro should access the system clipboard.
58    Possible values are:
59     * `external`: accesses clipboard via an external tool, such as xclip/xsel
60        or wl-clipboard on Linux, pbcopy/pbpaste on MacOS, and system calls on
61        Windows. On Linux, if you do not have one of the tools installed, or if
62        they are not working, micro will throw an error and use an internal
63        clipboard.
64     * `terminal`: accesses the clipboard via your terminal emulator. Note that
65        there is limited support among terminal emulators for this feature
66        (called OSC 52). Terminals that are known to work are Kitty (enable
67        reading with `clipboard_control` setting), iTerm2 (only copying),
68        st, rxvt-unicode and xterm if enabled (see `> help copypaste` for
69        details). Note that Gnome-terminal does not support this feature. With
70        this setting, copy-paste **will** work over ssh. See `> help copypaste`
71        for details.
72     * `internal`: micro will use an internal clipboard.
73
74     default value: `external`
75
76 * `colorcolumn`: if this is not set to 0, it will display a column at the
77    specified column. This is useful if you want column 80 to be highlighted
78    special for example.
79
80         default value: `0`
81
82 * `colorscheme`: loads the colorscheme stored in 
83    $(configDir)/colorschemes/`option`.micro, This setting is `global only`.
84
85         default value: `default`
86
87     Note that the default colorschemes (default, solarized, and solarized-tc)
88     are not located in configDir, because they are embedded in the micro
89     binary.
90
91         The colorscheme can be selected from all the files in the 
92         ~/.config/micro/colorschemes/ directory. Micro comes by default with three
93         colorschemes:
94
95         You can read more about micro's colorschemes in the `colors` help topic
96         (`help colors`).
97
98 * `cursorline`: highlight the line that the cursor is on in a different color
99    (the color is defined by the colorscheme you are using).
100
101         default value: `true`
102
103 * `diffgutter`: display diff indicators before lines.
104
105         default value: `false`
106
107 * `divchars`: specifies the "divider" characters used for the dividing line
108    between vertical/horizontal splits. The first character is for vertical
109    dividers, and the second is for horizontal dividers. By default, for
110    horizontal splits the statusline serves as a divider, but if the statusline
111    is disabled the horizontal divider character will be used.
112
113     default value: `|-`
114
115 * `divreverse`: colorschemes provide the color (foreground and background) for
116    the characters displayed in split dividers. With this option enabled, the
117    colors specified by the colorscheme will be reversed (foreground and
118    background colors swapped).
119
120     default value: `true`
121
122 * `encoding`: the encoding to open and save files with. Supported encodings
123    are listed at https://www.w3.org/TR/encoding/.
124
125     default value: `utf-8`
126
127 * `eofnewline`: micro will automatically add a newline to the end of the
128    file if one does not exist.
129
130         default value: `true`
131
132 * `fastdirty`: this determines what kind of algorithm micro uses to determine
133    if a buffer is modified or not. When `fastdirty` is on, micro just uses a
134    boolean `modified` that is set to `true` as soon as the user makes an edit.
135    This is fast, but can be inaccurate. If `fastdirty` is off, then micro will
136    hash the current buffer against a hash of the original file (created when
137    the buffer was loaded). This is more accurate but obviously more resource
138    intensive. This option will be automatically disabled if the file size
139    exceeds 50KB.
140
141         default value: `false`
142
143 * `fileformat`: this determines what kind of line endings micro will use for
144    the file. Unix line endings are just `\n` (linefeed) whereas dos line
145    endings are `\r\n` (carriage return + linefeed). The two possible values for
146    this option are `unix` and `dos`. The fileformat will be automatically
147    detected (when you open an existing file) and displayed on the statusline,
148    but this option is useful if you would like to change the line endings or if
149    you are starting a new file. Changing this option while editing a file will
150    change its line endings. Opening a file with this option set will only have
151    an effect if the file is empty/newly created, because otherwise the fileformat
152    will be automatically detected from the existing line endings.
153
154         default value: `unix`
155
156 * `filetype`: sets the filetype for the current buffer. Set this option to
157   `off` to completely disable filetype detection.
158
159         default value: `unknown`. This will be automatically overridden depending
160     on the file you open.
161
162 * `incsearch`: enable incremental search in "Find" prompt (matching as you type).
163
164         default value: `true`
165
166 * `ignorecase`: perform case-insensitive searches.
167
168         default value: `true`
169
170 * `indentchar`: sets the indentation character.
171
172         default value: ` ` (space)
173
174 * `infobar`: enables the line at the bottom of the editor where messages are
175    printed. This option is `global only`.
176
177         default value: `true`
178
179 * `keepautoindent`: when using autoindent, whitespace is added for you. This
180    option determines if when you move to the next line without any insertions
181    the whitespace that was added should be deleted to remove trailing
182    whitespace.  By default, the autoindent whitespace is deleted if the line
183    was left empty.
184
185         default value: `false`
186
187 * `keymenu`: display the nano-style key menu at the bottom of the screen. Note
188    that ToggleKeyMenu is bound to `Alt-g` by default and this is displayed in
189    the statusline. To disable this, simply by `Alt-g` to `UnbindKey`.
190
191         default value: `false`
192
193 * `matchbrace`: underline matching braces for '()', '{}', '[]' when the cursor
194    is on a brace character.
195
196     default value: `true`
197
198 * `mkparents`: if a file is opened on a path that does not exist, the file
199    cannot be saved because the parent directories don't exist. This option lets
200    micro automatically create the parent directories in such a situation.
201
202     default value: `false`
203
204 * `mouse`: mouse support. When mouse support is disabled,
205    usually the terminal will be able to access mouse events which can be useful
206    if you want to copy from the terminal instead of from micro (if over ssh for
207    example, because the terminal has access to the local clipboard and micro
208    does not).
209
210         default value: `true`
211
212 * `paste`: treat characters sent from the terminal in a single chunk as a paste
213    event rather than a series of manual key presses. If you are pasting using
214    the terminal keybinding (not Ctrl-v, which is micro's default paste
215    keybinding) then it is a good idea to enable this option during the paste
216    and disable once the paste is over. See `> help copypaste` for details about
217    copying and pasting in a terminal environment.
218
219     default value: `false`
220
221 * `parsecursor`: if enabled, this will cause micro to parse filenames such as
222    file.txt:10:5 as requesting to open `file.txt` with the cursor at line 10
223    and column 5. The column number can also be dropped to open the file at a
224    given line and column 0. Note that with this option enabled it is not possible
225    to open a file such as `file.txt:10:5`, where `:10:5` is part of the filename.
226    It is also possible to open a file with a certain cursor location by using the
227    `+LINE,COL` flag syntax. See `micro -help` for the command line options.
228
229     default value: `false`
230
231 * `permbackup`: this option causes backups (see `backup` option) to be
232    permanently saved. With permanent backups, micro will not remove backups when
233    files are closed and will never apply them to existing files. Use this option
234    if you are interested in manually managing your backup files.
235
236     default value: `false`
237
238 * `pluginchannels`: list of URLs pointing to plugin channels for downloading and
239    installing plugins. A plugin channel consists of a json file with links to
240    plugin repos, which store information about plugin versions and download URLs.
241    By default, this option points to the official plugin channel hosted on GitHub
242    at https://github.com/micro-editor/plugin-channel.
243
244     default value: `https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json`
245
246 * `pluginrepos`: a list of links to plugin repositories.
247
248     default value: ``
249
250 * `readonly`: when enabled, disallows edits to the buffer. It is recommended
251    to only ever set this option locally using `setlocal`.
252
253     default value: `false`
254
255 * `rmtrailingws`: micro will automatically trim trailing whitespaces at ends of
256    lines.
257
258         default value: `false`
259
260 * `ruler`: display line numbers.
261
262         default value: `true`
263
264 * `relativeruler`: make line numbers display relatively. If set to true, all lines except
265         for the line that the cursor is located will display the distance from the 
266         cursor's line. 
267
268         default value: `false` 
269
270 * `savecursor`: remember where the cursor was last time the file was opened and
271    put it there when you open the file again. Information is saved to
272    `~/.config/micro/buffers/`
273
274         default value: `false`
275
276 * `savehistory`: remember command history between closing and re-opening
277    micro. Information is saved to `~/.config/micro/buffers/history`.
278
279     default value: `true`
280
281 * `saveundo`: when this option is on, undo is saved even after you close a file
282    so if you close and reopen a file, you can keep undoing. Information is
283    saved to `~/.config/micro/buffers/`.
284
285         default value: `false`
286
287 * `scrollbar`: display a scroll bar
288
289     default value: `false`
290
291 * `scrollmargin`: margin at which the view starts scrolling when the cursor
292    approaches the edge of the view.
293
294         default value: `3`
295
296 * `scrollspeed`: amount of lines to scroll for one scroll event.
297
298         default value: `2`
299
300 * `smartpaste`: add leading whitespace when pasting multiple lines.
301    This will attempt to preserve the current indentation level when pasting an
302    unindented block.
303
304         default value: `true`
305
306 * `softwrap`: wrap lines that are too long to fit on the screen.
307
308         default value: `false`
309
310 * `splitbottom`: when a horizontal split is created, create it below the
311    current split.
312
313         default value: `true`
314
315 * `splitright`: when a vertical split is created, create it to the right of the
316    current split.
317
318         default value: `true`
319
320 * `statusformatl`: format string definition for the left-justified part of the
321    statusline. Special directives should be placed inside `$()`. Special
322    directives include: `filename`, `modified`, `line`, `col`, `opt`, `bind`.
323    The `opt` and `bind` directives take either an option or an action afterward
324    and fill in the value of the option or the key bound to the action.
325
326     default value: `$(filename) $(modified)($(line),$(col)) $(status.paste)|
327                     ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)`
328
329 * `statusformatr`: format string definition for the right-justified part of the
330    statusline.
331
332     default value: `$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help`
333
334 * `statusline`: display the status line at the bottom of the screen.
335
336         default value: `true`
337
338 * `sucmd`: specifies the super user command. On most systems this is "sudo" but
339    on BSD it can be "doas." This option can be customized and is only used when
340    saving with su.
341
342         default value: `sudo`
343
344 * `syntax`: enables syntax highlighting.
345
346         default value: `true`
347
348 * `tabmovement`: navigate spaces at the beginning of lines as if they are tabs
349    (e.g. move over 4 spaces at once). This option only does anything if
350    `tabstospaces` is on.
351
352         default value: `false`
353
354 * `tabsize`: the size in spaces that a tab character should be displayed with.
355
356         default value: `4`
357
358 * `tabstospaces`: use spaces instead of tabs.
359
360         default value: `false`
361
362 * `useprimary` (only useful on unix): defines whether or not micro will use the
363    primary clipboard to copy selections in the background. This does not affect
364    the normal clipboard using Ctrl-c and Ctrl-v.
365
366         default value: `true`
367
368 * `wordwrap`: wrap long lines by words, i.e. break at spaces. This option
369    only does anything if `softwrap` is on.
370
371         default value: `false`
372
373 * `xterm`: micro will assume that the terminal it is running in conforms to
374   `xterm-256color` regardless of what the `$TERM` variable actually contains.
375    Enabling this option may cause unwanted effects if your terminal in fact
376    does not conform to the `xterm-256color` standard.
377
378     Default value: `false`
379
380 ---
381
382 Plugin options: all plugins come with a special option to enable or disable
383 them. The option is a boolean with the same name as the plugin itself.
384
385 By default, the following plugins are provided, each with an option to enable
386 or disable them:
387
388 * `autoclose`: automatically closes brackets, quotes, etc...
389 * `comment`: provides automatic commenting for a number of languages
390 * `ftoptions`: alters some default options depending on the filetype
391 * `linter`: provides extensible linting for many languages
392 * `literate`: provides advanced syntax highlighting for the Literate
393    programming tool.
394 * `status`: provides some extensions to the status line (integration with
395    Git and more).
396 * `diff`: integrates the `diffgutter` option with Git. If you are in a Git
397    directory, the diff gutter will show changes with respect to the most
398    recent Git commit rather than the diff since opening the file.
399
400 Any option you set in the editor will be saved to the file
401 ~/.config/micro/settings.json so, in effect, your configuration file will be 
402 created for you. If you'd like to take your configuration with you to another
403 machine, simply copy the settings.json to the other machine.
404
405 ## Settings.json file
406
407 The settings.json file should go in your configuration directory (by default
408 at `~/.config/micro`), and should contain only options which have been modified
409 from their default setting. Here is the full list of options in json format,
410 so that you can see what the formatting should look like.
411
412 ```json
413 {
414     "autoclose": true,
415     "autoindent": true,
416     "autosave": 0,
417     "autosu": false,
418     "backup": true,
419     "backupdir": "",
420     "basename": false,
421     "clipboard": "external",
422     "colorcolumn": 0,
423     "colorscheme": "default",
424     "comment": true,
425     "cursorline": true,
426     "diff": true,
427     "diffgutter": false,
428     "divchars": "|-",
429     "divreverse": true,
430     "encoding": "utf-8",
431     "eofnewline": true,
432     "fastdirty": false,
433     "fileformat": "unix",
434     "filetype": "unknown",
435     "incsearch": true,
436     "ftoptions": true,
437     "ignorecase": false,
438     "indentchar": " ",
439     "infobar": true,
440     "initlua": true,
441     "keepautoindent": false,
442     "keymenu": false,
443     "linter": true,
444     "literate": true,
445     "matchbrace": true,
446     "mkparents": false,
447     "mouse": true,
448     "parsecursor": false,
449     "paste": false,
450     "permbackup": false,
451     "pluginchannels": [
452         "https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"
453     ],
454     "pluginrepos": [],
455     "readonly": false,
456     "relativeruler": false,
457     "rmtrailingws": false,
458     "ruler": true,
459     "savecursor": false,
460     "savehistory": true,
461     "saveundo": false,
462     "scrollbar": false,
463     "scrollmargin": 3,
464     "scrollspeed": 2,
465     "smartpaste": true,
466     "softwrap": false,
467     "splitbottom": true,
468     "splitright": true,
469     "status": true,
470     "statusformatl": "$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)",
471     "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help",
472     "statusline": true,
473     "sucmd": "sudo",
474     "syntax": true,
475     "tabmovement": false,
476     "tabsize": 4,
477     "tabstospaces": false,
478     "useprimary": true,
479     "xterm": false
480 }
481 ```
482
483 ## Global and local settings
484
485 You can set these settings either globally or locally. Locally means that the
486 setting won't be saved to `~/.config/micro/settings.json` and that it will only
487 be set in the current buffer. Setting an option globally is the default, and
488 will set the option in all buffers. Use the `setlocal` command to set an option
489 locally rather than globally.
490
491 The `colorscheme` option is global only, and the `filetype` option is local
492 only. To set an option locally, use `setlocal` instead of `set`.
493
494 In the `settings.json` file you can also put set options locally by specifying
495 either a glob or a filetype. Here is an example which has `tabstospaces` on for
496 all files except Go files, and `tabsize` 4 for all files except Ruby files:
497
498 ```json
499 {
500         "ft:go": {
501                 "tabstospaces": false
502         },
503         "ft:ruby": {
504                 "tabsize": 2
505         },
506         "tabstospaces": true,
507         "tabsize": 4
508 }
509 ```
510
511 Or similarly you can match with globs:
512
513 ```json
514 {
515         "*.go": {
516                 "tabstospaces": false
517         },
518         "*.rb": {
519                 "tabsize": 2
520         },
521         "tabstospaces": true,
522         "tabsize": 4
523 }
524 ```