Edited at

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

More than 1 year has passed since last update.


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が候補になれば幸ひです。