最近 Vagrant 仮想サーバー内のファイルの参照や編集に Notepad++ と NppFTP を使い始めたのですが、今回は Notepad++ のもう一つのお薦めプラグインを紹介します
私は普段 NetBeans IDE を使っているのですが、関数の宣言元へのジャンプ機能をよく利用しています
エディタでは、通常、選択ワードや正規表現による検索、ジャンプ機能まではサポートされていることが多いのですが、関数の宣言元や参照リファレンスまでの検索となるとIDE等の環境でないとなかなかサポートされていません
NotePad++では、ソースコードを読むときに強力なアシストをしてくれる GNU GLOBAL を簡単に使えるようにしてくれる NppGTags プラグインがあり、関数の宣言元の検索も出来るようになります
ソースコードにタグ付けする類似のプラグインとして CTags 等もありますが、NppGtags プラグインが使いやすく高機能なのでお勧めです
普段はIDEを使っていても、ちょっとソースを確認したいって時は、IDEの代わりに Notepad++ を使えばサクッと確認することができます (^^)
pnedev/nppgtags
NppGTags プラグインの準備
Notepad++ エディタのインストールに関しては、前回の記事中で少し紹介しているので下記記事を参照して下さい
Vagrant仮想サーバーのファイルをNotepad++のNppFTPを使い直接編集
インストール
前回の記事でプラグインをインストールする時は、プラグインマネジャーから行っていましたが、NppGtags プラグインは、最新版が GitHub の NppGtags で公開されていますので、 そこからZipファイルをダウンロードします
Zipファイルを解凍して、その中の NppGTags.dll と NppGTags フォルダーをそのまま Notepad++ をインストールしたフォルダー以下にある plugins フォルダー内にコピーします
これで Notepad++ を再起動すれば NppGTags プラグインが有効化されます
設定
Settings
プラグインメニューから Settings を選択します
パーサーの選択
パーサーはデフォルト(GTags)、CTags、Pygments から選択できます。対象言語によっては変更する必要がありますが、C言語系やJava, PHPならデフォルトのままでOKです
GTags | C言語系やJava,PHP等をサポートしています |
CTags | より多くの言語をサポートしていますが、リファレンスの検索が未対応です |
Pygments | 外部からPythonライブラリ(Pygments)を導入する必要があります |
Auto update database
GTags を利用するには、対象フォルダにGTagsのデータベースを作成する必要があるのですが、そのデータベースの自動更新を行うかを指定します
ショートカットキーの割当
NppGTagsプラグインのメニューは、ショートカットキーが未設定ですので使いやすいように割り当てておきます
メニューの 設定→ショートカット管理 から行います
自分は以下のようにしました
AutoComplete | Alt+Spacebar |
AutoComplete File Name | |
Find File | |
Find Definition | Ctrl+B |
Find Refarence | Ctrl+Shft+B |
Search in Soure Files | |
Search in Other Files | |
Go Back | Alt+Left |
Go Foward | Alt+Right |
Toggle Results Window Forcus | Ctrl+Shift+Tab |
※他のショートカットと定義がダブらないようにする必要があります
コンテキストメニューへ追加
さらにマウスで右クリックした時に表示されるポップアップメニューにいくつかの動作を割り当てておくと便利なので追加します
メニューの 設定→コンテキストメニューを編集 から行います
contextMenu.xml ファイルに下記を追加します
<Item id="0"/> <Item PluginEntryName="NppGtags" PluginCommandItemName="Find Definition" ItemNameAs="GTags-定義を検索" /> <Item PluginEntryName="NppGtags" PluginCommandItemName="Find Reference" ItemNameAs="GTags-使用状況を検索" /> <Item PluginEntryName="NppGtags" PluginCommandItemName="Search in Source Files" ItemNameAs="GTags-ソースファイルを検索" /> <Item PluginEntryName="NppGtags" PluginCommandItemName="Search in Other Files" ItemNameAs="GTags-その他テキストファイルを検索" /> <Item id="0"/>
また、NppGTags プラグインとは関係ないのですが、選択ファイルが簡単にオープンできるように下記も追加しました
<Item MenuEntryName="Run" MenuItemName="Open file" ItemNameAs="選択ファイルを開く"/>
これで準備OKです
NppGTagsの使い方
GTagsを使って検索するには先に対象フォルダーでデータベースを生成する必要があります
このデータベースを使うことで、関数の定義元の検索等が高速に出来るようになります
GTagsデータベースの作成
メニューから Create database を実行すると、フォルダー選択ダイアログが表示されるので、通常はプログラムのプロジェクトルートフォルダーを指定すれば、それ以下のソースコードを対象として GTagsデータベースを生成してくれます
例えば、wordpress のルートフォルダーを指定すれば、そのフォルダー以下を再帰的にスキャンしてデータベースが作成されます
データベースの作成は、対象となるプログラムソースファイル数が多いと結構時間がかかります
データベースの作成や削除は、プラグインのメニューから簡単に出来るし、自動的に更新することも出来るので簡単に扱うことが出来ます
※データベースファイル(GTAGS, GRTAGS, GPATH, NppGTags.cfg)は、プロジェクトルートフォルダーに作成されますので、Git管理している場合は無視ファイルとして追加しておきます
Find Definition 定義を検索
まずは、一番使いたい関数の定義元を検索する機能を見てみます
試しに、Wordpress の wp_die 関数やってみました
あっという間に結果がエディタの下部に表示され、候補が複数あるのが分かります
このリストをダブルクリックすると対象ファイルにその位置へジャンプします
元のファイル表示位置へ戻りたい時は、ショートカットに定義した Alt+Left キーで戻ることが出来ます
なかなかいい感じです (^^)
Find Refarence 使用状況の検索
次に関数が使われている所(リファレンス)を検索してみます
これも結果がリスト上に分類されて直ぐに表示されます
Search in Source File / Search in Other File
あまり使うことはないかも知れませんが、選択ワードを検索する時に使用します
検索対象が Source File の時は、サポートしている言語(C言語系、Java、PHP)のソースコードを対象に検索し、Other File の場合は、それ以外の HTML, CSS, JavaScript, Text ファイル等を対象に検索します
Notepad++標準のファイル内検索を使うほうが私にはしっくりきます (^^)
Find File ファイル検索
ファイルパスや名前に指定した文字列を含むファイルを検索します
ファイルパスは、プロジェクトのルートディレクトリの相対パスとなります
試しに plugins で検索してみます
Autocomplete 補完機能
Notepad++エディタには標準で補完機能があるので、通常の補完でも候補を表示してくれます
NppGtagsの補完だとこんな感じです
違いは、NppGtagsの補完のほうがより多くの候補がリストアップされます。また、入力を続けると自動的に候補を絞り込んで表示します
補完機能は、IDEを使った場合より見劣りしますので、編集を伴う作業の場合は素直にIDEを使ったほうが良さそうです
また、Autocomplete File Name は、ファイル名入力を補完してくれる機能だと思うのですが、残念ながら手元で試した限りは PHP の include 等では機能しませんでした
機能や使いやすさでは、IDE等の統合環境よりも劣りますが、ちょっとコードを確認したいというような場合では Notepad++ は直ぐに起動するので意外と便利なのではないかと思います
以上、NppGTagsの使い方を紹介しました (^^)