◆ Windows 風のキーボードショートカットができる
◆ マウス操作もできる
◆ タブとスプリット機能がある
◆ プラグインで拡張もできる
◆ コマンド機能もある
◆ 高機能!!

Windows のエディタ風に使えると聞いて使ってみました

micro

micro なので nano よりひとつ上です

見た目はこんな感じです

micro01

micro02


タブが使えます
下側の画面の一番上に並んでるのがタブです

インストール

Linux のパッケージマネージャは snap というものしか対応してないようなので直接ダウンロードします

[user@fedora]~% wget https://github.com/zyedidia/micro/releases/download/v1.1.3/micro-1.1.3-linux64.tar.gz
[user@fedora]~% tar xf micro-1.1.3-linux64.tar.gz
[user@fedora]~% cd micro-1.1.3/
[user@fedora]~/micro-1.1.3% ls
LICENSE README.md micro
[user@fedora]~/micro-1.1.3% ./micro

キーボードショートカット

基本は Windows です

ctrl-a で全部選択
ctrl-x で切り取り
ctrl-c でコピー
ctrl-v で貼り付け
ctrl-z で元に戻すundo
ctrl-y でやり直しredo
ctrl-k で行を切り取り
ctrl-f で検索
ctrl-n で次を検索
ctrl-p で前を検索
ctrl-l で指定行へジャンプ
ctrl-g でヘルプ
ctrl-r で行数表示切り替え
ctrl-t で新しいタブを開く
ctrl-] で左のタブを選択
ctrl-\ で右のタブを選択
ctrl-o でファイルを開く
ctrl-s で保存
ctrl-d で行を複製
ctrl-m で改行を入力
ctrl-i でタブを入力
ctrl-h でバックスペースを入力
ctrl-e でコマンド入力モード
ctrl-b でシェルコマンド入力モード
ctrl-w で次のスプリットへ移動
ctrl-q または ESC でタブやスプリットを閉じる

だいたいこんな感じです
Ctrl-A の全選択や Ctrl-X,C,V の切り取り コピー 貼り付け と使い慣れた操作ができていいですね
なんで Linux のスタンダードなエディタは vim や ecmacs と言った特殊すぎる操作なのか理解に苦しみます
これまでどうして micro みたいなエディタがなかったのかもすごく不思議です
Linux と Windows の文化の違いかと言うとそうでもなくて GUI ツールだとこういったショートカットは使えるものが多いです

範囲選択

また ショートカットではないですが shift+方向キーで範囲選択もできます
このあたりも Windows のエディタと同じ使い勝手です

戻ると進む

よく使うところでちょっと気になるものがあって Ctrl-Z と Ctrl-Y の戻ると進むの間隔です
Ctrl-Z はあまり細かくなくて一気に 2 行ほど入力したあとに一度戻れば全部戻ってしまうことが多いです
その後に Ctrl-Y を押すと細かい粒度でちょっとずつ進めます
戻るときは一気に戻したいことが多いので Ctrl-Z では大雑把に戻して細かいところは Ctrl-Y で調整という感じなのでしょうか
慣れるとこれでいいのですけど 慣れるまでは Ctrl-Z 押しすぎたというときに Ctrl-Y 一回で戻れないのがちょっと不便です

未設定キー

「Ctrl-Shift-なにか」 を押すと半角スペースが出るようです
未設定は半角スペースということみたいです
詳細なキー割当一覧の見方は後述の「コマンド」のところに書きます

ステータスバー

ステータスバーに何を実行したかが表示される機能もあります
ショートカットを意図せず押してしまって今何押したんだろう?と思うことがあるかと思います
micro ではショートカットキーの実行後にステータスバーに「コピーしました」や「貼り付けました」などが表示されるので 今何をやったかがわかります (もちろんメッセージは英語です)
ただし 全選択や改行入力などでは表示されずコピーや貼り付けや保存などの操作に限られるようです

micro 外の問題で使いづらいことも

Shift や Ctrl キーを使った操作がいろいろあるのですが micro 以外のせいで使いづらい部分もあったりします
ターミナルソフト側ですでにキーボードショートカットが使用されていたり byobu のようなソフト上で micro を起動してる場合です

例えば Chrome アプリの Secure Shell で ssh 接続していたとします
その場合 Chrome 上のアプリなので Chrome のショートカットキーが優先されます
Ctrl-t を押すと micro ではなく Chrome の新しいタブが開きます

他には byobu の起動中に micro を使うと Shift-↑ で範囲選択したはずなのに全体が上にスクロールされてしまいます
また byobu のエスケープシーケンスのキーは記号や数字を割り当てられなくて A-Z しか使えないようなので どこに設定しても micro のショートカットキーとかぶります

マウス

キーボードの操作感だけでも十分でしたが micro のすごい部分はマウスで操作ができるところです
ターミナルでのマウス操作ってクライアント上のコピーとペーストだけに使って サーバで動くプログラムには何の影響も与えないものかと思ってました
ですが micro 上ではマウスでカーソルの移動や範囲選択ができます
マウスで範囲選択をすると自動でコピーされます
ただ 日本語が入ってくるとマウスの位置と選択されている位置がずれます
マウスに限らず上下キーでの移動でもずれてるので micro 自体の全角サイズの文字のサポートがまだ弱いのでしょう

あと タブのエリアをクリックすればタブの切り替えにも使えます

クリップボード

Ctrl-C や Ctrl-X でコピーや切り取り またマウスで範囲選択してコピーをするとクリップボードにデータを書き込むわけですが これは micro 内のものです
Ctrl-C を押してるから ついそのまま別のソフトに貼り付けたくなりますができません

micro 以外の通常の動きでは範囲選択するだけで自動で Windows 側のクリップボードにコピーする機能があっても micro の実行中は micro 側でマウス操作が管理されているので無効になっています

いろいろ試していて気づいたのですが Shift キーを入力中は micro 内でマウス操作をキャプチャしないようです
なので Shift を押しながら選択すれば Windows 側のクリップボードにコピーされます
ただし micro で制御されず 通常のただのテキストが並んでいるものとして選択されるので行数の列も選択されます
大抵の場合は行数までコピーされても邪魔でしょう
Ctrl-R で切り替えできるのでコピーするときには非表示にするのがおすすめです

また右クリックも Shift を押せば使えるようになります
通常時に右クリックからコピーや貼り付けができる機能があっても これも micro 上では使えなくなっています
これも Shift キーを押していれば micro でキャプチャされないので Windows のクリップボードから貼り付けなどが行なえます

コマンド

最近の高機能エディタでよく見るような コマンドラインの実行とエディタ内コマンドが micro にもあります

シェルコマンド

Ctrl-B を押すと 下の方に 「$」 と表示されるので 「ls」 と打ってみるとファイルとフォルダのリストが見れます
micro を終了したわけではないので結果を見終わったら micro に戻れます

ファイル編集中にコマンド実行して結果をコピペしたいときに便利そうです
(まだ実用面ではつかったことない)

エディタコマンド

Ctrl-E を押すと 下の方に 「>」 と表示されてコマンドが入力できます
VSCode の Ctrl-Shift-P みたいのです

help

と打てばヘルプが表示されます
その中にも書かれているのですが 「help ***」 と *** のところに見たいヘルプを入力することで他のヘルプも見れます

  • tutorial
  • keybinding
  • commands
  • options
  • plugins
  • colors

がヘルプの一覧で

help commands

のように入力します

commands では help の他にどんなコマンドがあるのかを見ることが出来ます
ショートカットキーにあるファイルオープンや閉じるなどから デフォルトだとショートカットキーではできない画面分割などもあります

keybinding ではキーボードショートカットの一覧が見れます

タブとスプリット

micro ではタブとスプリット機能があります

タブは名前通りのタブです
Ctrl-T で開くこと出来て複数のタブがあると画面の上部にタブエリアが表示されます
マウスのクリックや Ctrl-] と Ctrl-\ で切り替えることが出来ます
アクティブなタブの名前は [ ] で囲まれます
タブエリアのスクロールは無いみたいでタブを作りすぎると見えなくなります
なぜかときどき名前の一部が黒く塗りつぶされるときがあります

スプリットは 1 つの画面内の分割機能です
byobu で Shift-F2 や Ctrl-F2 するようなものです
デフォルトではショートカットキーがないようなので Ctrl-E からコマンド入力で 「hsplit」 または 「vsplit」 で分割できます

プラグイン

micro 自体は go 言語で作られてるようですが プラグインとして lua を使えます

個人的にサクラエディタでよく使っているショートカットキーの機能「カーソルから行末まで切り取り」がないので作ってみました
この機能って個人的にはすごくよく使っているのですが サクラエディタ以外のエディタや IDE でみたこと無いんですよね

function cutRight()
local v = CurView()
if v.Cursor:HasSelection() then
v:Cut(false)
else
v:SelectToEndOfLine(false)
v:Cut(false)
end
end

MakeCommand("cutRight", "cut_right.cutRight")
BindKey("Alt-k", "cut_right.cutRight")

この lua のコードを

~/.config/micro/plugins/cut_right/cut_right.lua

に保存します
Ctrl 系は埋まっていたので Alt-K に設定しています
Alt-K を押すと行末までカットができます
コードみたままですが 範囲選択されていたら 行末までではなくて選択中を単純に切り取りになります
常に行末までカットでもよかったのですが サクラエディタの動きに合わせてみました

ssh 切れると

条件が限られていますが micro のダメな点として micro が起動中に ssh が切れるとマウスの動きがおかしくなります
画面が崩れたり変な文字が入力されます

たぶんですが マウスの操作を micro 側で管理するために設定をいろいろ変更していて 正常に終了せずに ssh が切れてしまうと設定が通常状態に戻らないのでマウス操作をしたときに micro で制御するための特殊な文字が入力されてしまうのかなと思います
ターミナルソフト自体を再起動するしか直す方法わからなかったので つけたままにして接続が切れてしまうと毎回起動し直しています
大した手間でもないですが しなくていいならしたくないですからね
micro つけたままクライアント側の PC をスリープさせてしまわないように注意が必要です

micro の次は?

pico, nano, micro とくれば次のエディタは milli ですよね
milli は一体どんなエディタなのか nano から micro でここまで便利になったのなら milli は

期待が膨らみますね