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

  • 528
    いいね
  • 0
    コメント

microとは何か

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

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

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

micro logo

2016年10月20日 追記

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

特徴

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

インストール

macOS(Homebrew)

brew install micro

バイナリダウンロード

Releases · zyedidia/microから各OS用のバイナリファイルがダウンロードできます。ローカルディレクトリにダウンロードしてPATHを通せば管理者権限がなくてもインストールできます。

私の場合は以下のようにインストールします。

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

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

その後、シェルで次のように操作。

mkdir -p $HOME/local/bin
wget https://github.com/zyedidia/.../micro-xxx-osx.tar.gz #最新バージョンのURL
tar xf micro-*.tar.gz
rm micro-*.tar.gz
mv micro-*/micro $HOME/local/bin/
rm -rf micro-xxx # 展開したディレクトリを消す

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を押しながらカーソルキー(←↓↑→)を押すだけなので悩むことはありません。

マウス

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 タブでファイルを開く
> hsplit filename 画面を水平分割
> vsplit filename 画面を垂直分割
> quit ファイルを閉じる
> replace "search" "value" 置換
> replace "search" "value" c 確認しながら置換
> help ヘルプページを表示
> log エディタの操作ログ
> lint 文法チェック(対応言語のみ)

プラグイン

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

プラグインの実装方法などの詳細は(例によって)> 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が候補になれば幸ひです。