Skip to content

Micro

Editors & IDEs

A terminal‑based text editor that is easy to install and use, with modern features like multiple cursors, plugins, syntax highlighting for over 130 languages, and cross‑platform support.

Go Latest v2.0.15 · 5mo ago Security brief →

Features

  • Easy installation as a single static binary with no dependencies
  • Modern features: multiple cursors, splits/tabs, plugins (Lua), syntax highlighting for >130 languages
  • Cross‑platform support on Linux, macOS, Windows (Go runtime)
  • Rich UI with mouse support, true color themes, built‑in diff gutter and autocompletion

Recent releases

View all 1 releases →
v2.0.15 Breaking risk
Breaking changes
  • Minimum supported Go version changed from 1.16 to 1.19.
Full changelog

Micro 2.0.15

Get well into 2026 and have a happy new year! :fireworks:

What's Changed

New options

  • truecolor (supersedes the MICRO_TRUECOLOR environment variable) (by @JoeKar in #2867)
  • showchars (deprecates indentchar) (by @Neko-Box-Coder in #3760)
  • lockbindings for completely disallowing plugins to modify keybindings (by @Neko-Box-Coder in #3618)
  • helpsplit for changing default split type for the help command (by @JoeKar in #3502)
  • pageoverlap for setting number of lines kept during page up/page down (by @nimishjha in #3518)

New actions

  • FirstTab, LastTab, FirstSplit and LastSplit (by @masmu in #3403)
    • Note: also changed the behavior of NextTab, PreviousTab, NextSplit, PreviousSplit
    • But adjusted the default keybindings so the default behavior remains unchanged
  • SkipMultiCursorBack as a counterpart to SkipMultiCursor (by @masmu in #3404)
  • CursorToViewTop, CursorToViewCenter, CursorToViewBottom (by @nimishjha in #3506)
  • Duplicate for duplicating the selection only, not the whole line (by @dmaluka in #3335)

Improved actions

  • Improve and unify CopyLine, CutLine, DeleteLine, DuplicateLine actions (by @dmaluka in #3335 and #3519)
    • Note: changed the behavior of those actions
    • But also adjusted the default keybindings so the default behavior remains unchanged
  • Restore pre-2.0.14 behavior of SpawnMultiCursor{Up,Down} (by @dmaluka in #3503)
  • Nano-like page up/page down functionality (by @nimishjha in #3518 and @dmaluka in #3555)

Lua improvements

  • Plugins never write to settings.json or bindings.json anymore (by @Neko-Box-Coder in #3618)
  • Add onBufferOptionChanged callback (by @JoeKar in #2962)
  • Add SpawnCursorAtLoc() (by @Neko-Box-Coder in #3441)
  • Expose bufpane's DoubleClick and TripleClick to plugins (by @cutelisp in #3720)
  • Pass mouse info to {on,pre}MouseXXX callbacks (by @dmaluka in #3779)
  • Support goto statement from Lua 5.2 (by @matthias314 in #3597)

Syntax highlighting improvements

  • Haskell syntax: various improvements and fixes (by @Andriamanitra in #3373)
  • Rust syntax:
    • Recognize byte strings and C strings (by @jmcorey in #3452)
    • Add more keywords and types (by @edwloef in #3677 and @codemanticism in #3759)
  • C++ syntax:
    • Highlight binary and hex literals with single-quote separator per C++14 (by @Neko-Box-Coder in #3310, #3870, #3891)
    • Highlight auto as data type per C++17 (by @2013ZRZ in #3836)
    • Improve C++ filetype detection by using more keywords (by @Neko-Box-Coder in #3310)
  • Shell syntax:
    • Correctly match parameter expansions without braces (by @niten94 in #3663)
    • Match variables with leading underscore (by @Andriamanitra in #3833)
    • Match --options-with-hyphens (by @nabeelsherazi in #3863)
  • Asm syntax: highlight C-like comments (by @dmaluka in #3696)
  • Ruby syntax: highlight predefined variables (by @Andriamanitra in #3778)
  • CSS syntax: add more commands (by @mystieneko in #3436)
  • Swift syntax: add shebang (by @frkd-dev in #3451)
  • Java syntax: add var keyword (by @owencmcgrath in #3526)
  • Javascript syntax: add .cjs extension (by @med-ab in #3539)
  • Groovy syntax: fix triple quotes highlighting (by @Neko-Box-Coder in #3858)
  • Fish syntax: fix variable expansion (by @remisalmon in #3830)
  • Raku syntax: add .rakutest extension (by @juanfra684 in #3406)
  • Arduino syntax: make filetype detection less aggressive (by @Andriamanitra in #3848)
  • Add OpenSCAD syntax (by @jmcorey in #3410)
  • Add PRQL syntax (by @vanillajonathan in #3313)
  • Add meson syntax (by @asakovets in #3236)
  • Add nftables config syntax (by @theredcmdcraft in #3325 and #3517)

Various improvements

  • Save files safely, writing to the backup file first (by @JoeKar in #3273, #3806, #3814, @Neko-Box-Coder in #3807 and @dmaluka in #3822)
    • Also write settings.json, bindings.json etc safely as well, using a temporary file
  • Support vim-like +/text search in command-line args (by @luca020400 in #3767)
  • Add toggle & togglelocal commands for toggling boolean options (by @cutelisp in #3783)
  • Add -vsplit & -hsplit as optional arguments for help (by @JoeKar in #3502)
  • Make textfilter work with multicursors (by @dmaluka in #3511)
  • Support \x syntax for raw escape sequences in bindings.json (by @JoeKar in #3595)
  • Add overwrite mode indicator to the status line (by @JoeKar in #3620)
  • Support showing git commit hash and branch in the status line (by @niten94 in #3673)
  • Support terminal emulation on Solaris, OpenBSD* and NetBSD (by @niten94 in #3714)
    • OpenBSD - on 32-bit only
  • Display name "Raw event viewer" instead of "No Name" for raw pane (by @blamedrop in #3791)
  • Differentiate built-in plugins when listing (by @Neko-Box-Coder in #3810)
  • Disable sudo save prompt on Windows (by @niten94 in #3866)
  • Only set buffer type to stdout when no file args are passed (by @AndydeCleyre in #3910)
  • Linter: add ruff for Python (by @Andriamanitra in #3657)
  • Linter: ldc2 and gdc for D (by @kodesettings in #3892)
  • Add comment support for typescript (by @Neko-Box-Coder in #3857)
  • README: Update micro's version for the Go Report Card (by @JoeKar in #3835)

Bugfixes

  • Fix cd a\ causing crash on Windows (by @JoeKar in #3596)
  • Fix SIGINT killing micro when saving with sudo (by @dmaluka in #3495)
  • Fix crash when exiting terminal in some cases (by @JoeKar in #3738)
  • Fix crash when shell.JobSpawn is called from Lua while no callback is set (by @matthias314 in #3554)
  • Fix 2.0.14 regression: inconsistently working cursor up/down after selection (by @JoeKar in #3540)
  • Fix 2.0.14 regression: colorscheme plugins not working (by @dmaluka in #3761)
  • Fix non-working raw escape bindings after restarting the screen (by @dmaluka in #3468)
  • Fix spurious backups of unmodified files (by @dmaluka in #3822)
  • Fix drawing wide characters in the info bar (by @Andriamanitra in #3919)
  • Search / replace fixes:
    • Fix infinite loop in replace when empty string matches (by @matthias314 in #3566)
    • Make FindNext and FindPrevious work with empty matches (by @matthias314 in #3572)
    • Match beginning and end of line correctly (by @matthias314 in #3575 and #3914)
  • Fixes related to saving files:
    • Don't prompt to save file if the same file is opened in another buffer (by @matthias314 in #3559 and @niten94 in #3719)
    • Prompt to save new file regardless of autosave enabled (by @yz778 in #3626)
    • Fix per-filetype settings not being applied when saving as a new file (by @Neko-Box-Coder in #3625, #3688 and @JoeKar in #3662)
    • Support saving with sudo in more cases (by @Neko-Box-Coder in #3689)
    • Update displayed name when saving file with a different name (by @Neko-Box-Coder in #3689)
  • Fix comment plugin not using user settings when overriding default setting (by @Neko-Box-Coder in #3424)
    • Introduces comment.type option which deprecates existing commenttype
  • Fix rendering Unicode 14.0+ emojis (by @JoeKar in #3601)
  • Properly handle escaped and quoted characters in keybindings (by @matthias314 in #3612)
  • Fix tabs suddenly becoming invisible after tabmove (by @Neko-Box-Coder in #3619)
  • Fix cycling through completion suggestions stopping at non-word character (by @Andriamanitra in #3650)
  • Fix scrollbar covering cursor (by @cutelisp in #3741)
  • Fix ruler drawn on top of the tab bar (by @cutelisp in #3744)
  • Relocate buffer view after setting options that affect it (by @dmaluka in #3743)
  • Fix non-working proportional resize after closing a nested VSplit inside a HSplit (by @Neko-Box-Coder in #3708)
  • Fix non-working matching brace highlighting in sunny-day colorscheme (by @tautte in #3735)
  • Fix micro broken on OpenBSD (by @niten94 in #3561 and #3895)

Documentation improvements

  • Update and improve man page and micro -help output (by @dmaluka in #3812)
  • List more bindable actions in help keybindings (by @Andriamanitra in #3685 and @dmaluka in #3799)
  • Document binding keys to Lua functions (by @dmaluka in #3799)
  • Document passing *tcell.EventMouse to mouse action callbacks (by @dmaluka in #3799)
  • Update and correct documentation for onAction return value (by @dmaluka in #3799)
  • Some small improvements (by @cutelisp in #3786, #3818)

Build system changes

  • Minimum supported Go version changed from 1.16 to 1.19 (by @alexandear in #3461 and @JoeKar in #3595)
  • Make all builds explicitly fully static (disable CGO) (by @JoeKar in #3466)
  • Add build target for Windows ARM64 (by @creeperlv in #3512)
  • Add build targets for Solaris and Illumos (by @niten94 in #3714)
  • Set version as release when there are no commits ahead (by @niten94 in #3515)
  • Fetch tags with --force (by @JoeKar in #3448)
  • Micro's dependencies (the forked tcell and others) moved to https://github.com/micro-editor (by @JoeKar in #3593, #3595, #3596, #3601, #3600)

New Contributors

  • @mystieneko made their first contribution in https://github.com/zyedidia/micro/pull/3436
  • @jmcorey made their first contribution in https://github.com/zyedidia/micro/pull/3410
  • @frkd-dev made their first contribution in https://github.com/zyedidia/micro/pull/3451
  • @JonathanBerkeley made their first contribution in https://github.com/zyedidia/micro/pull/3469
  • @alexandear made their first contribution in https://github.com/zyedidia/micro/pull/3467
  • @theredcmdcraft made their first contribution in https://github.com/zyedidia/micro/pull/3325
  • @creeperlv made their first contribution in https://github.com/zyedidia/micro/pull/3512
  • @nimishjha made their first contribution in https://github.com/zyedidia/micro/pull/3506
  • @owencmcgrath made their first contribution in https://github.com/zyedidia/micro/pull/3526
  • @med-ab made their first contribution in https://github.com/zyedidia/micro/pull/3539
  • @antoine2711 made their first contribution in https://github.com/zyedidia/micro/pull/3615
  • @yz778 made their first contribution in https://github.com/zyedidia/micro/pull/3626
  • @usfbih8u made their first contribution in https://github.com/zyedidia/micro/pull/3647
  • @edwloef made their first contribution in https://github.com/zyedidia/micro/pull/3677
  • @cutelisp made their first contribution in https://github.com/zyedidia/micro/pull/3716
  • @tautte made their first contribution in https://github.com/zyedidia/micro/pull/3735
  • @codemanticism made their first contribution in https://github.com/zyedidia/micro/pull/3759
  • @vanillajonathan made their first contribution in https://github.com/zyedidia/micro/pull/3313
  • @blamedrop made their first contribution in https://github.com/zyedidia/micro/pull/3791
  • @asakovets made their first contribution in https://github.com/zyedidia/micro/pull/3236
  • @remisalmon made their first contribution in https://github.com/zyedidia/micro/pull/3830
  • @deepdring made their first contribution in https://github.com/zyedidia/micro/pull/3834
  • @2013ZRZ made their first contribution in https://github.com/zyedidia/micro/pull/3836
  • @luca020400 made their first contribution in https://github.com/zyedidia/micro/pull/3767
  • @kodesettings made their first contribution in https://github.com/zyedidia/micro/pull/3892
  • @nabeelsherazi made their first contribution in https://github.com/zyedidia/micro/pull/3863

Full Changelog: https://github.com/zyedidia/micro/compare/v2.0.14...v2.0.15

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
28,741
Forks
1,316
Languages
Go Lua Shell

Install & Platforms

Install via
binary brew snap shell-script
Platforms
linux macos windows

Community & Support

Beta — feedback welcome: [email protected]