USB メモリ活用講座
【基礎編・Notepad++ のプラグイン NppExec】

< 最終更新日: 2023-12-07 >

Notepad++ のプラグイン NppExec のインストール

Notepad++ のプラグイン NppExec を導入すると,外部コマンドを簡単に呼び出すことができるようになります. C 言語のコンパイラや TeX の組版命令を登録することで,統合環境 (IDE; Integrated Development Environment) のような使い方が可能になります.

ここでは USB メモリにインストールされた Notepad++ Portable に NppExec を加える方法を説明します. 必ず Notepad++ のポータブル化 を済ませてから,この先を読んでください. なお,USB メモリを PC に挿入したときに認識されるドライブレターが (U:) であるものとして説明し,このドライブのことを USB ドライブと呼びます.

警告: この Web ページ執筆時点の Notepad++ Portable が備えるプラグイン管理機能 (プラグイン-プラグイン管理) で導入可能な NppExec は最新版ではなく,NppExec_06RC2_dll.zip のようです※1NppExec_06RC2_dll.zip は Notepad++ のバージョン 7.6 以降で採用された「プラグイン管理機能 (Plugin Admin)」に対応していないため,プラグイン のプルダウンメニューからプラグイン管理を消してしまいます. プラグイン管理を消さないためには,NppExec は手動でインストールする必要があります.

  1. NppExec の配布サイトNppExec Plugin v0.6 RC3 フォルダを開き,NppExec_06RC3_dll_PA.zip をローカルディスクの適当なフォルダ (C:\temp など) にダウンロードします※1. ファイル名の最後に _PA が付いているものが Notepad++ のバージョン 7.6 以降で採用された「プラグイン管理機能 (Plugin Admin)」に対応しているものですので,必ず _PA が付いたファイルをダウンロードしてください.
  2. ダウンロードした NppExec_06RC3_dll_PA.zip を,Notepad++ Portable の plugins フォルダ以下に展開します. Windows PC で展開 (解凍) を行うには,zip ファイルを右クリックして表示されるメニューから「すべて展開」を選び,展開 (解凍) 先フォルダとして U:\PortableApps\Notepad++Portable\App\Notepad++\plugins を指定すればよいでしょう.
  3. エクスプローラなどで U:\PortableApps\Notepad++Portable\App\Notepad++\plugins\doc\NppExec を開き,NppExec_Manual.chm をダブルクリックします. ユーザが意図しない不正なアプリケーションのインストールを防ぐための Windows Defender SmartScreen の通知画面が表示されるので 実行 をクリックします (参考:LibreOffice Portable のインストール). 図 1 の画面が表示されれば成功です. この操作をしておかないと Notepad++ の プラグイン-NppExec-Help/Manual からオンラインヘルプを表示させようとしたとき,図 2 のようにヘルプ画面に目次しか表示されない状態になってしまいます.
    図1・NppExec のオンラインヘルプ (成功)
    図1・NppExec のオンラインヘルプ (成功)
    図1a・NppExec のオンラインヘルプ (失敗)
    図2・NppExec のオンラインヘルプ (失敗)

Tiny C Complier との連携 (基本)

Notepad++ の プラグイン-NppExec-Help/Manual から開かれるオンラインヘルプ (英文) の 4.7.1 節 Compiling simple C and Pas-programs に Tiny C Complier (TCC) との連携方法が紹介されています. これを参考にポータブル環境で Notepad++ で C 言語のソースファイルを編集し,TCC で動作確認ができるようにしてみましょう. USB メモリを PC に挿入したときに認識されるドライブレターが (U:) であるものとし,このドライブのことを USB ドライブと呼びます.

  1. Tiny C Compiler 開発環境ポータブル化を済ませます (TCC のインストール先は U:\tool\tcc とします).
  2. Notepad++ を起動し,hello.c のような C 言語のプログラムを 1 つ作成します.
  3. プラグイン-NppExec-Execute をクリックすると NppExec の Execute ダイアログボックス (図 3) が開きますので,Command(s) の欄に次のように入力します※2
    NPP_SAVE
    "$(NPP_DIRECTORY)\..\..\..\..\tool\tcc\tcc.exe" -run "$(FULL_CURRENT_PATH)"
    
    図3・NppExec の Execute ダイアログボックス
    図3・NppExec の Execute ダイアログボックス
  4. OK をクリックすると,Notepad++ の編集領域の下側に Console ウィンドウが開き 図 4 のようにコマンドの実行のようすが表示されます. 赤い下線を引いた部分に hello.c の実行結果が出力されています.
    図4・NppExecのConsoleウィンドウ
    図4・NppExec の Console ウィンドウ

NppExec の利用目的が C 言語のプログラミングだけであれば,ソースコードを書いたら F6 キーをタイプして Execute ダイアログボックスを呼び出し,Enter をタイプすることで動作を確認することができます※3. NppExec を他のコマンド実行用途にも使うのであれば,スクリプトに名前をつけて保存しておくとよいでしょう. 図 2 の Execute ダイアログボックスで Save をクリックすると,Script name を設定するダイアログボックスが表示されます. 適切な名前 (例えば tcc-run) をつけて Save をクリックすると,図 3 の Execute ダイアログボックスの左下のプルダウンメニューに登録されます.

Tiny C Complier との連携 (実践)

前の項で紹介した Tiny C Complier との連携では,標準入力 (stdin) からの入力を扱う C 言語プログラムを動作させようとすると,思い通りにいきません. 例えば,次のようなプログラムを plus.c という名前で作成して動作させてみてください.

#include 

int main( )
{
    int a,b,c;
    printf("Input 1st number --> ");
    scanf("%d", &a);
    printf("Input 2nd number --> ");
    scanf("%d", &b);
    c = a + b;
    printf("%d + %d = %d\n", a, b, c);
    return 0;
}

Console ウィンドウ (図 5) の赤線を引いたところまで 3 行ほどメッセージが表示されたら,1 Enter 2 Enter の順でキーボードをタイプしてみてください. すると,図 5 の赤線より下の部分が出力されます. 細かくは説明しませんが,期待した通りの対話的な動作になっていないことがわかります.

図5・NppExecのConsoleウィンドウ(2)
図5・NppExec の Console ウィンドウ (2)

この動作を改善するには,Execute ダイアログボックス (図 3 ) に入力するスクリプトを次のように変更します※4

NPP_SAVE
NPP_RUN cmd /c ""$(NPP_DIRECTORY)\..\..\..\..\tool\tcc\tcc.exe" -run "$(FULL_CURRENT_PATH)"" & pause

上のスクリプトを実行すると,新しいコマンドプロンプトウィンドウが開き,C プログラムが実行されるはずです※4

TeX や SumatraPDF との連携

USB ポータブル環境での動作確認は完全ではありませんが,TeX Wiki > NppExec で紹介されていますので,そちらを参考に試してみてください.

NppExec のオンラインヘルプ (NppExec_Manual.chm) の一番最後の NppExec_Guide (plain text) には,編集中のファイルの拡張子を自動判別して,実行するスクリプトを切り替えるアイディアが紹介されています. 余力がある方はぜひチャレンジしてはいかがでしょうか.

スクリプトの削除

NppExec のスクリプトを削除する操作を紹介します. 一応オンラインヘルプの 3.6 節 NppExec's "Execute..." で説明されているようですが,わかりにくいと思われますので手順を示します.

  1. メニューバーの プラグイン-NppExec-Execute から NppExec の Execute ダイアログボックス (図 3) を開きます. Execute の意味は "実行" で,"削除" とは結びつきにくく,紛らわしいのですが,とにかく Excecute ダイアログボックスを表示しなければなりません (Execute には "処刑" という意味もあるので,ふさわしいのかもしれませんが).
  2. Save をクリックします. Save の意味は "保存" で,"削除" とは結びつきにくく,紛らわしいのですが,とにかく Save をクリックしなければなりません.
  3. Script name を設定するダイアログボックスが表示されます. プルダウンリストから削除したいスクリプトを選び,Delete をクリックします.