This commit is contained in:
Zachary Yedidia
2016-04-24 09:01:42 -04:00
5 changed files with 267 additions and 256 deletions

View File

@@ -87,67 +87,17 @@ $ ifconfig | micro
You can move the cursor around with the arrow keys and mouse.
#### Keybindings
* Ctrl-q: Quit
* Ctrl-s: Save
* Ctrl-o: Open file
* Ctrl-z: Undo
* Ctrl-y: Redo
* Ctrl-f: Find
* Ctrl-n: Find next
* Ctrl-p: Find previous
* Ctrl-a: Select all
* Ctrl-c: Copy
* Ctrl-x: Cut
* Ctrl-v: Paste
* Ctrl-g: Open help
* Ctrl-u: Half page up
* Ctrl-d: Half page down
* PageUp: Page up
* PageDown: Page down
* Home: Go to beginning
* End: Go to end
* Ctrl-e: Execute a command
You can also use the mouse to manipulate the text. Simply clicking and dragging will select text. You can also double click
to enable word selection, and triple click to enable line selection.
You can also run `$ micro -version` to get the version number. Since there is no release, this just gives you the
You can run `$ micro -version` to get the version number. Since there is no release, this just gives you the
commit hash. The version is unknown if you built with `go get`, instead use `make install` or `make` to get a binary
with a version number defined.
# Configuration
#### Help text
Configuration directory:
Micro uses the `$XDG_CONFIG_HOME/micro` as the configuration directory. As per the XDG spec,
if `$XDG_CONFIG_HOME` is not set, `~/.config/micro` is used as the config directory.
At this point, there isn't much you can configure.
Micro has a few options which you can set:
* colorscheme
* tabsize
* syntax
* tabsToSpaces
To set an option run Ctrl-e to execute a command, and type `set option value`, so to set the tabsize to 8 it would be `set tabsize 8`. The default is 4.
The syntax option can simply be on or off, so for example to turn syntax highlighting off, run `set syntax off`. The default is on.
The tabsToSpaces option is on or off. It specifies whether to use spaces instead of tabs or not. The default is off.
The colorscheme can be selected from all the files in the `~/.config/micro/colorschemes/` directory. Micro comes by default with three colorschemes:
* default: this is the default colorscheme.
* solarized: this is the solarized colorscheme (used in the screenshot). You should have the solarized color palette in your terminal to use it.
* solarized-tc: this is the solarized colorscheme for true color, just make sure your terminal supports true color before using it and that the `MICRO_TRUECOLOR` environment variable is set to 1 before starting micro.
These are embedded in the Go binary, but to see their source code, look [here](./runtime/colorschemes)
Any option you set in the editor will be saved to the file `~/.config/micro/settings.json` so, in effect, your configuration file will be created
for you. If you'd like to take your configuration with you to another machine, simply copy the `settings.json` to the other machine.
See the [help text](./runtime/help/help.md) for information about keybindings, editor commands, colorschemes and
configuration options.
# Contributing

View File

@@ -1,117 +1,13 @@
package main
import (
"github.com/gdamore/tcell"
"strings"
)
var helpTxt string
const helpTxt = `Press Ctrl-g to close help
Micro keybindings:
Ctrl-q: Quit
Ctrl-s: Save
Ctrl-o: Open file
Ctrl-z: Undo
Ctrl-y: Redo
Ctrl-f: Find
Ctrl-n: Find next
Ctrl-p: Find previous
Ctrl-a: Select all
Ctrl-c: Copy
Ctrl-x: Cut
Ctrl-v: Paste
Ctrl-g: Open this help screen
Ctrl-u: Half page up
Ctrl-d: Half page down
PageUp: Page up
PageDown: Page down
Home: Go to beginning
End: Go to end
Ctrl-e: Execute a command
Possible commands:
'quit': Quits micro
'save': saves the current buffer
'replace "search" "value"': This will replace 'search' with 'value'.
Note that 'search' must be a valid regex. If one of the arguments
does not have any spaces in it, you may omit the quotes.
'set option value': sets the option to value. Please see the next section for a list of options you can set
Micro options:
Configuration directory:
Micro uses the $XDG_CONFIG_HOME/micro as the configuration directory. As per the XDG spec,
if $XDG_CONFIG_HOME is not set, ~/.config/micro is used as the config directory.
colorscheme: loads the colorscheme stored in $(configDir)/colorschemes/'option'.micro
default value: 'default'
Note that the default colorschemes (default, solarized, and solarized-tc) are not located in configDir,
because they are embedded in the micro binary
tabsize: sets the tab size to 'option'
default value: '4'
syntax: turns syntax on or off
default value: 'on'
tabsToSpaces: use spaces instead of tabs
default value: 'off'
`
// DisplayHelp displays the help txt
// It blocks the main loop
func DisplayHelp() {
topline := 0
_, height := screen.Size()
screen.HideCursor()
totalLines := strings.Split(helpTxt, "\n")
for {
screen.Clear()
lineEnd := topline + height
if lineEnd > len(totalLines) {
lineEnd = len(totalLines)
}
lines := totalLines[topline:lineEnd]
for y, line := range lines {
for x, ch := range line {
st := defStyle
screen.SetContent(x, y, ch, nil, st)
}
}
screen.Show()
event := screen.PollEvent()
switch e := event.(type) {
case *tcell.EventResize:
_, height = e.Size()
case *tcell.EventKey:
switch e.Key() {
case tcell.KeyUp:
if topline > 0 {
topline--
}
case tcell.KeyDown:
if topline < len(totalLines)-height {
topline++
}
case tcell.KeyCtrlQ, tcell.KeyCtrlW, tcell.KeyEscape, tcell.KeyCtrlC:
return
}
}
// LoadHelp loads the help text from inside the binary
func LoadHelp() {
data, err := Asset("runtime/help/help.md")
if err != nil {
TermMessage("Unable to load help text")
return
}
helpTxt = string(data)
}

View File

@@ -185,6 +185,8 @@ func main() {
InitBindings()
// Load the syntax files, including the colorscheme
LoadSyntaxFiles()
// Load the help files
LoadHelp()
buf := NewBuffer(string(input), filename)
@@ -242,7 +244,7 @@ func main() {
}
case tcell.KeyCtrlG:
if !helpOpen {
helpBuffer := NewBuffer(helpTxt, "")
helpBuffer := NewBuffer(helpTxt, "help.md")
helpBuffer.name = "Help"
helpOpen = true
view.OpenBuffer(helpBuffer)

File diff suppressed because one or more lines are too long

138
runtime/help/help.md Normal file
View File

@@ -0,0 +1,138 @@
# Micro help text
Micro is a terminal-based text editor that aims to be easy to use and intuitive,
while also taking advantage of the full capabilities of modern terminals.
### Usage
Once you have built the editor, simply start it by running `micro path/to/file.txt` or simply `micro` to open an empty buffer.
Micro also supports creating buffers from stdin:
```
$ ifconfig | micro
```
You can move the cursor around with the arrow keys and mouse.
### Keybindings
These are the default keybindings, along with their actions.
#### Editor bindings
* Ctrl-q: Quit
* Ctrl-e: Execute a command
* Ctrl-g: Toggle help text
* Ctrl-b: Run a shell command
#### Buffer bindings
* Ctrl-s: Save
* Ctrl-o: Open file
* Ctrl-z: Undo
* Ctrl-y: Redo
* Ctrl-f: Find
* Ctrl-n: Find next
* Ctrl-p: Find previous
* Ctrl-a: Select all
* Ctrl-c: Copy
* Ctrl-x: Cut
* Ctrl-k: Cut line
* Ctrl-v: Paste
* Ctrl-u: Half page up
* Ctrl-d: Half page down
* PageUp: Page up
* PageDown: Page down
* Home: Go to beginning of file
* End: Go to end of file
* Ctrl-r: Toggle line numbers
The buffer bindings may be rebound using the `~/.config/micro/bindings.json` file. Each key is bound to an action.
For example, to bind `Ctrl-y` to undo and `Ctrl-z` to redo, you could put the following in the `bindings.json` file.
```json
{
"CtrlY": "Undo",
"CtrlZ": "Redo"
}
```
### Possible commands
You can execute an editor command by pressing `Ctrl-e` followed by the command.
Here are the possible commands that you can use.
* `quit`: Quits micro.
* `save`: Saves the current buffer.
* `replace "search" "value"`: This will replace `search` with `value`.
Note that `search` must be a valid regex. If one of the arguments
does not have any spaces in it, you may omit the quotes.
* `set option value`: sets the option to value. Please see the next section for a list of options you can set.
* `run sh-command`: runs the given shell command in the background. The command's output will be displayed
in one line when it finishes running.
### Options
Micro stores all of the user configuration in its configuration directory.
Micro uses the `$XDG_CONFIG_HOME/micro` as the configuration directory. As per the XDG spec,
if `$XDG_CONFIG_HOME` is not set, `~/.config/micro` is used as the config directory.
Here are the options that you can set:
* `colorscheme`: loads the colorscheme stored in $(configDir)/colorschemes/`option`.micro
default value: `default`
Note that the default colorschemes (default, solarized, and solarized-tc) are not located in configDir,
because they are embedded in the micro binary
The colorscheme can be selected from all the files in the ~/.config/micro/colorschemes/ directory. Micro comes by default with three colorschemes:
* default: this is the default colorscheme.
* solarized: this is the solarized colorscheme (used in the screenshot). You should have the
solarized color palette in your terminal to use it.
* solarized-tc: this is the solarized colorscheme for true color, just make sure
your terminal supports true color before using it and that the MICRO_TRUECOLOR environment
variable is set to 1 before starting micro.
* `tabsize`: sets the tab size to `option`
default value: `4`
* `syntax`: turns syntax on or off
default value: `on`
* `tabsToSpaces`: use spaces instead of tabs
default value: `off`
* `autoindent`: when creating a new line use the same indentation as the previous line
default value: `on`
* `ruler`: display line numbers
default value: `on`
* `gofmt`: Run `gofmt` whenever the file is saved (this only applies to `.go` files)
default value: `off`
* `goimports`: run `goimports` whenever the file is saved (this only applies to `.go` files)
default value: `off`
Any option you set in the editor will be saved to the file ~/.config/micro/settings.json so,
in effect, your configuration file will be created for you. If you'd like to take your configuration
with you to another machine, simply copy the settings.json to the other machine.
In the future, the `gofmt` and `goimports` will be refactored using a plugin system. However,
currently they just make it easier to program micro in micro.