テキストエディタ
micro

いま熱い最新スクリーンエディタmicro ことはじめ

microとは何か

最近注目を集めてるような気がするスクリーンエディタ、つまり文字ベースのターミナル(端末エミュレータ)で動作するテキストエディタです。そのようなエディタとしてはviやEmacs、近年ではnanoが知られてます。

microはそのようなテキストエディタの中でも最後発で、目下のところ活溌に開発されてるところです。この記事ではREADME.mdからいい感じに抜萃しつつ紹介します。

microはviやEmacsのような独特な操作体系ではなく、GUIのテキストエディタに近い操作性(キーバインド)を持ちます。SSHなど端末経由でのテキスト編集の必要に迫られたときに、新たな操作体系を覚え直す手間を最小限にしながら作業に取り掛かることができます。

micro logo

2016年10月20日 追記

#端末(ターミナル)の設定を追加しました。特に、Shift+[←↓↑→]での範囲選択が機能しない場合に参考にしてください。

特徴

  • かんたんインストール
  • 実行ファイルをダウンロードするだけで動く
  • マルチカーソル
  • Windowsみたいなキーバインド
    • Ctrl+sで保存、Ctrl+cでコピー、Ctrl+vで貼り付け…
  • いい感じのデフォルト設定
  • 画面分割とタブ
  • マウスをちゃんとサポートしてるよ
    • ドラッグで選択もできるし、ダブルクリックで単語選択、トリプルクリックで行選択
  • クロスプラットフォーム
    • GoがサポートしてるOSなら、WindowsでもLinuxでもBSDでもmacOSでも動くよ
  • Luaで拡張できるプラグインシステム
  • 永続的にアンドゥできるよ
  • 自動でlint(文法チェックとか)エラー確認できるよ
  • 文法の強調表示 (100言語以上サポート)
  • カラースキームサポート
  • 端末のTrue color表示をサポート
  • スニペット機能
    • > plugin install snippetsでインストールできるよ
  • システムのクリップボードにコピペできるよ
  • ちっこくてシンプルだよ
  • かんたんに設定できるよ
  • キーボード操作を保存するマクロがあるよ
  • アンドゥリドゥとか行番号表示とか、Unicodeサポート、自動折り返し表示とか…

インストール

macOS(Homebrew)

brew install micro

コマンドラインからのダウンロード

端末で以下のコマンドを実行すると、環境からOSを自動判定してダウンロードすることができます。この自動インストーラーのドメインはGet microの意味ですヾ(〃><)ノ゙

curl https://getmic.ro | bash

このスクリプトを実行すると現在のシェルのカレントディレクトリに実行ファイルmicroがダウンロードされるので、これをPATHの通ったディレクトリに移動します。

ローカルディレクトリにPATHを通せば管理者権限がなくても、実行コマンドとしてインストールができます。

私の場合は以下のように設定します。

~/.bash_profileまたは~/.zprofile(もしくは両方)に以下のような行を追加。

~/.bash_profile
PATH=$HOME/local/bin:$PATH

まとめると、次のように操作すれば大丈夫です。

$ curl https://getmic.ro | bash
$ mkdir -p ~/local/bin
$ mv micro ~/local/bin
$ hash -r
$ micro --version
# ダウンロードしたバージョンが表示されたら成功

git commitにmicroを利用する

EDITOR環境変数にセットしておくと、gitに限らずエディタでファイルを開くようなコマンドで使ってくれるようになります。

export EDITOR=micro

覚えておくと良いショートカットキー

ここに記載するキーボード表記はmicroの設定ファイルとは異なります。(Ctrl+qCtrlQ)

これだけ覚えておけばどうにかなる

キー アクション 説明
Ctrl+q Quit ファイルを閉じる
Ctrl+s Save ファイルを保存
Ctrl+o OpenFile ファイルを開く
Ctrl+a SelectAll 全選択
Ctrl+x Cut 選択範囲切り取り
Ctrl+c Copy 選択範囲コピー
Ctrl+v Paste 貼り付け
Ctrl+z Undo 元に戻す
Ctrl+y Redo やり直し
Ctrl+e CommandMode エディタコマンド実行

一般的のテキストエディタと同じなので、Ctrl+qで「quit (ファイルを閉じる/エディタ終了)」だけ覚えておけばどうにかなります。

範囲選択はShiftを押しながらカーソルキー(←↓↑→)を押すだけなので悩むことはありません。

スクリーンショット 2018-03-11 午後11.04.51.png

基本的なコマンドはAlt+gを押すと、(nanoと同じようなスタイルで)画面下部にキーボードショートカット一覧を表示できます。^SCtrl+sの省略表示です。この表示はもう一度Alt+gを押すと消えます。

マウス

microは端末アプリケーションですがマウス操作をサポートします。一般的なエディタのように、カーソル位置移動、分割ウィンドウの切替、テキストの選択などができます。

発展的な操作

キー アクション 説明
Ctrl+f Find 検索
Ctrl+b FindNext 次の検索結果
Ctrl+p FindPrevious 前の検索結果
Ctrl+r ToggleRuler 行番号表示
Ctrl+d DuplicateLine 行を複製
Ctrl+k CutLine 行を切り取り
Ctrl+l JumpLine 行移動
Ctrl+t AddTab タブを追加
Ctrl+\ NextTab 次のタブ
Ctrl+] PreviousTab 前のタブ
Ctrl+w NextSplit 分割したほかのウィンドウに移動
Ctrl+g ToggleHelp ヘルプ表示/非表示
Ctrl+b ShellMode シェルコマンド実行
Ctrl+u ToggleMacro キーマクロ記録/終了
Ctrl+j PlayMacro キーマクロ再生
  • Ctrl+kを連打すると、Ctrl+vで一気に貼り付けることができます。
  • Ctrl+\Ctrl+]は不均等に見えるかもしれません
    • Ctrl+Shift+]Ctrl+\と同じなので実質Shiftの有無でNextとPreviusが反転します

キーマクロ

キーマクロ(microのドキュメントでは単にmacroと呼ばれる)は、キーボード操作を記録して、再生することができる機能です。

おかか
しゃけ
うめ
こんぶ

これのテキストを以下のようなHTMLにしたいとします。

    <li>おかか</li>
    <li>しゃけ</li>
    <li>うめ</li>
    <li>こんぶ</li>
  1. 先頭(おかかのある行)にカーソルを移動する
  2. Ctrl-uで記録を開始
  3. Ctrl-←で行頭に移動、(インデント)と<li>を入力
  4. Ctrl-→で行末に移動、</li>を入力
  5. で次の行に移動
  6. Ctrl-uで記録を終了
  7. Ctrl-j(キーマクロ再生)を3回押す

再生できるのは最後に記録したものだけで保存することもできない単純な機能ではありますが、うまく利用することで単純作業の反復を省力化できます。

キーバインディング設定

以上で紹介したショートカットキーは標準設定ですが、設定ファイル(~/.config/micro/bindings.json)でカスタマイズできます。たとへばEscキーはデフォルトではquit(ファイルを閉じる/エディタ終了)の操作ですが、これを変更する設定は以下のように記述します。

~/.config/micro/bindings.json
{
    "Escape": "CommandMode"
}

詳細はCtrl-ehelp keybindingsコマンドを実行すると表示されるコマンドで確認できます。

キーとして指定できるのはPageUp, PageDown, Home, End, Insert, Delete, Help, Exit, Clear, Cancel, Print, Pause, Backtab, F1F64などです。

端末で発行できるショートカットキーのうち、Ctrlキーと文字の組合せはASCII制御文字の範囲に限られます。 (これはVimにもEmacsにも共通して存在する制限です)

キー 表記
Ctrl+\ CtrlBackslash
Ctrl+] CtrlRightSq
Ctrl+^ CtrlCarat
Ctrl+_ CtrlUnderscore

(ドキュメントにはCtrlLeftSqが記載されてるけど、Escapeと区別ってできるのかな…?)

コマンド

Ctrl+eを押すとコマンドモードになります。コマンド一覧はCtrl+e help commandsで確認できます。これ以降、コマンド実行を> help commandsのように表記します。

コマンド 説明
> save 保存
> save filename 別のファイルに保存
> tab filename タブでファイルを開く
> tabswitch 画面をほかのタブに移動
> hsplit filename 画面を水平分割
> vsplit filename 画面を垂直分割
> quit ファイルを閉じる
> replace "search" "value" 確認しながら置換
> replaceall "search" "value" 確認なしで置換
> help ヘルプページを表示
> log エディタの操作ログ
> lint 文法チェック(対応言語のみ)
> pwd カレントディレクトリ表示
> cd path カレントディレクトリ移動
> term 端末エミュレータを起動

コマンド入力では毎回すべて入力する必要はなく、TABキーで補完できます。例として、hsplitコマンドを実行するにはhを入力してからTABを押すだけでコマンドを実行できます。

プラグイン

microはLua言語で拡張コマンドを定義することができ、これを「プラグイン」と呼びます。(実は上記コマンドのうち> lintは標準プラグインです)

プラグインの一覧はOfficial plugin channel for microにあります。あまり多くのプラグインが存在するわけではなく、2018年3月現在で18個です。

プラグインはCtrl+eのコマンドからインストールすることができます。

コマンド 説明
> plugin available インストール可能な全プラグインを一覧表示
> plugin search プラグイン検索
> plugin install プラグインをインストール
> plugin list インストールされたプラグインを一覧表示
> plugin update インストールされたプラグインを更新
> plugin remove インストールされたプラグインを削除

プラグインによっては実行コマンドのインストールが別途必要なものがあるので、詳細はプラグインごとのREADMEをよく読んでください。

例としては、editorconfigプラグインの動作にはeditorconfigコマンドのインストールが必要です。

プラグインの追加に興味があれば、実装方法などの詳細は(例によって)> help pluginsで読むことができます。

端末(ターミナル)の設定

一部の環境ではShift+[←↓↑→]での選択が機能しないことがあります。詳しくはPuTTY+tmux 環境で Ctrl+矢印 が効かなかった原因が解ったかも | yuuAn's Noteが参考になります。

tmux

$HOME/.tmux.confに設定を記述します。

~/.tmux.conf
set-window-option -g xterm-keys on

RLogin (Windows)

3.15 キーコードのオプション設定を参考にmodifyCursorKeys2(パラメータ無しの場合に1を追加)に設定します。 (thanks @cranpun!)

PuTTY (および派生版)

PuTTY+tmux 環境で Ctrl+矢印 が効かなかった原因が解ったかも | yuuAn's Noteのようにputty.iniまたはレジストリに設定。

あとがき

この記事では、新進気鋭のテキストエディタ「micro」を紹介しました。microはメインエディタとして利用するには非力ですが、実用的なテキスト編集のための最低限の機能とUnicodeサポートを持ってゐます。普段はAtomやSublime Textなどで高度な編集をこなしつつサーバーで簡易的な編集をしたい、などの用途にmicroはうってつけです。

逆に、これから端末でSSHログインした環境をメイン環境とするならば、学習コストを払ってでもVimやEmacsを覚えた方が作業効率に寄与するのが現状ではあります。自分のやりたいことを見極めた上で、その目的を達するためのツール選びのひとつとしてmicroが候補になれば幸ひです。