]> git.lizzy.rs Git - micro.git/blob - runtime/help/options.md
Better backup behavior
[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 the `$XDG_CONFIG_HOME/micro` as the configuration directory. As per
6 the XDG spec, if `$XDG_CONFIG_HOME` is not set, `~/.config/micro` is used as 
7 the config directory.
8
9 Here are the options that you can set:
10
11 * `autoindent`: when creating a new line, use the same indentation as the 
12    previous line.
13
14         default value: `true`
15
16 * `autosave`: micro will save the buffer every `n` seconds automatically
17    (where `n` is the value of the option). Micro also will automatically
18    save and quit when you exit without asking. Be careful when using this
19    feature, because you might accidentally save a file, overwriting what
20    was there before. If the value of the option is `0` then micro will
21    not autosave.
22
23         default value: `0`
24
25 * `backup`: micro will automatically keep backups of all open buffers. Backups
26    are stored in `~/.config/micro/backups` and are removed when the buffer is
27    closed cleanly. In the case of a system crash or a micro crash, the contents
28    of the buffer can be recovered automatically by opening the file that
29    was being edited before the crash, or manually by searching for the backup
30    in the backup directory. Backups are made in the background when a buffer is
31    modified and the latest backup is more than 8 seconds old, or when micro
32    detects a crash. It is highly recommended that you leave this feature enabled.
33
34     default value: `true`
35
36 * `basename`: in the infobar, show only the basename of the file being edited
37    rather than the full path.
38
39     default value: `false`
40
41 * `colorcolumn`: if this is not set to 0, it will display a column at the
42   specified column. This is useful if you want column 80 to be highlighted
43   special for example.
44
45         default value: `0`
46
47 * `colorscheme`: loads the colorscheme stored in 
48    $(configDir)/colorschemes/`option`.micro, This setting is `global only`.
49
50         default value: `default`
51
52         Note that the default colorschemes (default, solarized, and solarized-tc)
53         are not located in configDir, because they are embedded in the micro binary.
54
55         The colorscheme can be selected from all the files in the 
56         ~/.config/micro/colorschemes/ directory. Micro comes by default with three
57         colorschemes:
58
59         You can read more about micro's colorschemes in the `colors` help topic
60         (`help colors`).
61
62 * `cursorline`: highlight the line that the cursor is on in a different color
63    (the color is defined by the colorscheme you are using).
64
65         default value: `true`
66
67 * `encoding`: the encoding to open and save files with. Supported encodings
68    are listed at https://www.w3.org/TR/encoding/.
69
70     default value: `utf-8`
71
72 * `eofnewline`: micro will automatically add a newline to the file.
73
74         default value: `false`
75
76 * `fastdirty`: this determines what kind of algorithm micro uses to determine if
77    a buffer is modified or not. When `fastdirty` is on, micro just uses a
78    boolean `modified` that is set to `true` as soon as the user makes an edit.
79    This is fast, but can be inaccurate. If `fastdirty` is off, then micro will
80    hash the current buffer against a hash of the original file (created when the
81    buffer was loaded). This is more accurate but obviously more resource
82    intensive. This option is only for people who really care about having
83    accurate modified status.
84
85         default value: `true`
86
87 * `fileformat`: this determines what kind of line endings micro will use for the
88    file. UNIX line endings are just `\n` (linefeed) whereas dos line endings are
89    `\r\n` (carriage return + linefeed). The two possible values for this option
90    are `unix` and `dos`. The fileformat will be automatically detected (when you
91    open an existing file) and displayed on the statusline, but this option is
92    useful if you would like to change the line endings or if you are starting a
93    new file.
94
95         default value: `unix`
96
97 * `filetype`: sets the filetype for the current buffer. This setting is
98    `local only`.
99
100         default value: this will be automatically set depending on the file you have
101         open
102
103 * `ignorecase`: perform case-insensitive searches.
104
105         default value: `false`
106
107 * `indentchar`: sets the indentation character.
108
109         default value: ` ` (space)
110
111 * `infobar`: enables the line at the bottom of the editor where messages are
112    printed. This option is `global only`.
113
114         default value: `true`
115
116 * `keepautoindent`: when using autoindent, whitespace is added for you. This
117    option determines if when you move to the next line without any insertions
118    the whitespace that was added should be deleted to remove trailing whitespace.
119    By default, the autoindent whitespace is deleted if the line was left empty.
120
121         default value: `false`
122
123 * `keymenu`: display the nano-style key menu at the bottom of the screen. Note
124    that ToggleKeyMenu is bound to `Alt-g` by default and this is displayed in
125    the statusline. To disable this, simply by `Alt-g` to `UnbindKey`.
126
127         default value: `false`
128
129 * `matchbrace`: underline matching braces for '()', '{}', '[]' when the cursor
130    is on a brace character.
131
132     default value: `true`
133
134 * `mkparents`: if a file is opened on a path that does not exist, the file cannot
135    be saved because the parent directories don't exist. This option lets micro
136    automatically create the parent directories in such a situation.
137
138     default value: `false`
139
140 * `mouse`: whether to enable mouse support. When mouse support is disabled,
141    usually the terminal will be able to access mouse events which can be useful
142    if you want to copy from the terminal instead of from micro (if over ssh for
143    example, because the terminal has access to the local clipboard and micro
144    does not).
145
146         default value: `true`
147
148 * `rmtrailingws`: micro will automatically trim trailing whitespaces at eol.
149
150         default value: `false`
151
152 * `ruler`: display line numbers.
153
154         default value: `true`
155
156 * `savecursor`: remember where the cursor was last time the file was opened and
157    put it there when you open the file again.
158
159         default value: `false`
160
161 * `savehistory`: remember command history between closing and re-opening
162    micro.
163
164     default value: `true`
165
166 * `saveundo`: when this option is on, undo is saved even after you close a file
167    so if you close and reopen a file, you can keep undoing.
168
169         default value: `false`
170
171 * `scrollbar`: display a scroll bar
172
173     default value: `false`
174
175 * `scrollmargin`: amount of lines you would like to see above and below the
176    cursor.
177
178         default value: `3`
179
180 * `scrollspeed`: amount of lines to scroll for one scroll event.
181
182         default value: `2`
183
184 * `smartpaste`: should micro add leading whitespace when pasting multiple lines?
185    This will attempt to preserve the current indentation level when pasting an
186    unindented block.
187
188         default value: `true`
189
190 * `softwrap`: should micro wrap lines that are too long to fit on the screen.
191
192         default value: `false`
193
194 * `splitbottom`: when a horizontal split is created, should it be created below
195    the current split?
196
197         default value: `true`
198
199 * `splitright`: when a vertical split is created, should it be created to the
200    right of the current split?
201
202         default value: `true`
203
204 * `statusformatl`: format string definition for the left-justified part of the
205    statusline. Special directives should be placed inside `$()`. Special
206    directives include: `filename`, `modified`, `line`, `col`, `opt`, `bind`.
207    The `opt` and `bind` directives take either an option or an action afterward
208    and fill in the value of the option or the key bound to the action.
209
210     default value: `$(filename) $(modified)($(line),$(col)) $(opt:filetype)
211                     $(opt:fileformat) $(opt:encoding)`
212
213 * `statusformatl`: format string definition for the left-justified part of the
214    statusline.
215
216     default value: `$(bind:ToggleKeyMenu): show bindings, $(bind:ToggleHelp):
217                     toggle help`
218
219 * `statusline`: display the status line at the bottom of the screen.
220
221         default value: `true`
222
223 * `sucmd`: specifies the super user command. On most systems this is "sudo" but
224    on BSD it can be "doas." This option can be customized and is only used when
225    saving with su.
226
227         default value: `sudo`
228
229 * `syntax`: turns syntax on or off.
230
231         default value: `true`
232
233 * `tabmovement`: navigate spaces at the beginning of lines as if they are tabs
234    (e.g. move over 4 spaces at once). This option only does anything if
235    `tabstospaces` is on.
236
237         default value: `false`
238
239 * `tabsize`: sets the tab size to `option`
240
241         default value: `4`
242
243 * `tabstospaces`: use spaces instead of tabs
244
245         default value: `false`
246
247 * `termtitle`: defines whether or not your terminal's title will be set by micro
248    when opened.
249
250         default value: `false`
251
252 * `useprimary` (only useful on *nix): defines whether or not micro will use the
253    primary clipboard to copy selections in the background. This does not affect
254    the normal clipboard using Ctrl-C and Ctrl-V.
255
256         default value: `true`
257
258 ---
259
260 Plugin options: all plugins come with a special option to enable or disable them. THe option
261 is a boolean with the same name as the plugin itself.
262
263 Any option you set in the editor will be saved to the file 
264 ~/.config/micro/settings.json so, in effect, your configuration file will be 
265 created for you. If you'd like to take your configuration with you to another
266 machine, simply copy the settings.json to the other machine.
267
268 ## Global and local settings
269
270 You can set these settings either globally or locally. Locally means that the
271 setting won't be saved to `~/.config/micro/settings.json` and that it will only
272 be set in the current buffer. Setting an option globally is the default, and
273 will set the option in all buffers.
274
275 The `colorscheme` option is global only, and the `filetype` option is local
276 only. To set an option locally, use `setlocal` instead of `set`.
277
278 In the `settings.json` file you can also put set options locally by specifying either
279 a glob or a filetype. Here is an example which has `tabstospaces` on for all files except Go
280 files, and `tabsize` 4 for all files except Ruby files:
281
282 ```json
283 {
284         "ft:go": {
285                 "tabstospaces": false
286         },
287         "ft:ruby": {
288                 "tabsize": 2
289         },
290         "tabstospaces": true,
291         "tabsize": 4
292 }
293 ```
294
295 Or similarly you can match with globs:
296
297 ```json
298 {
299         "*.go": {
300                 "tabstospaces": false
301         },
302         "*.rb": {
303                 "tabsize": 2
304         },
305         "tabstospaces": true,
306         "tabsize": 4
307 }
308 ```