18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vim scriptでのイミディエイトウィンドウを作った。

Last updated at Posted at 2013-06-16

この記事はVim Advent Calendar 2012 : ATND203日目の記事になります。

今回はGoogle Chrome Developer ConsoleのようなものVim scriptにも欲しいなっと思って、
Vim scriptでのイミディエイトウィンドウっぽいのを作ってみました。

https://github.com/rbtnn/vimconsole.vim

インストール

インストールはNeoBundleとかでさくっとインストールしてください。
依存しているプラグインは基本的にありません。

インストール後の設定は特に必要ないです。
あえて設定するとすればウィンドウの高さとキーマッピングぐらい。

追記(2013/06/26): 設定しなくても十分使えるようにデフォルト設定していますが、設定についての詳細はhelpを参照してください。(オプションについては仕様が変わる可能性が大なのでここでは説明しないことにしました。)

" VimConsoleを開いた時のウィンドウの高さを設定。(デフォルト値は6です。)
let g:vimconsole#height = 10

NeoBundle 'rbtnn/vimconsole.vim'

「基本的に」というのは、https://github.com/thinca/vim-prettyprint をインストールしていた場合には
出力にPrettyPrint()を使うようになっています。なので入れていると、辞書やリストをいい感じに出力することができます。

使い方

基本的なインターフェースはjavascriptっぽくしてあります。
出力されるウィンドウはVimConsoleと言い、基本的にシングルトンなものです。
VimConsoleを2ウィンドウにすることは想定していません。

VimConsoleを開くには:VimConsoleOpenコマンドで、閉じるには:VimConsoleCloseコマンドでできます。
一応、:VimConsoleToggleコマンドも用意しています(開閉をトグルするコマンド)。
VimConsoleの内容を更新するには:VimConsoleRedrawコマンドで更新できます。

VimConsoleの出力関連は以下のような関数やコマンドが用意されています。

VimConsoleの出力をクリアにする。

" 関数バージョン
call vimconsole#clear()
" コマンドバージョン
VimConsoleClear

VimConsoleに出力する。(1)

" 関数バージョン
call vimconsole#log(123)
" コマンドバージョン
VimConsoleLog "hoge\nfoo"

VimConsoleに出力する。(2)

" 関数バージョン(ハイライトは`WarningMsg`)
call vimconsole#warn("this is a warn message.")
call vimconsole#warn("this is a %s message.", 'warn') " printfのような引数にも対応しています。
" コマンドバージョン
VimConsoleWarn { 'A' : 23, 'B' : { 'C' : 0.034 } }

VimConsoleに出力する。(3)

" 関数バージョン(ハイライトは`Error`)
call vimconsole#error("this is an error message.")
" コマンドバージョン
VimConsoleError function('tr')

VimConsoleに出力する。(4)

" 第1引数が真なら出力されます。これに当たるコマンドは用意されていません。
call vimconsole#assert(1,"(true) this is an assert message.")
call vimconsole#assert(0,"(false) this is an assert message.")

VimConsoleのN行目に当たるオブジェクトを収得する。

" 引数を省略した場合、`line(".")`を指定したことになります。
let  obj = vimconsole#at()

" VimConsoleの2行目のオブジェクトを返す。
let  obj = vimconsole#at(2)

" 不正な引数は`{}`を返します。
let  obj = vimconsole#at(-12)

以上、vimconsole.vimでした。まぁ、Vim scriptのデバッグとかに使ってもらえればいいなーと思います。

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?