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