「vimというプレゼンテーションツールは、プログラムの編集もできるという事で...(ry」という冗談を目撃したりしましたが、僕はけっこう本気です。以前からコンソールでプレゼンをするというのも僕の夢でしたので、どうせならVimでやっちゃおうとおもいました。
そこで、まず文字を好きな位置に表示するライブラリをさがしてみました。ですが、どうも良いライブラリが
存在しないという状態のようでした。どうせならcursesのように快適に表示できれば良いなぁとおもい
https://github.com/pocket7878/curses-vim
というのを実装してみました。
- initScr()
- endWin()
- addch()
- printw()
などのcursesに存在する基本的な関数は実装済みです。
また、行の中央に表示したり、リストを表示したりという
- cprintw()
- printList()
などの関数も用意してあります。
これを利用して実装したのがpresen-vimです。
ダウンロードは
https://github.com/pocket7878/presen-vim
から可能です(curses-vimに依存しています。さきにcurses-vimをインストールしてください)
このライブラリではスライドはS式のような構文で定義できます。(そうですL5から影響うけてます)
((title "Introduction of curses-vim and presenvim") (contents (center (vimlogo)))) ((title "curses-vimとpresen-vimのご紹介") (contents (center (hl) (ol "curses-vimとは?" "curses-vimでできること" "presen-vimとは?" "presen-vimでできること" "それぞれのライブラリの今後の予定とか"))))
こんな感じの言語が、
1ページ目
そして2ページ目
という風に反映されます。
ページ定義の構文の仕様は如何の通りです。
;;必要なのはcontentsだけtitleは省略可能 ((title "タイトルがあるばあいは設定") (contents ...スライドのコンテンツを設定))
そして、contents内部には
;; t はタイトルページのときに利用するもので ;; 画面の中央に引数の文字を表示します (t str) ;; centerの中の物はすべて中央そろえで表示される (center ...) ;; ulは引数を*をアクセントとしたリストとして表示する (ul item1 item2 item3 ...) ;; olは引数を番号つきリストとして表示する (ol item1 item2 item3 ...) ;; linesは引数を複数行グループで表示する (lines line1 line2 line3...) ;; pは引数を周囲から分割した段落として表示する ;; 上下に一行ずつ空行が挿入される (p ....)
といった基本的な要素を設定でき、
また、
;;vimlogoはAsciiアートのVimのロゴを挿入する (vimlogo) ;;hlはその位置に横線を挿入する (hl)
といった装飾も可能となっております。
またスライドのページ遷移としてはvimらしくh,lが利用できます。
またプレゼンの終了は q となっております。
Vimはプレゼンツールにもなりますよ!
こんごも精力的にSyntaxによるハイライトなども実装していくつもりです。
Happy vimmer life!!