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