README.md 11.8 KB
Newer Older
Z
Zachary Yedidia 已提交
1
<img alt="micro logo" src="./assets/micro-logo.svg" width="500px"/>
Z
Zachary Yedidia 已提交
2

Z
Zachary Yedidia 已提交
3
[![Build Status](https://travis-ci.org/zyedidia/micro.svg?branch=master)](https://travis-ci.org/zyedidia/micro)
4
[![Go Report Card](https://goreportcard.com/badge/github.com/zyedidia/micro)](https://goreportcard.com/report/github.com/zyedidia/micro)
Z
Zachary Yedidia 已提交
5
[![Release](https://img.shields.io/github/release/zyedidia/micro.svg?label=Release)](https://github.com/zyedidia/micro/releases)
Z
Zachary Yedidia 已提交
6
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/zyedidia/micro/blob/master/LICENSE)
Z
Zachary Yedidia 已提交
7
[![Join the chat at https://gitter.im/zyedidia/micro](https://badges.gitter.im/zyedidia/micro.svg)](https://gitter.im/zyedidia/micro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Z
Zachary Yedidia 已提交
8
[![Snap Status](https://snapcraft.io/micro/badge.svg)](https://snapcraft.io/micro)
Z
Zachary Yedidia 已提交
9

10
**micro** is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities
11
of modern terminals. It comes as a single, batteries-included, static binary with no dependencies; you can download and use it right now!
Z
Zachary Yedidia 已提交
12

13 14
As its name indicates, micro aims to be somewhat of a successor to the nano editor by being easy to install and use.
It strives to be enjoyable as a full-time editor for people who prefer to work in a terminal, or those who regularly edit files over SSH.
15

Z
Zachary Yedidia 已提交
16 17
Here is a picture of micro editing its source code.

Z
Zachary Yedidia 已提交
18
![Screenshot](./assets/micro-solarized.png)
Z
Zachary Yedidia 已提交
19

Z
Zachary Yedidia 已提交
20
To see more screenshots of micro, showcasing some of the default color schemes, see [here](https://micro-editor.github.io).
Z
Zachary Yedidia 已提交
21
 
Z
Zachary Yedidia 已提交
22 23
You can also check out the website for Micro at https://micro-editor.github.io.

24
## Table of Contents
Z
Zachary Yedidia 已提交
25

26 27 28 29 30
- [Features](#features)
- [Installation](#installation)
  - [Prebuilt binaries](#prebuilt-binaries)
  - [Package Managers](#package-managers)
  - [Building from source](#building-from-source)
Z
Zachary Yedidia 已提交
31
  - [Fully static binary](#fully-static-binary)
32
  - [macOS terminal](#macos-terminal)
33 34
  - [Linux clipboard support](#linux-clipboard-support)
  - [Colors and syntax highlighting](#colors-and-syntax-highlighting)
J
Jim Tittsler 已提交
35
  - [Cygwin, Mingw, Plan9](#cygwin-mingw-plan9)
36 37 38 39 40 41
- [Usage](#usage)
- [Documentation and Help](#documentation-and-help)
- [Contributing](#contributing)

- - -

42 43 44 45 46
## Features

- Easy to use and install.
- No dependencies or external files are needed — just the binary you can download further down the page.
- Multiple cursors.
Z
Zachary Yedidia 已提交
47
- Common keybindings (<kbd>Ctrl-s</kbd>, <kbd>Ctrl-c</kbd>, <kbd>Ctrl-v</kbd>, <kbd>Ctrl-z</kbd>, …).
48 49 50 51 52 53 54 55
  - Keybindings can be rebound to your liking.
- Sane defaults.
  - You shouldn't have to configure much out of the box (and it is extremely easy to configure).
- Splits and tabs.
- nano-like menu to help you remember the keybindings.
- Extremely good mouse support.
  - This means mouse dragging to create a selection, double click to select by word, and triple click to select by line.
- Cross-platform (it should work on all the platforms Go runs on).
Z
Zachary Yedidia 已提交
56
  - Note that while Windows is supported Mingw/Cygwin is not (see below).
57
- Plugin system (plugins are written in Lua).
58
  - micro has a built-in plugin manager to automatically install, remove, and update plugins.
Z
Zachary Yedidia 已提交
59 60
- Built-in diff gutter.
- Simple autocompletion.
61
- Persistent undo.
Z
Zachary Yedidia 已提交
62
- Automatic linting and error notifications.
63
- Syntax highlighting for over [130 languages](runtime/syntax).
64 65 66 67 68 69 70 71
- Color scheme support.
  - By default, micro comes with 16, 256, and true color themes.
- True color support (set the `MICRO_TRUECOLOR` environment variable to 1 to enable it).
- Copy and paste with the system clipboard.
- Small and simple.
- Easily configurable.
- Macros.
- Common editor features such as undo/redo, line numbers, Unicode support, soft wrapping, …
Z
Zachary Yedidia 已提交
72

73
## Installation
Z
Zachary Yedidia 已提交
74

Z
Zachary Yedidia 已提交
75
To install micro, you can download a [prebuilt binary](https://github.com/zyedidia/micro/releases), or you can build it from source.
76

77
If you want more information about ways to install micro, see this [wiki page](https://github.com/zyedidia/micro/wiki/Installing-Micro).
78

Z
Zachary Yedidia 已提交
79 80 81
Use `micro -version` to get the version information after installing. It is only guaranteed that you are installing the most recent
stable version if you install from the prebuilt binaries, Homebrew, or Snap.

Z
Zachary Yedidia 已提交
82 83
A desktop entry file and man page can be found in the [assets/packaging](https://github.com/zyedidia/micro/tree/master/assets/packaging) directory.

Z
Zachary Yedidia 已提交
84
### Prebuilt binaries
85

Z
Zachary Yedidia 已提交
86
All you need to install micro is one file, the binary itself. It's as simple as that!
87

Z
Zachary Yedidia 已提交
88
Download the binary from the [releases](https://github.com/zyedidia/micro/releases) page.
Z
Zachary Yedidia 已提交
89

90 91
### Installation script

92
There is a script which can install micro for you by downloading the latest prebuilt binary. You can find it at <https://getmic.ro>.
93

Z
Zachary Yedidia 已提交
94
You can easily install micro by running
95

96 97 98
```bash
curl https://getmic.ro | bash
```
99

Z
Zachary Yedidia 已提交
100 101 102
The script will place the micro binary in the current directory. From there, you can move it to a directory on your path of your choosing (e.g. `sudo mv micro /usr/bin`). See its [GitHub repository](https://github.com/benweissmann/getmic.ro) for more information.

To uninstall micro, simply remove the binary, and the configuration directory at `~/.config/micro`.
103 104

### Package managers
Z
Zachary Yedidia 已提交
105

106
You can install micro using Homebrew on Mac:
Z
Zachary Yedidia 已提交
107 108

```
109
brew install micro
Z
Zachary Yedidia 已提交
110 111
```

Z
Zachary Yedidia 已提交
112 113 114 115
**Note for Mac:** All micro keybindings use the control or alt (option) key, not the command
key. By default, macOS terminals do not forward alt key events. To fix this, please see
the section on [macOS terminals](https://github.com/zyedidia/micro#macos-terminal) further below.

Z
Zachary Yedidia 已提交
116
On Linux, you can install micro through [snap](https://snapcraft.io/docs/core/install)
A
Alan Pope 已提交
117 118

```
Z
Zachary Yedidia 已提交
119
snap install micro --classic
A
Alan Pope 已提交
120 121
```

Z
Zachary Yedidia 已提交
122 123 124 125
**Note for Linux:** for interfacing with the local system clipboard, `xclip` or `xsel`
must be installed. Please see the section on [Linux clipboard support](https://github.com/zyedidia/micro#linux-clipboard-support)
further below.

Z
Zachary Yedidia 已提交
126 127 128 129
Micro is also available through other package managers on Linux such as apt, dnf, AUR, Nix, and package managers
for other operating systems. These packages are not guaranteed to be up-to-date.

* Linux: Available in distro-specific package managers.
Z
Zachary Yedidia 已提交
130
    * `apt install micro` (Ubuntu 20.04 `focal`, and Debian `unstable | testing | buster-backports`). At the moment, this package (2.0.1-1) is outdated and has a known bug where debug mode is enabled.
Z
Zachary Yedidia 已提交
131
    * `dnf install micro` (Fedora).
132
    * `pacman -S micro` (Arch Linux).
Z
Zachary Yedidia 已提交
133
    * `eopkg install micro` (Solus).
Z
Zachary Yedidia 已提交
134 135 136 137 138 139
    * See [wiki](https://github.com/zyedidia/micro/wiki/Installing-Micro) for details about CRUX, Termux.
* Windows: [Chocolatey](https://chocolatey.org) and [Scoop](https://github.com/lukesampson/scoop).
    * `choco install micro`.
    * `scoop install micro`.
* OpenBSD: Available in the ports tree and also available as a binary package.
    * `pkd_add -v micro`.
140 141
* NetBSD, macOS, Linux, Illumos, etc. with [pkgsrc](http://www.pkgsrc.org/)-current:
    * `pkg_add micro`
M
Matthew Graybosch 已提交
142

Z
Zachary Yedidia 已提交
143
### Building from source
Z
Zachary Yedidia 已提交
144

Z
Zachary Yedidia 已提交
145
If your operating system does not have a binary release, but does run Go, you can build from source.
146

147
Make sure that you have Go version 1.11 or greater and Go modules are enabled.
148

Z
Zachary Yedidia 已提交
149
```
150 151 152 153
git clone https://github.com/zyedidia/micro
cd micro
make build
sudo mv micro /usr/local/bin # optional
154 155
```

156 157
The binary will be placed in the current directory and can be moved to
anywhere you like (for example `/usr/local/bin`).
158

159
The command `make install` will install the binary to `$GOPATH/bin` or `$GOBIN`.
Z
Zachary Yedidia 已提交
160

Z
Zachary Yedidia 已提交
161
You can install directly with `go get` (`go get github.com/zyedidia/micro/cmd/micro`) but this isn't
162 163
recommended because it doesn't build micro with version information (necessary for the plugin manager),
and doesn't disable debug mode.
Z
Zachary Yedidia 已提交
164

Z
Zachary Yedidia 已提交
165 166 167 168 169 170 171 172 173 174
### Fully static binary

By default, the micro binary will dynamically link with core system libraries (this is generally
recommended for security and portability). However, there is a fully static prebuilt binary that
is provided for amd64 as `linux-static.tar.gz`, and to build a fully static binary from source, run

```
CGO_ENABLED=0 make build
```

175
### macOS terminal
Z
Zachary Yedidia 已提交
176

Z
Zachary Yedidia 已提交
177
If you are using macOS, you should consider using [iTerm2](http://iterm2.com/) instead of the default terminal (Terminal.app). The iTerm2 terminal has much better mouse support as well as better handling of key events. For best keybinding behavior, choose `xterm defaults` under `Preferences->Profiles->Keys->Presets...`, and select `Esc+` for `Left Option Key` in the same menu. The newest versions also support true color.
Z
Zachary Yedidia 已提交
178

179 180 181
If you still insist on using the default Mac terminal, be sure to set `Use Option key as Meta key` under
`Preferences->Profiles->Keyboard` to use <kbd>option</kbd> as <kbd>alt</kbd>.

182
### Linux clipboard support
183

184
On Linux, clipboard support requires:
C
Camille Scholtz 已提交
185

186 187
- On X11, the `xclip` or `xsel` commands (for Ubuntu: `sudo apt install xclip`)
- On Wayland, the `wl-clipboard` command
188

189
If you don't have these commands, micro will use an internal clipboard for copy and paste, but it won't work with external applications.
190

191 192 193
### Colors and syntax highlighting

If you open micro and it doesn't seem like syntax highlighting is working, this is probably because
194
you are using a terminal which does not support 256 color mode. Try changing the color scheme to `simple`
Z
Zachary Yedidia 已提交
195
by pressing <kbd>Ctrl-e</kbd> in micro and typing `set colorscheme simple`.
196

197
If you are using the default Ubuntu terminal, to enable 256 make sure your `TERM` variable is set
198
to `xterm-256color`.
199 200

Many of the Windows terminals don't support more than 16 colors, which means
201
that micro's default color scheme won't look very good. You can either set
202 203
the color scheme to `simple`, or download and configure a better terminal emulator
than the Windows default.
204

205
### Cygwin, Mingw, Plan9
Z
Zachary Yedidia 已提交
206

207
Cygwin, Mingw, and Plan9 are unfortunately not officially supported. In Cygwin and Mingw, micro will often work when run using
208 209 210 211 212
the `winpty` utility:

```
winpty micro.exe ...
```
Z
Zachary Yedidia 已提交
213

Z
Zachary Yedidia 已提交
214
Micro uses the amazing [tcell library](https://github.com/gdamore/tcell), but this
Z
Zachary Yedidia 已提交
215
means that micro is restricted to the platforms tcell supports. As a result, micro does not support
216
Plan9, and Cygwin (although this may change in the future). Micro also doesn't support NaCl (which is deprecated anyway).
Z
Zachary Yedidia 已提交
217

218
## Usage
Z
Zachary Yedidia 已提交
219

220
Once you have built the editor, start it by running `micro path/to/file.txt` or `micro` to open an empty buffer.
Z
Zachary Yedidia 已提交
221

222
micro also supports creating buffers from `stdin`:
Z
Zachary Yedidia 已提交
223

224 225
```sh
ifconfig | micro
Z
Zachary Yedidia 已提交
226 227 228 229
```

You can move the cursor around with the arrow keys and mouse.

Z
Zachary Yedidia 已提交
230 231 232
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.
Z
Zachary Yedidia 已提交
233

234
## Documentation and Help
Z
Zachary Yedidia 已提交
235

Z
Zachary Yedidia 已提交
236
micro has a built-in help system which you can access by pressing <kbd>Ctrl-e</kbd> and typing `help`. Additionally, you can
Z
Zachary Yedidia 已提交
237 238
view the help files here:

239 240 241 242 243 244
- [main help](https://github.com/zyedidia/micro/tree/master/runtime/help/help.md)
- [keybindings](https://github.com/zyedidia/micro/tree/master/runtime/help/keybindings.md)
- [commands](https://github.com/zyedidia/micro/tree/master/runtime/help/commands.md)
- [colors](https://github.com/zyedidia/micro/tree/master/runtime/help/colors.md)
- [options](https://github.com/zyedidia/micro/tree/master/runtime/help/options.md)
- [plugins](https://github.com/zyedidia/micro/tree/master/runtime/help/plugins.md)
Z
Zachary Yedidia 已提交
245

246
I also recommend reading the [tutorial](https://github.com/zyedidia/micro/tree/master/runtime/help/tutorial.md) for
Z
Zachary Yedidia 已提交
247
a brief introduction to the more powerful configuration features micro offers.
248

249
## Contributing
Z
Zachary Yedidia 已提交
250

Z
Zachary Yedidia 已提交
251
If you find any bugs, please report them! I am also happy to accept pull requests from anyone.
252

Z
Bump  
Zachary Yedidia 已提交
253 254
You can use the [GitHub issue tracker](https://github.com/zyedidia/micro/issues)
to report bugs, ask questions, or suggest new features.
Z
Zachary Yedidia 已提交
255 256

For a more informal setting to discuss the editor, you can join the [Gitter chat](https://gitter.im/zyedidia/micro).
Z
Zachary Yedidia 已提交
257 258

Sometimes I am unresponsive, and I apologize! If that happens, please ping me.