vim-jp / vimdoc-ja / netbeans

netbeans - Vimドキュメント

メインヘルプファイルに戻る
netbeans.txt  For Vim バージョン 8.2.  Last change: 2020 Nov 02


                  VIMリファレンスマニュアル    by Gordon Prieur et al.


                                        netbeans NetBeans netbeans-support

Vim NetBeans プロトコル: Vim と IDE を統合するためのソケットインターフェイス

1.  はじめに                                    netbeans-intro
2.  NetBeans インターフェイスでできること       netbeans-integration
3.  NetBeans 用に configure する                netbeans-configure
4.  エラーメッセージ                            netbeans-messages
5.  Vim を NetBeans モードで起動する            netbeans-run
6.  NetBeans プロトコル                         netbeans-protocol
7.  NetBeans コマンド                           netbeans-commands
8.  既知の問題                                  netbeans-problems
9.  NetBeans プロトコルのデバッグ               netbeans-debugging
10. NetBeans External Editor
    10.1. NetBeans をダウンロードする           netbeans-download
    10.2. NetBeans のキーバインド               netbeans-keybindings
    10.3. NetBeans 側の準備                     netbeans-preparation
    10.4. External Editor モジュールの入手      obtaining-exted
    10.5. NetBeans の設定                       netbeans-setup

{+netbeans_intg 機能つきでコンパイルされたときのみ利用可能}

==============================================================================
1. はじめに                                             netbeans-intro

NetBeans インターフェイスは、最初は External Editor プラグインを使って Vim と
NetBeans Java IDE を統合するために開発されました。その NetBeans プラグインは
今はもう NetBeans の新しいバージョンに対応しておらず、このプロトコルは任意の
IDE と Vim を統合させるために開発されています。

Vim の NetBeans プロトコルは、古典的な TCP ソケットを使った、テキストベース
の通信プロトコルです。Java や NetBeans にはまったく依存していません。ソケッ
トインターフェイスさえ備えていれば、どんな言語・環境でもこのプロトコルを使っ
て Vim をコントロールできます。C, C++, Python, Java の実装がすでに存在してい
ます。歴史的な理由により NetBeans の名前が今も残されています。

NetBeans プロトコルを使ったアクティブなプロジェクト:
- Eclim, http://eclim.org/

VimIntegration, Vim の統合を行っている様々なプロジェクトの説明
        http://www.freehackers.org/VimIntegration

NetBeans プロトコルを使っているか使っていたプロジェクト:
- Agide, AAP プロジェクト用の IDE。Python で書かれている (現在は :Termdebug
  に置き換えられている): http://www.a-a-p.org
- Clewn, gdb 統合。C で書かれている:
        http://clewn.sourceforge.net/
- Pyclewn, gdb 統合。Python で書かれている:
        http://pyclewn.sourceforge.net/
- VimWrapper, Vim と IDE を簡単に統合するためのライブラリ:
        http://www.freehackers.org/VimWrapper
時代遅れになったプロジェクト (リンクは機能しません):
- VimPlugin, Eclipse の内部に Vim を取り込む:
        http://vimplugin.sourceforge.net/wiki/pmwiki.php
- PIDA, Python で書かれた IDE:
        http://pida.co.uk/

詳しくは、それぞれのプロジェクトページを参照してください。

別の方法としてチャネルを使う方法があります。詳しくは channel を参照してくだ
さい。

このヘルプページの以降の部分で、NetBeans ソケットインターフェイスを使って Vim
をコントロールするプログラムのことを「Vim コントローラ」と呼びます。


NetBeans IDE について

NetBeans は、Sun Microsystems, Inc. と netbeans.org の開発者コミュニティが合
同で開発しているオープンソースの統合開発環境(IDE)です。最初は Java の IDE で
したが、今では C, C++, Fortran もサポートするようになっています。

NetBeans に関してより詳しくは http://www.netbeans.org を参照してください。
The External Editor は残念なことに obsolete と宣言されています。
 http://externaleditor.netbeans.org

Sun Microsystems, Inc. は NetBeans を Sun ONE Studio という名前でもリリース
しています。Sun ONE Studio に関しては http://www.sun.com を参照してくださ
い。

現在のところ、NetBeans は Java を完全サポート、C, C++, Fortran を限定的にサ
ポートしています。Sun ONE Studio は Java, C, C++, Fortran を完全サポートして
います。

==============================================================================
2. NetBeans インターフェイスでできること        netbeans-integration

Vim の NetBeans ソケットインターフェイスを使うと、Vim から情報を引き出した
り、Vim に指定の動作をさせることができます:
- バッファに関する情報を取得する: バッファ名、カーソル位置、バッファの内容、
  など
- バッファが開く・閉じるとき通知してもらう
- バッファの内容がどのように変わったかを通知してもらう
- ファイルを読み込む・保存する
- バッファの内容を修正する
- 特殊なキーバインドをインストールする
- ウィンドウを前面に出す。ウィンドウの位置・サイズを調整する

Vim にキーストロークを送ったり、Vim の中で関数を評価するには clientserver
インターフェイスを使う必要があります。


==============================================================================
3. NetBeans 用に configure する                 netbeans-configure

Vim のインストールについてより詳しくは、ユーザーマニュアルの usr_90.txt を
読んでください。


Unix では:
----------

configure を引数なしで起動した場合、NetBeans インターフェイスを有効にできる
か configure がチェックし、可能なら有効にします。

NetBeans インターフェイスを有効にしたくない場合は、Makefile の中の
"--disable-netbeans" の行のコメントアウトを解除すれば無効にできます。

現在 NetBeans インターフェイスは端末動作の Vim と GUI (GTK, GNOME, Windows,
Athena, Motif) の gvim でのみサポートされています。

                                                        netbeans-xpm
Motif をサポートするためには XPM ライブラリが必要です。
XPM ライブラリは、Motif または Athena を使用して Vim内に画像を表示するために必
要です。それがなければ、ツールバーと目印(sign)は無効になります。

XPMライブラリは、フランス国立コンピュータ科学研究所の Arnaud Le Hors によって
提供されています。それは http://cgit.freedesktop.org/xorg/lib/libXpm からダウ
ンロードすることができます。これを書いている時点での現在のリリースは
xpm-3.4k-solaris.tgz で、これは gzip された tarファイルです。 ディレクトリ
/usr/local/xpm を作成してそこにファイルを展開すると、Makefileのコメントアウト
されていない行を変更せずに使用できます。 他のxpmディレクトリを使用する場合は、
src/Makefile の XPM_DIR を変更する必要があります。

MS-Windows では:
----------------

Win32 サポートは現在ベータ版の段階です。

Win32 で XPM signs を使う(NetBeans と使う場合など)ためには、XPM を自分自身で
コンパイルするか、コンパイル済みライブラリを使う必要があります。
http://iamphet.nm.ru/misc/ (MS Visual C++ 用)
http://gnuwin32.sourceforge.net (MinGW 用)

デバッグを有効化する:
---------------------

Vim と NetBeans プロトコルのデバッグを有効化するには、"NBDEBUG" マクロを定義
する必要があります。お使いのプラットフォーム用の Makefile の中から "NBDEBUG"
を検索し、どの行のコメントを解除すればよいかを調べてください。そうすればコン
パイルコマンドに "-DNBDEBUG" が追加されます。netbeans-debugging も参照して
ください。

==============================================================================
4. エラーメッセージ                                     netbeans-messages

以下のエラーメッセージは NetBeans ソケットプロトコルのものです:

                                                        E463
Region is guarded, cannot modify
日本語版:領域が保護されているので, 変更できません
                Vim コントローラがテキスト中に保護領域を設定しており、そこを
                変更することはできません。必要に応じてカレントバッファもセッ
                トします。

                                                        E532
The defineAnnoType highlighting color name is too long
                defineAnnoType コマンドの "fg" と "bg" の色指定引数の最大長は
                32 文字です。
                バージョン 2.5 で新たに追加された仕様。

                                                        E656
Writes of unmodified buffers forbidden
                Vim コントローラによって開かれている変更されていないバッファ
                を書き出すことはできません。

                                                        E657
Partial writes disallowed
                Vim コントローラによって開かれているバッファの部分的な書き出
                しはできません。

                                                        E658
Connection lost for this buffer
日本語版:バッファの NetBeans 接続が失われました
                Vim コントローラがこのファイルの状態について混乱してしまいま
                した。データを破損する危険を冒すよりも、このファイルに対する
                接続を切断することを選びました。このファイルに対する変更を保
                存する責任は Vim が引き継ぎ、Vim コントローラはもうそれらに
                ついて関知しません。

                                                        E744
Read-only file
日本語版:NetBeans は読込専用ファイルを変更することを許しません
                通常の Vim では、読み込み専用ファイルを変更することはでき、
                ファイルを書き出すときだけ読み込み専用のルールが適用されま
                す。しかし、NetBeans はユーザーが読み込み専用ファイルに変更
                を施すことを許可しません。そのため、Vim が読み込み専用ファイ
                ルを変更すると混乱してしまいます。そのため、NetBeans モード
                で動作しているときは、Vim でもファイルへの変更を許可しないよ
                うにしています。

==============================================================================
5. Vim を NetBeans モードで起動する                     netbeans-run

Vim を NetBeans モードで実行するには二つの方法があります:

        + IDE から起動するときなどに Vim に -nb 引数を付けて起動する
        + Vim の中で :nbstart コマンドを使って開始する

Vim は接続試行時に 3 秒のタイムアウトを用います。

                                                        netbeans-parameters
NetBeans 接続情報を指定する形式は三通りあります。
コマンドラインで -nb 引数を指定するときは次のように指定します:

        -nb={fname}                             ファイルから
        -nb:{hostname}:{addr}:{password}        直接指定
        -nb                                     ファイルまたは環境変数から

Vim の中で :nbstart コマンドの引数として指定するときは次のように指定します:

        ={fname}                                from a file
        :{hostname}:{addr}:{password}           directly
        <MISSING ARGUMENT>                      from a file or environment

                                                        E660 E668
NetBeans の開始をコマンドラインで指定するとき、セキュリティ上の理由からベスト
な方法は、情報をファイルに書き、自分だけが読めるようにしておくことです。ファイ
ル名は "-nb={fname}" で渡すか、または "-nb" をパラメーターなしで使うと環境変数
"__NETBEANS_CONINFO" が使われます。このファイルは以下の三行を含んでいなければ
なりません(順序は問わない):

        host={hostname}
        port={addr}
        auth={password}

これ以外の行は無視されます。Vim コントローラが終了後にこのファイルを削除する責
任を負います。

{hostname} は Vim コントローラが動作するマシンの名前です。省略されたときは、
環境変数 "__NETBEANS_HOST" または既定値の "localhost" が使われます。

{addr} は NetBeans インターフェイスのポート番号です。省略されたときは、環境
変数 "__NETBEANS_SOCKET" または既定値の 3219 が使われます。

{password} は NetBeans への接続のパスワードです。省略されたときは、環境変数
"__NETBEANS_VIM_PASSWORD" または "changeme" が使われます。

Vim は起動時に、指定されたホスト・ポートへのソケット接続(クライアント側)を
初期化します。接続が確立されると、AUTH イベントによりパスワードが送信されま
す。


==============================================================================
6. NetBeans プロトコル                                  netbeans-protocol

Vim コントローラと Vim の通信にはプレーンテキストのメッセージが使われます。
このプロトコルは、最初は NetBeans の External Editor モジュールと協調して動作
するように設計されました。その後、Agide (A-A-P GUI IDE, http://www.a-a-p.org
を参照)と、そして他の IDE とも動作するように拡張されました。この拡張は
"version 2.1" とバージョンづけられています。

プロトコル version 2.2 は小さな変更で、NetBeans ユーザーにのみ影響し、Agide
ユーザーには無関係なはずでした。しかし、あるバグが修正されました。
netbeans_saved() 関数が "save" プロトコルコマンドを送信するのですが、プロト
コル version 2.1 とそれ以前では、それが書き込みが行われたことの通知であると
誤解されていました。実際は NetBeans に対して保存するよう通知するものだったの
で、複数の書き込みが行われました。これが様々な問題を引き起こし、2.2 で修正さ
れました。以降、同じ間違いが起こらないようにするため、netbeans_saved() は
netbeans_save_buffer() と名前が変更されました。

現在のバージョンは 2.5 です。2.4 と 2.5 の違いは下記文章から "2.5" を検索して
ください。

メッセージはソケットを通じて送られます。メッセージは UTF-8 のプレーンテキス
トなので、このプロトコルは他のどんな通信メカニズムでも使えます。

Netbeans メッセージは Vim がユーザー入力待ちでアイドル状態のときに処理されま
す。Vim が非対話モードのとき (例えば Vim script による自動テストを実行している
ときなど) は、アイドルループは頻繁には呼ばれないのでメッセージ処理が追いつかな
いかもしれません。その場合は Vim script に :sleep コマンドを入れてください。
:sleep コマンドは Netbeans メッセージの処理を呼び出します。

6.1 メッセージの種類            nb-messages
6.2 用語                        nb-terms
6.3 コマンド                    nb-commands
6.4 関数と応答                  nb-functions
6.5 イベント                    nb-events
6.6 特別なメッセージ            nb-special
6.7 プロトコルエラー            nb-protocol_errors


6.1 メッセージの種類                                    nb-messages

メッセージには四つの種類があります:

種類            方向            コメント
コマンド        IDE -> editor   応答は必要ない
関数            IDE -> editor   エディタは応答を送信しなければならない
応答            editor -> IDE   関数への応答としてのみ送られる
イベント        editor -> IDE   応答は必要ない

メッセージは、改行文字で終わる一行として送られます。引数は一つのスペースで区
切られます。メッセージの最初の要素はメッセージの種類に依存します:

種類            最初の要素              例
コマンド        bufID:name!seqno        11:showBalloon!123 "text"
関数            bufID:name/seqno        11:getLength/123
応答            seqno                   123 5000
イベント        bufID:name=seqno        11:keyCommand=123 "S-F2"



6.2 用語                                                nb-terms

bufID           バッファ ID。メッセージは特定のバッファ向けの場合も、全体用の
                場合もあります。全体用のメッセージは bufID 0 を使います。
                NOTE: このバッファ ID は IDE によって割り当てられるもので、
                Vim のバッファ番号とは異なります。bufID は連続して増加する番
                号で、1 から始まります。'switchbuf' オプションが "usetab" に設
                定されている状態で "bufID" のバッファが現在のタブページで見つ
                からない場合に、netbeans コマンドおよび関数はカレントウィンド
                ウでバッファを入れ替える代わりに他のタブページに含まれるこの
                バッファのうち最初のものへジャンプし、それをカレントバッファと
                して設定します。

seqno           IDE が Vim にコマンド・関数を発行するときつけられる連続する番
                号です。応答は、その元メッセージと同じシーケンス番号を使わねば
                なりません。シーケンス番号 0 はイベント用に使われます(最後に受
                け取ったコマンドまたは関数のシーケンス番号が使われることもあり
                ます)。

string          ダブルクォートで囲まれた文字列。UTF-8 でエンコードされます。
                よって ASCII 文字はそのままとなります。特殊文字はバックスラッ
                シュをつけて表現されます:
                        \"      ダブルクォート
                        \n      改行
                        \r      復帰
                        \t      タブ (任意。そのままでも使えます)
                        \\      バックスラッシュ
                NUL 文字は使用できません。

boolean         次の二つの値のどちらかとなります。
                        T       true
                        F       false

number          10 進数の数値。

color           10 進数の数値か "none" (クォートなし) か色の名前 (クォートな
                し) のいずれか。色の名前は highlight-ctermfg と gui-colors
                で定義されている名前。
                バージョン 2.5 で新たに追加された仕様。

offset          バッファ中のバイト位置を示す数値。第 1 バイト目のオフセットは
                0 となります。改行は、ファイル中での表現と同じくカウントされ
                ます(CR/LF は 2 バイト)。
                Note: マルチバイト文字は、そのバイト数カウントされます。

lnum/col        行番号と桁番号。行番号は 1 から始まり、桁番号は 0 から始まる
                バイト位置となります。Note: マルチバイト文字は 2 桁以上を占
                めることに注意してください。

pathname        文字列: フルパスでのファイル名


6.3 コマンド                                            nb-commands

actionMenuItem  未実装。

actionSensitivity
                未実装。

addAnno serNum typeNum off len
                このバッファに annotation をつけます。
                引数:
                   serNum       number  この annotation の通し番号。削除する
                                        ときに使われます。
                   typeNum      number  このバッファに対して defineAnnoType
                                        で定義された annotation タイプの番号。
                   off          number  annotation をつける位置のオフセット
                   len          number  未使用
                version 2.1 では "off" の代わりに "lnum/col" が使えます。

balloonResult text
                未実装。

close           バッファを閉じます。これを使うとカレントバッファがない状態に
                なります。非常に危険です!

create          名前をつけてバッファを作成します。作成されたバッファがカレン
                トバッファになります(元のバッファは、変更されていれば hidden
                状態になります)。
                Vim コントローラは、開いているファイルに対する最初のコマンド
                としてこのコマンドを使うべきです。一連のコマンドの例は次のよ
                うになります:
                        create
                        setCaretListener        (無視される)
                        setModified             (効果なし)
                        setContentType          (無視される)
                        startDocumentListen
                        setTitle
                        setFullName

defineAnnoType typeNum typeName tooltip glyphFile fg bg
                このバッファに対する annotation のタイプを定義します。
                引数:
                   typeNum      number  シーケンス番号(実際には使われない)
                   typeName     string  この annotation を識別するための名前
                   tooltip      string  未使用
                   glyphFile    string  アイコンのファイル名
                   fg           color   行の文字色
                   bg           color   行の背景色
                Vim はこの annotation に対して目印を定義します。
                色を数値で指定するときは "#rrggbb" で赤緑青での色指定になり
                (gui-colors 参照) gVim でのみ定義されます。
                色を名前で指定するときはその色はカラー端末上で動作する Vim と
                gVim の両方で定義されたものです。
                "fg" と "bg" が両方とも "none" の場合、行は強調されません
                (version 2.1 から)。
                "glyphFile" が空の場合、テキストの目印は使われません
                (version 2.1 から)。
                "glyphFile" が 1 または 2 文字である場合、テキストの目印が定
                義されます(version 2.1 から)。
                Note: annotation にはシーケンス番号がつけられ、その番号は
                addAnno で使われます。

editFile pathname
                バッファの名前をセットし、ファイル "pathname" を開きます。
                IDE が開くファイルをエディタに伝える通常の方法です。

                バッファに bufID を割り当てるため、このコマンドに対する
                bufID は 0 以外の値にしなければなりません。bufID 0 でイベン
                ト fileOpened が発生しますが、バッファは割り当てられていま
                す。

                IDE からエディタにファイルのテキストを渡したい場合には、代わ
                りに次のコマンドを使ってください:
                        setFullName
                        insert
                        initDone
                version 2.1 から。

enableBalloonEval
                未実装。

endAtomic       アトミックな操作を終了します。"startAtomic" と "endAtomic"
                の間に行われた変更は一つの操作として undo されます。しかし
                現在は未実装です。必要に応じて再描画をしてください。

guard off len
                バッファ内の領域を保護します。保護された領域を変更することは
                できません。"off" と "len" は number で、保護されるテキスト
                を指定します。

initDone        バッファの準備ができたとマークします。暗黙的にそのバッファを
                カレントバッファにします。自動コマンドイベント BufReadPost を
                発生させます。

insertDone starteol readonly
                Vim コントローラから Vim へ、最初のファイルの挿入が行われたこ
                とを通知します。これにより、ファイル読み込みのメッセージが表示
                されます。最後の行に EOL がない場合は "starteol" が "F" になり
                ます。ファイルが readonly としてマークされていると "readonly"
                が "T" になります。version 2.3 より前では、ファイルを開いた後にメッセー
                ジが表示されませんでした。version 2.3 から。

moveAnnoToFront serNum
                未実装。

netbeansBuffer isNetbeansBuffer
                "isNetbeansBuffer" が "T" ならば、このバッファは NetBeans に
                より「所有」されます。
                version 2.2 から。

putBufferNumber pathname
                pathname は string。"pathname" という名前のバッファにバッファ
                番号を割り当てます。エディタで新たにファイルが開かれると、その
                ことを IDE に通知します。そして IDE はそのファイルに対してバッ
                ファ番号を割り当てます。そのときこのコマンドが使われます。その
                バッファは初期化済みとマークされます。
                version 2.1 から。

raise           エディタを前面に移動します。
                GUI Vim でのみ有効。
                version 2.1 から。

removeAnno serNum
                以前にこのバッファに対してつけられた annotation を削除します。
                "serNum" は addAnno で使われたのと同じ番号です。

save            バッファが変更されたとき保存します。インターフェイスのもう一方
                側はバッファを書き出し、"setModified" を呼び出してバッファの
                "changed" フラグをオフにすることを期待されています。
                これらの条件が真になる場合、書き込みはスキップされます:
                - 'write' がオフのとき
                - バッファが読み込み専用のとき
                - バッファがファイル名を持たないとき
                - 'buftype' により書き込みが禁止されているとき
                version 2.2 から。

saveDone
                Vim コントローラから Vim へ、保存が行われたことを通知します。
                これによって保存メッセージが表示されます。version 2.3 より前で
                は、保存メッセージは表示されませんでした。
                version 2.3 から。

setAsUser       未実装。

setBufferNumber pathname
                "pathname" という名前のバッファにバッファ番号を割り当てます。
                エディタで新たにファイルが開かれると、そのことを IDE に通知し
                ます。そして IDE はそのファイルに対してバッファ番号を割り当て
                ます。そのときこのコマンドが使われます。
                このバッファがカレントバッファになるという副作用があります。
                "putBufferNumber" の方がより便利なコマンドです。

setContentType
                未実装。

setDot off      このバッファをカレントバッファにし、カーソルを指定した位置に移
                動します。バッファが他のウィンドウで開かれている場合は、その
                ウィンドウがカレントウィンドウになります。
                折り畳みがある場合、カーソル行が見えるように開かれます。
                version 2.1 では "off" の代わりに "lnum/col" が使えます。

setExitDelay seconds
                "seconds" は number。終了の遅延をセットします。
                この遅延によって、IDE に対して本当に終了するまえに何かをする
                チャンスを与えます。既定値は 2 秒です。
                version 2.1 から。
                version 2.3 から非推奨になりました。

setFullName pathname
                バッファ "pathname" に対するファイル名をセットします。引数は
                string です。
                IDE の制御下にあるファイルを IDE が編集したいときに使われます。
                このバッファがカレントバッファになりますが、ファイルは読み込
                まれません。その内容をセットするため、次に "insert" コマンド
                が発行されます。

setLocAndSize   未実装。

setMark         未実装。

setModified modified
                boolean の引数 "modified" が "T" のとき、バッファを modified
                状態にします。"F" のときは unmodified にします。

setModtime time
                Vim コントローラによりファイルが直接保存されたあとに発行されま
                す。バッファの変更時刻を更新します。
                version 2.3 から。

setReadOnly readonly
                boolean引数 "readonly" が True の "T" のとき、バッファを読み込
                み専用とマークします。False の "F" のときは、読み込み専用では
                ないとマークします。version 2.3で実装されました。

setStyle        未実装。

setTitle name
                "name" という名前のバッファのタイトルをセットします。引数
                "name" は string。このタイトルは Vim コントローラ関数でのみ
                使われ、Vim では使われません。

setVisible visible
                boolean の引数 "visible" が "T" の場合は、そのバッファへ移動し
                ます。"F" の場合は何もしません。

showBalloon text
                マウスポインタの位置に、"text" という内容のバルーンウィンドウ
                (ポップアップウィンドウ)を表示します。引数 "text" は string で
                す。マウスが 2, 3 ピクセル以上移動すると、バルーンウィンドウは
                消えます。
                GUI Vim でのみ有効。
                version 2.1 から。

specialKeys
                Vim コントローラに戻して処理させるキー(大抵はファンクション
                キー)を設定します。これによって Vim の中で IDE のホットキーを
                使うことができるようになります。
                version 2.3 で実装されました。

startAtomic     アトミックな操作を開始します。"endAtomic" が発行されるまで画面
                の更新は行われません。

startCaretListen
                未実装。

startDocumentListen
                そのバッファにおける変更を "insert" と "remove" イベントに
                よってIDE に通知するようセットします。既定では通知するように
                なっています。

stopCaretListen
                未実装。

stopDocumentListen
                そのバッファにおける変更を IDE に通知しないようにします。
                startDocumentListen の逆です。
                NOTE: "netbeansBuffer" によってこのバッファが NetBeans バッ
                ファであるとマークされている場合、このバッファは Vim の中で
                削除されます。Sun Studio 10 との互換性のためです。

unguard off len
                "guard" の逆で、テキスト領域に対する保護を解除します。
                必要に応じてカレントバッファもセットします。

version         未実装。


6.4 関数と応答                                          nb-functions

getDot          未実装。

getCursor       カレントバッファの bufID とカーソル位置を返します。
                応答は次の形式:
                        seqno bufID lnum col off
                seqno = 関数のシーケンス番号
                bufID = カレントバッファの bufID (未知なら -1)
                lnum  = カーソル位置の行番号 (1 から始まる)
                col   = カーソル位置の桁番号 (バイト単位。0 から始まる)
                off   = カーソル位置のバッファ内のオフセット (バイト単位)
                version 2.1 から。

getLength       バッファの長さをバイト単位で返します。
                5000 バイトのバッファにおける応答の例:
                        123 5000
                TODO: 部分行の使い方を説明する。

getMark         未実装。

getAnno serNum
                指定された annotation の行番号を返す。
                引数:
                        serNum          annotation の通し番号
                応答は次の形式:
                        123 lnum        annotation の行番号
                        123 0           無効な annotation 番号
                version 2.4 から。

getModified     バッファが指定された場合: バッファが変更されていないなら 0、
                変更されているなら 1 を返します。
                バッファが指定されない場合(bufID が 0 の場合): 変更されてい
                るバッファの数を返します。戻り値が 0 なら、Vim に終了するよう
                指示しても安全です。
                version 2.1 から。

getText         バッファの中身を文字列として返します。2 行だけのバッファにおけ
                る応答の例:
                        123 "first line\nsecond line\n"
                NOTE: ドキュメントには引数 offset と length が記述されています
                が、実装されていません。

insert off text
                位置 "off" の前に "text" を挿入します。"text" は string、
                "off" は number です。
                "text" の行末には "\n" (改行) がつきます。'fileformat' が
                "dos" の場合には "\r\n" がつきます。空バッファに対して
                "insert" を行うと、Vim はそれに応じて 'fileformat' を設定し
                ます。
                "off" が行頭を指している場合、その行の前に挿入されます。
                そのため、"off" が 0 の場合、最初の行の前に挿入されます。
                "off" が行頭よりも後を指す場合(行末の NUL を指す場合も含
                め)、テキストの最初の行はその行に追加されます。2 行目以降
                はその下にきます。
                応答は次のようになります:
                        123             問題なし
                        123 !message    失敗
                Note: 応答のメッセージはクォートされていません。
                必要に応じてこのバッファをカレントバッファにします。
                変更されたテキストへカーソルを移動させません。
                undo 情報をリセットします。

remove off length
                位置 "off" のテキストを "length" バイト削除します。どちらの
                引数も number です。
                応答は次のようになります:
                        123             問題なし
                        123 !message    失敗
                Note: 応答のメッセージはクォートされていません。
                必要に応じてこのバッファをカレントバッファにします。

saveAndExit     ":confirm qall" と同じことをします(Vim を閉じる)。変更された
                ファイルがない、またはユーザーが操作をキャンセルしなかった場
                合、Vim は終了し、戻り値は送信されません。IDE は接続が切断し
                たことをもって成功と判断できます。ユーザーが操作をキャンセル
                した場合、変更されているバッファの番号が返され、Vim は終了し
                ません。
                version 2.1 から。


6.5 イベント                                            nb-events

balloonEval off len type
                マウスポインタが一定時間テキストの上に置かれました。"len" が 0
                の場合、マウスポインタが "off" の位置にあり、選択がされていな
                いことを意味します。"len" が 0 でない場合、"off" から "off" +
                "len" までのテキストが選択されていることを意味します。
                バッファに対して "enableBalloonEval" が使われた後でのみ送信さ
                れます。"type" はまだ定義されていません。
                未実装。

balloonText text
                'ballooneval' がセットされており、マウスポインタが一定時間
                テキストの上に置かれたとき発生します。"text" は string で、マ
                ウスポインタの下のテキストを表します。
                GUI Vim でのみ有効。
                version 2.1 から。

buttonRelease button lnum col
                ボタンが離されたとき、どのボタンが押されたかと、カーソルの位置
                を報告します。Vim コントローラによって所有されているバッファに
                おいてのみ発生します。マウスがステータスラインまたはセパレータ
                ラインの中にあるときは、ボタンが離されても、このイベントは送信
                されません。col が 1 未満の場合、目印エリアの中でボタンが離さ
                れたことを意味します。
                version 2.2 から。

disconnect
                Vim が終了するので、これ以上コマンドを読み書きしないよう Vim
                コントローラに伝えます。
                version 2.3 から。

fileClosed      未実装。

fileModified    未実装。

fileOpened pathname open modified
                ユーザーがファイルを開きました。
                引数:
                   pathname     string    ファイル名
                   open         boolean   常に "T"
                   modified     boolean   常に "F"

geometry cols rows x y
                エディタウィンドウのサイズと位置を報告します。
                引数:
                   cols         number    テキストの桁数
                   rows         number    テキストの行数
                   x            number    画面上のピクセル位置
                   y            number    画面上のピクセル位置
                Motif でのみ動作します。

insert off text
                Vim において、"off" の位置にテキスト "text" が挿入されまし
                た。有効化されているときのみ発生します。
                "startDocumentListen" を参照してください。

invokeAction    未実装。

keyCommand keyName
                "keyName" という名前の特殊キーが押されたことを報告します。
                "keyName" は string です。
                サポートされているキー名:
                        F1              ファンクションキー 1
                        F2              ファンクションキー 2
                        ...
                        F12             ファンクションキー 12

                        ' '             スペース (シングルクォートはつかない)
                        !               エクスクラメーションマーク
                        ...             それ以外の ASCII 印字可能文字
                        ~               チルダ

                        X               認識されないキー

                前に "C", "S", "M" がつくことがあります。それぞれ Control,
                Shift, Meta (Alt) キーを意味します。これらの修飾キーとキー名
                の間にはダッシュがつきます。例: "C-F2".
                ASCII 文字は version 2.1 から。

keyAtPos keyName lnum/col
                "keyName" と同様ですが、行番号と桁番号も報告します。
                version 2.1 から。

killed          ユーザーによってファイルが削除またはワイプアウトされ、
                annotation が削除されました。このバッファに対する bufID は
                無効になりました。IDE によって bufID が割り当てられたファイ
                ルに対してのみ発生します。

newDotAndMark off off
                カーソルがバッファの "off" バイトの位置にあることを報告しま
                す。"keyCommand" イベントの直前でのみ送信されます。

quit            未実装。

remove off len
                Vim において、"off" の位置から "len" バイトのテキストが削除
                されました。
                有効にされているときのみ発生します。"startDocumentListen" を
                参照してください。

revert          未実装。

save            バッファが保存され、「未変更」状態です。
                有効にされているときのみ発生します。"startDocumentListen" を
                参照してください。

startupDone     エディタがスタートアップ処理を完了し、ファイルを編集する準備
                が整いました。
                version 2.1 から。

unmodified      バッファが「未変更」状態になりました。
                有効にされているときのみ発生します。"startDocumentListen" を
                参照してください。

version vers    インターフェイスの実装のバージョンを報告します。Vim は
                "2.4" と報告します(ダブルクォートを含む)。


6.6 特別なメッセージ                                    nb-special

これらのメッセージは、前述のメッセージの形式に従いません。改行文字で終わりま
す。

ACCEPT          未使用。

AUTH password   editor -> IDE: エディタが IDE に送る最初のメッセージ。-nb
                で指定された、ソケットサーバーのパスワードを含んでいなければな
                りません。引用符は使われません。

DISCONNECT      IDE -> editor: 接続を切断します。その後エディタは終了しま
                す。IDE は、保存されていない変更がないときしかこのメッセージ
                を送ってはなりません。

DETACH          IDE -> editor: エディタを終了させずに接続を切断します。エ
                ディタは終了させずに IDE を終了させるとき使われます。
                version 2.1 で導入されました。

REJECT          未使用。


6.7 プロトコルエラー                                    nb-protocol_errors

メッセージがプロトコルに違反したとき、以下のエラーが発生します:
E627 E628 E629 E632 E633 E634 E635 E636
E637 E638 E639 E640 E641 E642 E643 E644 E645 E646
E647 E648 E649 E650 E651 E652


==============================================================================
7. NetBeans コマンド                                    netbeans-commands

                                                        :nbstart E511 E838
:nbs[tart] {connection} 新しい Netbeans セッションを開始する。{connection} は
                        ソケット接続パラメーター。{connection} の書式は
                        netbeans-parameters で説明されています。
                        netbeans ソケットが接続されているかどうかは次のコマン
                        ドで確認できます:
                        ':echo has("netbeans_enabled")'

                                                        :nbclose
:nbc[lose]              現在の NetBeans セッションを閉じる。目印はすべて削除さ
                        れます。

                                                        :nbkey
:nb[key] {key}          Vim コントローラに {key} を送信する。
                        specialKeys コマンドによりホットキーがインストールされ
                        ているとき、このコマンドを使ってホットキー・メッセージ
                        を Vim コントローラに送信できます。
                        このコマンドはどのようなテキストでも送信できます。これ
                        は例えば Pyclewn で gdb コマンドを Vim ユーザーコマン
                        ドとして構築するのに使われています。
                        newDotAndMark, keyCommand, keyAtPos イベントが発生しま
                        す (この順番で)。


==============================================================================
8. 既知の問題                                           netbeans-problems

NUL 文字は扱えません。editor -> IDE の通信では、NUL は NL に置換して送信され
ます。IDE -> editor では、NUL を含めることはできません。

NetBeans セッションが端末動作の Vim で初期化され、後で :gui コマンドによって
GUI 環境に引き継がれることがあります。この場合、":gui" コマンドが .gvimrc を読
み込み、カラースキームが読み込まれ、そこで ":highlight clear" コマンドが実行さ
れることで、NetBeans annotation 用に定義された強調表示がクリアされるかもしれま
せん。
バージョン 2.5 で新たに追加された仕様。


==============================================================================
9. NetBeans プロトコルのデバッグ                        netbeans-debugging

Vim プロトコルをデバッグするには、まず Vim をデバッグサポートと NetBeans デ
バッグサポートつきでコンパイルします。netbeans-configure を参照してくださ
い。

次の環境変数をセットしてください:

    export SPRO_GVIM_DEBUG=netbeans.log
    export SPRO_GVIM_DLEVEL=0xffffffff

すると、やりとりされるすべての NetBeans プロトコルメッセージが netbeans.log
というファイルに記録されるようになります。

セッションを行った後の netbeans.log の内容は次のようになります:
Tue May 20 17:19:27 2008
EVT: 0:startupDone=0
CMD 1: (1) create
CMD 2: (1) setTitle "testfile1.txt"
CMD 3: (1) setFullName "testfile1.txt"
EVT(suppressed): 1:remove=3 0 -1
EVT: 1:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile1.txt" T F
CMD 4: (1) initDone
FUN 5: (0) getCursor
REP 5: 1 1 0 0
CMD 6: (2) create
CMD 7: (2) setTitle "testfile2.txt"
CMD 8: (2) setFullName "testfile2.txt"
EVT(suppressed): 2:remove=8 0 -1
EVT: 2:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile2.txt" T F
CMD 9: (2) initDone


==============================================================================
10. NetBeans External Editor

NOTE: この情報は古くなっています! NetBeans の古いバージョンを使っている場合
だけ読んでください。


10.1. NetBeans をダウンロードする               netbeans-download

NetBeans IDE は netbeans.org からダウンロードできます。リリースされたバージョ
ン、ソースをダウンロードでき、CVS を使って最新のソースを取得することもできま
す。ソースをダウンロードした場合、ビルド方法については netbeans.org にある説明
に従ってください。

NetBeans のバージョンによっては、External Editor モジュールを使うためにもう少
し手を加えなければならないかもしれません。External Editor モジュールによって
NetBeansは gvim と協調して動作できるようになります(xemacs とも :-)。
このモジュールが NetBeans に含まれていない場合、
http://externaleditor.netbeans.org を参照してください。

C, C++, Fortran サポートには、cpp モジュールも必要になります。
http://cpp.netbeans.org を参照してください。

Sun Microsystems, Inc から Sun ONE Studio の 30 日間無料試用版をダウンロード
することもできます。http://www.sun.com を参照してください。


10.2. NetBeans のキーバインド                   netbeans-keybindings

Vim は NetBeans コマンドを実行するキーバインドを理解します。これらは普通、
ファンクションキーの組み合わせです。NetBeans コマンドを実行するには、Pause
キーに続けて NetBeans のキーバインドをタイプします。たとえば、Javaファイルを
コンパイルする NetBeans のキーバインドは "F9" です。なので、Vim で "Pause F9"
と押すと Java ファイルをコンパイルできます。カレント行のブレークポイントをト
グルするには "Pause Shift F8" を押します。

Pause キーはファンクションキー 21 です。キーボードに Pause キーがなく、代わ
りにF8 を使いたいという場合、次のようにします:

        :map <F8> <F21>

External Editor モジュールは動的に NetBeans キーバインドを読み込むので、
NetBeans がキーバインドを変更していても、Vim は常に最新のキーバインドに対応し
ます。


10.3. NetBeans 側の準備                         netbeans-preparation

NetBeans を Vim と協調動作させるには、NetBeans External Editor モジュールが
読み込まれ、有効化されていなければなりません。Sun ONE Studio Enterprise
Edition を使っているなら、デフォルトでこのモジュールが読み込まれ有効化されます。
NetBeans を使っている場合は、このオープンソースのモジュールを入手しなければ
なりません。

このモジュールが入っているかを確認するには Tools->Options ダイアログを開き、
IDE Configuration->System->Modules の "Modules" リストを見ます。そこに
"External Editor" があれば、それが有効になっているか確認します("Enabled"
プロパティが "True" かどうか)。"External Editor" がなければ、次の節
obtaining-exted を参照してください。


10.4. External Editor モジュールの入手          obtaining-exted

External Editor モジュールを入手する方法は二通りあります。最も簡単な方法は、
NetBeans Update Center を使ってダウンロード・インストールすることです。
しかし残念なことに、いくつかのバージョンでは Update Center にこのモジュールが
存在しません。Update Center にない場合は、モジュールのソースをダウンロードして
ビルドする必要があります。私が NetBeans Update Center からダウンロードできるよ
うにしますので、ビルドは不要になるでしょう。
他の方法として http://externaleditor.netbeans.org もチェックしてください。

CVS で External Editor のソースを取得して自分でビルドする方法は
http://externaleditor.netbeans.org と http://www.netbeans.org を参照してくださ
い。残念ながら、これは簡単な道のりではありません。


10.5. NetBeans の設定                           netbeans-setup

NetBeans External Editor モジュールを読み込み、有効化できたら、あとは gvim の
コマンドラインを設定するだけです。

Tools->Options を開き、Editing カテゴリを表示します。External Editor を選択し
ます。右側のペインに Properties タブと Expert タブがあるはずです。Properties
タブで "Editor Type" を "Vim" にします。Expert タブで "Vim Command" を正しく設
定してください。

"Vim Command" を変更するときは注意してください。接続するためには、いくつかの
コマンドラインオプションを正しく設定する必要があります。コマンド名を変更するこ
とも可能ですが、単にそれだけです。gvim が $PATH の中にあるなら、コマンドを
"gvim" から始められます。gvim を$PATH から検索させたくないならフルパスで指定し
てください。以上で、NetBeansで開くファイルが gvim で開かれるようになります。

gvim で開かれるファイルもあるが、NetBeans のエディタで開かれるファイルもある
(拡張子が異なる)という場合、Expert タブの MIME Type プロパティを確認してくだ
さい。NetBeans は MIME によって判断し、External Editor はこのプロパティで指定
された MIME Type だけを開きます。


 vim:tw=78:ts=8:noet:ft=help:norl:
関連キーワード:  Vim, バッファ, version, コマンド, usr, 変更, メッセージ, off, 実装, 番号