Wineで動くテキストエディタ「notepad++」に新しい拡張子定義を追加しようとした

最近Ubuntuを使ってる中で不満なのがテキストエディタ。デフォルトのgeditはサクラエディタに比べるとどーもしょぼくて慣れません。ということで、WindowsのプログラムをLinuxで動かせるWineを使って、WindowsのエディタをLinuxで使ってみる事にしました。

■Wineで動作するWindowsエディタ

Electronic Genome – Linuxのwineで動作するWindows用テキストエディタ動作比較

このページの表の通り、notepad++が一番動作良好のようです。手元で確認したところ、サクラエディタはカーソルの移動ができず全然ダメ、Terapadは置換が動作せずいまいち。てことで、人生で初めてnotepad++を使ってみました。

海外では定評のあるエディタって通り、設定項目豊富でプログラミング向きのエディタ。対応言語も多く入力補完が出来るところなどはサクラエディタよりも上といえます。けど普通のテキストファイルに弱い。.txtファイルはNormal textとして扱われ、.txtに対して独自の色分け設定をすることはできません。

これをなんとかしようとnotepad++のインストールディレクトリを探したところ、stylers.xmlとlangs.xmlというそれっぽいファイルが!うん、これをいじってtxtという拡張子定義を追加すればいいよね!…動かない><設定項目には表示されるようになったのに…。しかも特定KEYWORDをハイライトする設定を追加すると「NppParameters::getLangIDFromstr」みたいなエラーが出る…。

このエラーワードでググッたところ、以下のようなページにぶち当たりました。

SourceForge.net Repository – [notepad-plus] View of /PowerEditor/src/Parameters.cpp

 1391 LangType NppParameters::getLangIDFromStr(const char *langName)
1392 {
1393 	if (!strcmp("c", langName))	return L_C;
1394 	if (!strcmp("cpp", langName)) return L_CPP;
1395 	if (!strcmp("java", langName)) return L_JAVA;
1396 	if (!strcmp("cs", langName)) return L_CS;
1397 	if (!strcmp("objc", langName)) return L_OBJC;
1398 	if (!strcmp("rc", langName)) return L_RC;
1399 	if (!strcmp("html", langName)) return L_HTML;
~中略~
1439 	if (!strcmp("inno", langName)) return L_INNO;
1440 	if (!strcmp("searchResult", langName)) return L_SEARCHRESULT;
1441 	if (!strcmp("cmake", langName)) return L_CMAKE;
1442 	return L_TXT;
1443 }

どうやら対応拡張子をソースコード中でハードコーディングしてるみたいです。つまり.txtを認識させるにはどうやっても無理。

■やっぱりサクラエディタは使いやすいよなぁ…ということを再確認。

サクラエディタなら任意の拡張子を定義して色分け設定できる。色分け定義に正規表現も使える。サクラエディタの「整形」コマンドを使えば並び替えや重複行のマージもできるし、「高度の操作」を使えば行単位、単語単位での切り取り・削除とvimライクな操作も出来る。

ということで、サクラエディタ最高!というお話でした。

■これからどうしよう?

  1. 我慢してnotepad++を使う
  2. 我慢してgeditを使う
  3. 郷に入れば郷に従え、でgvimなどを使う。

gedit極めても仕方ないのでnotepad++がgvimかなぁ。移動モードで必ず半角英数にしなければいけないgvimは日本語テキストを編集するのに不向きだと思ってるのですが使ってる人いますか?「ソースのコメントが日本語」くらいならいいですが、このブログの文章をgvimで書くとか苦行かな?まぁnotepad++はいつでも使えるので、しばらくはgvimでかんばろうと思います。

サクラエディタ
窓の杜 – 【REVIEW】プログラミングに適したテキストエディター「NotePad++ EUC-JP 対応版」

勉強LINUX

Posted by tera