Let's write β

プログラミング中にできたことか、思ったこととか

Yet Another Presentation Tool for Vim.

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ページ目
f:id:Pocket7878_dev:20110719005928p:image:medium
そして2ページ目
f:id:Pocket7878_dev:20110719005929p:image:medium
という風に反映されます。

ページ定義の構文の仕様は如何の通りです。


;;必要なのは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!!