Microでinit.luaを作成して、頻繁に使う機能をコマンドで実行できるようにしてみます。
init.luaというのは、ちょっとした機能をショートカットキーやコマンドモードで実行できるようにする仕組み(単一ファイルのプラグイン)です。
micro/runtime/help/tutorial.md at master · zyedidia/micro#Configuration with Lua
はじめにチュートリアルに記載されているサンプルコードを試してみます。
以後の内容に合わせ、チュートリアルの内容を少しだけ改変します。
$ micro ~/.config/micro/init.lua
でinit.luaファイルを作成します。
コードは下記になります。
local config = import("micro/config") local shell = import("micro/shell") function init() config.TryBindKey("Ctrl-r", "lua:initlua.run", true) end function run(bp) local buf = bp.Buf if buf:FileType() == "go" then shell.RunInteractiveShell("go run " .. buf.Path, true, false) end end
簡単な解説になりますが、
MicroでGoのコードが書かれたファイルを開いた時にCtrl + r を押すと
$ go run ファイルパス
が自動で実行されて、Goで書かれたプログラムが実行されます。
コードを見ていきますと、
function init() config.TryBindKey("Ctrl-r", "lua:initlua.run", true) end
init(初期化)関数でCtrl + r にlua:initlua.runという機能を紐づけています。
micro/runtime/help/plugins.md at master · zyedidia/micro#Accessing micro functions
lua:initlua.runというのは、init.luaのファイルに書かれたrunという関数を指し、
function run(bp) local buf = bp.Buf if buf:FileType() == "go" then shell.RunInteractiveShell("go run " .. buf.Path, true, false) end end
に該当します。
Node.js(サーバサイドのJavaScript)もCtrl + r で実行できるようにしてみます。
run関数を下記のように書き換えます。
function run(bp) local buf = bp.Buf if buf:FileType() == "go" then shell.RunInteractiveShell("go run " .. buf.Path, true, false) elseif buf:FileType() == "javascript" then shell.RunInteractiveShell("node " .. buf.Path, true, false) end end
これで、Node.js(JavaScript)で書かれたファイルも自動実行されるようになりました。
ブラウザ経由でJavaScriptを実行したい場合、実行する時の拡張子がhtmlになりますので、run関数を下記のように書き換えます。
function run(bp) local buf = bp.Buf if buf:FileType() == "go" then shell.RunInteractiveShell("go run " .. buf.Path, true, false) elseif buf:FileType() == "javascript" then shell.RunInteractiveShell("node " .. buf.Path, true, false) elseif buf:FileType() == "html" then shell.RunCommand("chromium " .. buf.Path) end end
上記のコードの場合、Chromiumで実行しますので、Chromiumがインストールされていない場合は、下記のコマンドでインストールしておきましょう。
$ sudo apt install chromium
or
$ sudo apt install chromium-browser
ショートカットキーを新規登録する際は、下記URLで既に使用されていないことを確認しましょう。