]> git.lizzy.rs Git - micro.git/blob - runtime/help/options.md
643115b0a843878bf68b8bd4cf132d0e805d361f
[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 * `hlsearch`: highlight all instances of the searched text after a successful
163    search. This highlighting can be turned off via `UnhighlightSearch` action
164    (triggered by Esc key by default) or toggled on/off via `ToggleHighlightSearch`
165    action. Note that these actions don't change `hlsearch` setting.
166    As long as `hlsearch` is set to true, after the next search the highlighting
167    is turned on again.
168
169         default value: `false`
170
171 * `incsearch`: enable incremental search in "Find" prompt (matching as you type).
172
173         default value: `true`
174
175 * `ignorecase`: perform case-insensitive searches.
176
177         default value: `true`
178
179 * `indentchar`: sets the indentation character.
180
181         default value: ` ` (space)
182
183 * `infobar`: enables the line at the bottom of the editor where messages are
184    printed. This option is `global only`.
185
186         default value: `true`
187
188 * `keepautoindent`: when using autoindent, whitespace is added for you. This
189    option determines if when you move to the next line without any insertions
190    the whitespace that was added should be deleted to remove trailing
191    whitespace.  By default, the autoindent whitespace is deleted if the line
192    was left empty.
193
194         default value: `false`
195
196 * `keymenu`: display the nano-style key menu at the bottom of the screen. Note
197    that ToggleKeyMenu is bound to `Alt-g` by default and this is displayed in
198    the statusline. To disable this, simply by `Alt-g` to `UnbindKey`.
199
200         default value: `false`
201
202 * `matchbrace`: underline matching braces for '()', '{}', '[]' when the cursor
203    is on a brace character.
204
205     default value: `true`
206
207 * `mkparents`: if a file is opened on a path that does not exist, the file
208    cannot be saved because the parent directories don't exist. This option lets
209    micro automatically create the parent directories in such a situation.
210
211     default value: `false`
212
213 * `mouse`: mouse support. When mouse support is disabled,
214    usually the terminal will be able to access mouse events which can be useful
215    if you want to copy from the terminal instead of from micro (if over ssh for
216    example, because the terminal has access to the local clipboard and micro
217    does not).
218
219         default value: `true`
220
221 * `paste`: treat characters sent from the terminal in a single chunk as a paste
222    event rather than a series of manual key presses. If you are pasting using
223    the terminal keybinding (not Ctrl-v, which is micro's default paste
224    keybinding) then it is a good idea to enable this option during the paste
225    and disable once the paste is over. See `> help copypaste` for details about
226    copying and pasting in a terminal environment.
227
228     default value: `false`
229
230 * `parsecursor`: if enabled, this will cause micro to parse filenames such as
231    file.txt:10:5 as requesting to open `file.txt` with the cursor at line 10
232    and column 5. The column number can also be dropped to open the file at a
233    given line and column 0. Note that with this option enabled it is not possible
234    to open a file such as `file.txt:10:5`, where `:10:5` is part of the filename.
235    It is also possible to open a file with a certain cursor location by using the
236    `+LINE,COL` flag syntax. See `micro -help` for the command line options.
237
238     default value: `false`
239
240 * `permbackup`: this option causes backups (see `backup` option) to be
241    permanently saved. With permanent backups, micro will not remove backups when
242    files are closed and will never apply them to existing files. Use this option
243    if you are interested in manually managing your backup files.
244
245     default value: `false`
246
247 * `pluginchannels`: list of URLs pointing to plugin channels for downloading and
248    installing plugins. A plugin channel consists of a json file with links to
249    plugin repos, which store information about plugin versions and download URLs.
250    By default, this option points to the official plugin channel hosted on GitHub
251    at https://github.com/micro-editor/plugin-channel.
252
253     default value: `https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json`
254
255 * `pluginrepos`: a list of links to plugin repositories.
256
257     default value: ``
258
259 * `readonly`: when enabled, disallows edits to the buffer. It is recommended
260    to only ever set this option locally using `setlocal`.
261
262     default value: `false`
263
264 * `rmtrailingws`: micro will automatically trim trailing whitespaces at ends of
265    lines.
266
267         default value: `false`
268
269 * `ruler`: display line numbers.
270
271         default value: `true`
272
273 * `relativeruler`: make line numbers display relatively. If set to true, all lines except
274         for the line that the cursor is located will display the distance from the 
275         cursor's line. 
276
277         default value: `false` 
278
279 * `savecursor`: remember where the cursor was last time the file was opened and
280    put it there when you open the file again. Information is saved to
281    `~/.config/micro/buffers/`
282
283         default value: `false`
284
285 * `savehistory`: remember command history between closing and re-opening
286    micro. Information is saved to `~/.config/micro/buffers/history`.
287
288     default value: `true`
289
290 * `saveundo`: when this option is on, undo is saved even after you close a file
291    so if you close and reopen a file, you can keep undoing. Information is
292    saved to `~/.config/micro/buffers/`.
293
294         default value: `false`
295
296 * `scrollbar`: display a scroll bar
297
298     default value: `false`
299
300 * `scrollmargin`: margin at which the view starts scrolling when the cursor
301    approaches the edge of the view.
302
303         default value: `3`
304
305 * `scrollspeed`: amount of lines to scroll for one scroll event.
306
307         default value: `2`
308
309 * `smartpaste`: add leading whitespace when pasting multiple lines.
310    This will attempt to preserve the current indentation level when pasting an
311    unindented block.
312
313         default value: `true`
314
315 * `softwrap`: wrap lines that are too long to fit on the screen.
316
317         default value: `false`
318
319 * `splitbottom`: when a horizontal split is created, create it below the
320    current split.
321
322         default value: `true`
323
324 * `splitright`: when a vertical split is created, create it to the right of the
325    current split.
326
327         default value: `true`
328
329 * `statusformatl`: format string definition for the left-justified part of the
330    statusline. Special directives should be placed inside `$()`. Special
331    directives include: `filename`, `modified`, `line`, `col`, `opt`, `bind`.
332    The `opt` and `bind` directives take either an option or an action afterward
333    and fill in the value of the option or the key bound to the action.
334
335     default value: `$(filename) $(modified)($(line),$(col)) $(status.paste)|
336                     ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)`
337
338 * `statusformatr`: format string definition for the right-justified part of the
339    statusline.
340
341     default value: `$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help`
342
343 * `statusline`: display the status line at the bottom of the screen.
344
345         default value: `true`
346
347 * `sucmd`: specifies the super user command. On most systems this is "sudo" but
348    on BSD it can be "doas." This option can be customized and is only used when
349    saving with su.
350
351         default value: `sudo`
352
353 * `syntax`: enables syntax highlighting.
354
355         default value: `true`
356
357 * `tabmovement`: navigate spaces at the beginning of lines as if they are tabs
358    (e.g. move over 4 spaces at once). This option only does anything if
359    `tabstospaces` is on.
360
361         default value: `false`
362
363 * `tabsize`: the size in spaces that a tab character should be displayed with.
364
365         default value: `4`
366
367 * `tabstospaces`: use spaces instead of tabs.
368
369         default value: `false`
370
371 * `useprimary` (only useful on unix): defines whether or not micro will use the
372    primary clipboard to copy selections in the background. This does not affect
373    the normal clipboard using Ctrl-c and Ctrl-v.
374
375         default value: `true`
376
377 * `wordwrap`: wrap long lines by words, i.e. break at spaces. This option
378    only does anything if `softwrap` is on.
379
380         default value: `false`
381
382 * `xterm`: micro will assume that the terminal it is running in conforms to
383   `xterm-256color` regardless of what the `$TERM` variable actually contains.
384    Enabling this option may cause unwanted effects if your terminal in fact
385    does not conform to the `xterm-256color` standard.
386
387     Default value: `false`
388
389 ---
390
391 Plugin options: all plugins come with a special option to enable or disable
392 them. The option is a boolean with the same name as the plugin itself.
393
394 By default, the following plugins are provided, each with an option to enable
395 or disable them:
396
397 * `autoclose`: automatically closes brackets, quotes, etc...
398 * `comment`: provides automatic commenting for a number of languages
399 * `ftoptions`: alters some default options depending on the filetype
400 * `linter`: provides extensible linting for many languages
401 * `literate`: provides advanced syntax highlighting for the Literate
402    programming tool.
403 * `status`: provides some extensions to the status line (integration with
404    Git and more).
405 * `diff`: integrates the `diffgutter` option with Git. If you are in a Git
406    directory, the diff gutter will show changes with respect to the most
407    recent Git commit rather than the diff since opening the file.
408
409 Any option you set in the editor will be saved to the file
410 ~/.config/micro/settings.json so, in effect, your configuration file will be 
411 created for you. If you'd like to take your configuration with you to another
412 machine, simply copy the settings.json to the other machine.
413
414 ## Settings.json file
415
416 The settings.json file should go in your configuration directory (by default
417 at `~/.config/micro`), and should contain only options which have been modified
418 from their default setting. Here is the full list of options in json format,
419 so that you can see what the formatting should look like.
420
421 ```json
422 {
423     "autoclose": true,
424     "autoindent": true,
425     "autosave": 0,
426     "autosu": false,
427     "backup": true,
428     "backupdir": "",
429     "basename": false,
430     "clipboard": "external",
431     "colorcolumn": 0,
432     "colorscheme": "default",
433     "comment": true,
434     "cursorline": true,
435     "diff": true,
436     "diffgutter": false,
437     "divchars": "|-",
438     "divreverse": true,
439     "encoding": "utf-8",
440     "eofnewline": true,
441     "fastdirty": false,
442     "fileformat": "unix",
443     "filetype": "unknown",
444     "incsearch": true,
445     "ftoptions": true,
446     "ignorecase": false,
447     "indentchar": " ",
448     "infobar": true,
449     "initlua": true,
450     "keepautoindent": false,
451     "keymenu": false,
452     "linter": true,
453     "literate": true,
454     "matchbrace": true,
455     "mkparents": false,
456     "mouse": true,
457     "parsecursor": false,
458     "paste": false,
459     "permbackup": false,
460     "pluginchannels": [
461         "https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"
462     ],
463     "pluginrepos": [],
464     "readonly": false,
465     "relativeruler": false,
466     "rmtrailingws": false,
467     "ruler": true,
468     "savecursor": false,
469     "savehistory": true,
470     "saveundo": false,
471     "scrollbar": false,
472     "scrollmargin": 3,
473     "scrollspeed": 2,
474     "smartpaste": true,
475     "softwrap": false,
476     "splitbottom": true,
477     "splitright": true,
478     "status": true,
479     "statusformatl": "$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)",
480     "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help",
481     "statusline": true,
482     "sucmd": "sudo",
483     "syntax": true,
484     "tabmovement": false,
485     "tabsize": 4,
486     "tabstospaces": false,
487     "useprimary": true,
488     "xterm": false
489 }
490 ```
491
492 ## Global and local settings
493
494 You can set these settings either globally or locally. Locally means that the
495 setting won't be saved to `~/.config/micro/settings.json` and that it will only
496 be set in the current buffer. Setting an option globally is the default, and
497 will set the option in all buffers. Use the `setlocal` command to set an option
498 locally rather than globally.
499
500 The `colorscheme` option is global only, and the `filetype` option is local
501 only. To set an option locally, use `setlocal` instead of `set`.
502
503 In the `settings.json` file you can also put set options locally by specifying
504 either a glob or a filetype. Here is an example which has `tabstospaces` on for
505 all files except Go files, and `tabsize` 4 for all files except Ruby files:
506
507 ```json
508 {
509         "ft:go": {
510                 "tabstospaces": false
511         },
512         "ft:ruby": {
513                 "tabsize": 2
514         },
515         "tabstospaces": true,
516         "tabsize": 4
517 }
518 ```
519
520 Or similarly you can match with globs:
521
522 ```json
523 {
524         "*.go": {
525                 "tabstospaces": false
526         },
527         "*.rb": {
528                 "tabsize": 2
529         },
530         "tabstospaces": true,
531         "tabsize": 4
532 }
533 ```