X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=runtime%2Fhelp%2Ftutorial.md;h=bdc4f6dee717073b96dfda625ec6b82e8bacb8a7;hb=98ddb62af48156a5aae0b4068bbfc39b992bec91;hp=b9ef6f69c9c3c1084ae48f9f85f307d21155cf2e;hpb=dce56a2b85f4248db43247deafd7598759ef8374;p=micro.git diff --git a/runtime/help/tutorial.md b/runtime/help/tutorial.md index b9ef6f69..bdc4f6de 100644 --- a/runtime/help/tutorial.md +++ b/runtime/help/tutorial.md @@ -1,31 +1,33 @@ # Tutorial -This is a brief intro to micro's configuration system that will give some -simple examples showing how to configure settings, rebind keys, -and use `init.lua` to configure micro to your liking. +This is a brief intro to micro's configuration system that will give some simple +examples showing how to configure settings, rebind keys, and use `init.lua` to +configure micro to your liking. Hopefully you'll find this useful. +See `> help defaultkeys` for a list an explanation of the default keybindings. + ### Settings In micro, your settings are stored in `~/.config/micro/settings.json`, a file -that is created the first time you run micro. It is a json file which holds -all the settings and their values. To change an option, you can either -change the value in the `settings.json` file, or you can type it in directly -while using micro. - -Simply press CtrlE to go to command mode, and type `set option value` (in the -future, I will use `> set option value` to indicate pressing CtrlE). The -change will take effect immediately and will also be saved to the `settings.json` -file so that the setting will stick even after you close micro. - -You can also set options locally which means that the setting will only have -the value you give it in the buffer you set it in. For example, if you have -two splits open, and you type `> setlocal tabsize 2`, the tabsize will only -be 2 in the current buffer. Also micro will not save this local change to the +that is created the first time you run micro. It is a json file which holds all +the settings and their values. To change an option, you can either change the +value in the `settings.json` file, or you can type it in directly while using +micro. + +Press CtrlE to go to command mode, and type `set option value` (in the +future, I will use `> set option value` to indicate pressing CtrlE). The change +will take effect immediately and will also be saved to the `settings.json` file +so that the setting will stick even after you close micro. + +You can also set options locally which means that the setting will only have the +value you give it in the buffer you set it in. For example, if you have two +splits open, and you type `> setlocal tabsize 2`, the tabsize will only be 2 in +the current buffer. Also micro will not save this local change to the `settings.json` file. However, you can still set options locally in the -`settings.json` file. For example, if you want the `tabsize` to be 2 only -in Ruby files, and 4 otherwise, you could put the following in `settings.json`: +`settings.json` file. For example, if you want the `tabsize` to be 2 only in +Ruby files, and 4 otherwise, you could put the following in `settings.json`: ```json { @@ -43,8 +45,8 @@ If you would like to know more about all the available options, see the ### Keybindings -Keybindings work in much the same way as options. You configure them using -the `~/.config/micro/bindings.json` file. +Keybindings work in much the same way as options. You configure them using the +`~/.config/micro/bindings.json` file. For example if you would like to bind `CtrlR` to redo you could put the following in `bindings.json`: @@ -67,34 +69,43 @@ what actions are available, see the `keybindings` help topic (`> help keybinding ### Configuration with Lua If you need more power than the json files provide, you can use the `init.lua` -file. Create it in `~/.config/micro`. This file is a lua file that is run -when micro starts and is essentially a one-file plugin. +file. Create it in `~/.config/micro`. This file is a lua file that is run when +micro starts and is essentially a one-file plugin. The plugin name is `initlua`. -I'll show you how to use the `init.lua` file by giving an example of how to -create a binding to `CtrlR` which will execute `go run` on the current file, +This example will show you how to use the `init.lua` file by creating +a binding to `CtrlR` which will execute the bash command `go run` on the current file, given that the current file is a Go file. You can do that by putting the following in `init.lua`: ```lua -function gorun() - local buf = CurView().Buf -- The current buffer +local config = import("micro/config") +local shell = import("micro/shell") + +function init() + -- true means overwrite any existing binding to CtrlR + -- this will modify the bindings.json file + config.TryBindKey("CtrlR", "lua:initlua.gorun", true) +end + +function gorun(bp) + local buf = bp.Buf if buf:FileType() == "go" then - HandleShellCommand("go run " .. buf.Path, true, true) -- the first true means don't run it in the background + -- the true means run in the foreground + -- the false means send output to stdout (instead of returning it) + shell.RunInteractiveShell("go run " .. buf.Path, true, false) end end - -BindKey("CtrlR", "init.gorun") ``` -Alternatively, you could get rid of the `BindKey` line, and put this line in -the `bindings.json` file: +Alternatively, you could get rid of the `TryBindKey` line, and put this line in the +`bindings.json` file: ```json { - "CtrlR": "init.gorun" + "CtrlR": "lua:initlua.gorun" } ``` -For more information about plugins and the lua system that micro uses, see -the `plugins` help topic (`> help plugins`). +For more information about plugins and the lua system that micro uses, see the +`plugins` help topic (`> help plugins`).