
Microでの画面分割について見ていきます。
※Microでは画面をPane(ペイン)と読んでいます。
プラグインを介さず通常の操作で画面分割を行う時は、
> vsplit ファイルパスを含むファイル名
※vsplitは垂直分割(横に並べる)
> hsplit ファイルパスを含むファイル名
※hsplitは垂直分割(上下に並べる)
を実行します。
※ファイル名の箇所を空文字にして実行しても画面分割を行うことが出来ます。
画面分割をプラグインから操作する方法を見ていきます。
画面分割(垂直)に関するメソッドは
func (h *BufPane) VSplitIndex(buf *buffer.Buffer, right bool) *BufPane
https://github.com/zyedidia/micro/blob/master/internal/action/bufpane.go
になります。
第一引数のbufにはMicroのプラグイン開発、入力フィールドに文字列を表示するで触れたバッファを挿入します。
第二引数のrightには、true(真)かfalse(偽)を入れ、画面分割時にどちらのフィールドに文字列を挿入するか?を指定します。
これらの内容を踏まえた上で、コードを見ていきます。
~/.config/micro/plug/sample/sample.lua
VERSION = "0.0.1"
local micro = import("micro")
local config = import("micro/config")
local buffer = import("micro/buffer")
function init()
config.MakeCommand("vs", fn, config.NoComplete)
end
function fn()
local buf, err = buffer.NewBuffer("hello new pane", "new pane")
micro.CurPane():VSplitIndex(buf, false)
end
micro.CurPane():VSplitIndex(buf, false)
の第二引数にfalse(偽)を指定して、実行してみます。
今回のプラグインでは、コマンドモードで
> vs
を実行することで画面分割をするようにしています。
早速実行してみると、

のようになりました。
続いて、
micro.CurPane():VSplitIndex(buf, true)
にして実行してみます。

のようになりました。
水平分割の方も見ておきます。
func (h *BufPane) HSplitIndex(buf *buffer.Buffer, bottom bool) *BufPane
第二引数をtrueにすると、分割時に下のフィールドに文字列が挿入されるようです。