microとは何か
最近注目を集めてるような気がするスクリーンエディタ、つまり文字ベースのターミナル(端末エミュレータ)で動作するテキストエディタです。そのようなエディタとしてはviやEmacs、近年ではnanoが知られてます。
**micro**はそのようなテキストエディタの中でも最後発で、目下のところ活溌に開発されてるところです。この記事ではREADME.mdからいい感じに抜萃しつつ紹介します。
microはviやEmacsのような独特な操作体系ではなく、GUIのテキストエディタに近い操作性(キーバインド)を持ちます。SSHなど端末経由でのテキスト編集の必要に迫られたときに、新たな操作体系を覚え直す手間を最小限にしながら作業に取り掛かることができます。
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
(もしくは両方)に以下のような行を追加。
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+q→CtrlQ
)
これだけ覚えておけばどうにかなる
| キー | アクション | 説明 |
|-------------------+---------------+----------------------|
| 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を押しながらカーソルキー(←↓↑→)を押すだけなので悩むことはありません。
基本的なコマンドはAlt+gを押すと、(nanoと同じようなスタイルで)画面下部にキーボードショートカット一覧を表示できます。^S
はCtrl+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>
- 先頭(
おかか
のある行)にカーソルを移動する - Ctrl-uで記録を開始
-
Ctrl-←で行頭に移動、
<li>
を入力 -
Ctrl-→で行末に移動、
</li>
を入力 - ↓で次の行に移動
- Ctrl-uで記録を終了
- Ctrl-j(キーマクロ再生)を3回押す
再生できるのは最後に記録したものだけで保存することもできない単純な機能ではありますが、うまく利用することで単純作業の反復を省力化できます。
キーバインディング設定
以上で紹介したショートカットキーは標準設定ですが、設定ファイル(~/.config/micro/bindings.json
)でカスタマイズできます。たとへばEscキーはデフォルトではquit
(ファイルを閉じる/エディタ終了)の操作ですが、これを変更する設定は以下のように記述します。
{
"Escape": "CommandMode"
}
詳細はCtrl-eでhelp keybindings
コマンドを実行すると表示されるコマンドで確認できます。
キーとして指定できるのはPageUp
, PageDown
, Home
, End
, Insert
, Delete
, Help
, Exit
, Clear
, Cancel
, Print
, Pause
, Backtab
, F1
〜F64
などです。
端末で発行できるショートカットキーのうち、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
に設定を記述します。
set-window-option -g xterm-keys on
RLogin (Windows)
3.15 キーコードのオプション設定を参考にmodifyCursorKeys
を**2
(パラメータ無しの場合に1を追加)**に設定します。 (thanks @cranpun!)
@tadsan 何度も申し訳ありません。お使いにならないアプリの件で大変恐縮ですが…解決しましたのでご報告です。以下のオプションの設定を変えることで意図通り動作させられました。https://t.co/Kcy7Veto0B
— cranpun (@cranpun) October 19, 2016
ご教示ありがとうございました。
PuTTY (および派生版)
PuTTY+tmux 環境で Ctrl+矢印 が効かなかった原因が解ったかも | yuuAn's Noteのようにputty.ini
またはレジストリに設定。
あとがき
この記事では、新進気鋭のテキストエディタ「micro」を紹介しました。microはメインエディタとして利用するには非力ですが、実用的なテキスト編集のための最低限の機能とUnicodeサポートを持ってゐます。普段はAtomやSublime Textなどで高度な編集をこなしつつサーバーで簡易的な編集をしたい、などの用途にmicroはうってつけです。
逆に、これから端末でSSHログインした環境をメイン環境とするならば、学習コストを払ってでもVimやEmacsを覚えた方が作業効率に寄与するのが現状ではあります。自分のやりたいことを見極めた上で、その目的を達するためのツール選びのひとつとしてmicroが候補になれば幸ひです。