TEditorMX ver1.40の補足
一通りのご説明はTEditorMXのヘルプに記述しましたが、もう少し使い方についてのご紹介と補足をしたいと思います。
行単位の編集
文字列検索
文字列置換
関数名(範囲設定)
キーボードマクロ
文字種変換
拡張子の識別子
行単位の編集
本エディタはキーボード操作だけで大抵の処理ができるようになっています。
行単位の処理もそのひとつです。
行挿入、削除、複写など、実際にどうなるかをご紹介いたします。
空行挿入
行複写
行削除
削除行挿入
空行挿入
Ctrl+Nキーで編集行の上に空行を挿入します。
実際にやってみたところ
→ Ctrl+Nキーを押す前の画像
→ Ctrl+Nキーを押した後の画像
行複写
Ctrl+Iキーで編集行を複写します。
実際にやってみたところ
→ Ctrl+Iキーを押す前の画像
→ Ctrl+Iキーを押した後の画像
行削除
Ctrl+Yキーで編集行を削除します。
実際にやってみたところ
→ Ctrl+Yキーを押す前の画像
→ Ctrl+Yキーを押した後の画像
削除行挿入
行削除(Ctrl+Yキー)で削除した行を挿入(Ctrl+Uキー)します。
実際にやってみたところ
→ 削除前の画像
→ 削除後の画像
→ 削除した行を挿入する位置の画像
→ 削除した行を挿入したときの結果の画像
文字列検索
文字列検索にはキーボード操作により一つずつ検索するキーボード検索と、
一括して検索する方法の2種類があります。
状況により使い分けると良いと思います。
一括して検索する場合、結果を情報ウィンドウに出力しますので使用できる状態にしておいて下さい(使用できる状態になっていないと検索できません)。
TEditorMXの一括して文字列を検索する機能は強力です。プロジェクトに登録しているファイルに対して一括して検索することができます。
正規表現を用いますと複数行に渡る文字列の検索も可能です。検索結果を情報ウィンドウに出力しますので、そこからタグジャンプすることも可能です。
一括して検索した場合は最初に見つかった文字情報しか情報ウィンドウに表示されませんので、その後に更に検索文字列があるかを知るには(タグジャンプ後に)続けてキーボード検索の下方向検索を実行して下さい。
普通の文字列検索
ワイルドカード検索
正規表現検索
普通の文字列検索
普通の文字列検索は検索したい文字列を入力して検索します。
文字列の比較を行うだけの検索なので一番高速に検索できます。
検索したい文字列が具体的に分かっているときはこれを利用すると良いでしょう。
ワイルドカード検索
ワイルドカード検索は、一部の分かっている文字列とワイルドカード(*,?)を用いて検索します。
*は0文字以上の文字とマッチします。?は1文字とマッチします。ただし、両方とも改行コードとはマッチしません。
*は通常一番長い文字列とマッチしますが最短を指定するとできるだけ短い文字列とマッチするようになります。
ただしキーボード検索で最短を指定し、上方向へ検索したときと下方向へ検索したときと結果が異なるときがあります。たとえば、
test string string
というテキストをtest*stringという検索文字列で行頭からワイルドカード・最短・下方向検索を実行すると
test string string
とマッチしますが、行末からワイルドカード・最短・上方向検索をすると、
test string string
と、すべての文字列とマッチしてしまいます。
これは上方向検索をしますと、逆方向に(テキストの後の方から)検索することになるため発生します。
仕様ということになります。
正規表現検索にもワイルドカードはありますが、こっちの方が高速ですのでワイルドカードだけで済む検索のときにはこれを利用すると良いでしょう。
正規表現検索
正規表現検索は正規表現を用いて検索します。
使用できる正規表現はTEditorMXのヘルプに記述しましたのでご参照ください。
正規表現検索では改行コード(\r\n)を含むことができますので複数行に渡る文字列の検索ができます。
TEditorMXでは改行コードを表す正規表現は常に\r\nです。理由はファイル読み込み時に改行コードと認識可能なコード(\r,\n,\r\n)
を検出した際に強制的に\r\nに読み替えているためです。これは仕様なのでご了承ください。
文字列置換
文字列置換は検索して見つかった文字列を別の文字列に置き換える処理のことです。
文字列置換には一つずつ確認しながら置換する方法と、一括して置換する方法の2種類があります
(ただし、正規表現置換は一括して置換する方法のみです)。
状況により使い分けると良いと思います。
TEditorMXの一括して文字列を置換する機能は強力です。プロジェクトに登録しているファイルに対して一括して置換することができます。
正規表現を用いますと複数行に渡る文字列の置換も可能です。置換前データを情報ウィンドウに出力しますので、そこからタグジャンプすることも可能です。
文字列置換実行前に、対象ファイルをbackup_TEditorMXフォルダにバックアップファイルを作成します。
万が一、間違って置換してしまってエディタで開いていなかったときはバックアップファイルをコピーして元に戻してください。
普通の文字列置換
ワイルドカード置換
正規表現置換
普通の文字列置換
普通の文字列置換は検索文字列と置換文字列を入力して置換します。
文字列の比較を行うだけの検索と、見つかった文字列を置換するだけですので一番高速に置換できます。
検索文字列と置換文字列が具体的に分かっているときはこれを利用すると良いでしょう。
ワイルドカード置換
ワイルドカード置換は、一部の分かっている文字列とワイルドカード(*,?)を用いて検索し、
見つかった文字列を置換文字列と置換します。
*は0文字以上の文字とマッチします。?は1文字とマッチします。ただし、両方とも改行コードとはマッチしません。
*は通常一番長い文字列とマッチしますが最短を指定すると一番短い文字列とマッチするようになります。
正規表現置換
正規表現置換は正規表現を用いて検索します。
使用できる正規表現はTEditorMXのヘルプに記述しましたのでご参照ください。
また置換文字列にも後方参照の正規表現(\0~\9)と一部のメタ文字(\r,\n,\t,\\,8進数,16進数)を含むことができます。
正規表現検索では改行コード(\r\n)を含むことができますので複数行に渡る文字列の検索ができます。
TEditorMXでは改行コードを表す正規表現は常に\r\nです。理由はファイル読み込み時に改行コードと認識可能なコード(\r,\n,\r\n)
を検出した際に強制的に\r\nに読み替えているためです。これは仕様なのでご了承ください。
関数名(範囲設定)
便宜上「関数名」と表現していますがサブルーチン名や構造体名などと、読み替えてご利用ください。
範囲設定行に設定した行に対して関数名を付けることができます。
範囲設定行に設定するとその関数名がツールバーの関数名コンボボックスに追加され、
任意の関数名を選択するとその行へジャンプすることができます。
また、文字列検索時に範囲内を選択するとキャレットを含む位置の範囲設定行間のみに検索範囲を限定することができます。
重複する変数名を持つローカル変数などを検索するときには便利だと思います。
範囲設定行に設定するには1行1行設定する方法もありますが、正規表現を用いて一括して登録する方法もあります。
下記の内容で実際にやってみます(ちょっと手抜きの正規表現かもしれませんが...ご了承くださいね)。
関数名自動設定検索文字列ダイアログに設定する内容 初回検索正規表現 \w+\s+(\w+)\(.*\).*\r\n{ 関数名指定 \1 更に検索(上方向) /* オプション すべてチェックOFF 以下、テスト用C言語プログラム /* * a + b の答えを返す */ int add( int a, int b ) { int r; r = a + b; return( r ); } /* * メインルーチン */ int main( int argc, char *argv[] ) { int a, b; int r; a = 3; b = 4; r = add( a, b ); printf( "%d + %d = %d\n", a, b, r ); return( 0 ); }
実際にやってみたところ
→ 正規表現設定画像
→ 設定ボタンを押した結果
範囲設定後、文字列検索または置換時に範囲内を指定すると範囲設定された(キャレットを含む範囲の)行間のみに処理範囲を限定することができます。
キーボード検索などで検索範囲を範囲内にしてローカル変数a,b,r や、関数addを検索してみて下さい。
検索範囲がキャレットがある範囲内に限定されるはずです。
また、マウスをクリックしてキャレット位置を変更したときにキャレットのある位置の関数名が関数名コンボボックスに表示されるのを確認してみて下さい。
キーボードマクロ
キーボードマクロは地味な機能ですが、使えると編集がすごく楽になることがあります。
キーボードマクロはキーボードからの入力と一部のメニュー操作を記録し、再生する機能です。
つまり...同じキー操作の繰り返しをする必要があるときにはそのキー操作を記録し、繰り返し再生することであっという間に編集を完了することができます。
例1
例2
例1.下記の16進数の数値(データ)の"0x010?"の"01"を"12"に変更したいときには、
変更前数値データ
0x0123 0x0124 0x0125 0x0126
- 先頭行の0xの次の文字(つまり0です)の位置へキャレットを移動する。
- 入力モードが挿入モードのときはInsertキーを押して上書きモードにする。
→ 1と2の画像 - Ctrl+Shift+Mキーを押してキーボードマクロ記録開始する(マクロメニューの【記録開始】を選択してもOKです)。
→ 画像 - "12"と入力する(01が12へ置き換わります)。
→ 画像 - キャレットキーを押して次の行の0xの次の文字(つまり0です)の位置へキャレットを移動する。
→ 画像 - Ctrl+Shift+Mキーを押してキーボードマクロ記録終了する(マクロメニューの【記録終了】を選択してもOKです)。
→ 画像
変更後数値データ
0x1223 0x1224 0x1225 0x1226
例2.検索機能とペースト機能を組み合わせて複数行に渡る長い文章に置換するとき
文字列置換機能で複数行に渡る長い文字列と置換することは難しいですが、文字列検索機能とペースト機能を組み合わせることでそれを簡単に実現できます。
→ 使用テキスト
- 検索文字列と条件をツールバーに設定する(文字列検索ダイアログを開いて設定してもOKです)。
検索文字列は「引数\r\n」でフラグは正規のみチェックを入れ、それ以外はすべてチェックを外してください。 検索に正規表現を用いているのは改行コード(\r\n)を含めたいためで、その方が後の解説が単純化できるためです。
→ 画像 - 置換文字列をコピー(Ctrl+C)し、ペーストできるようにしておく。
→ 画像 - キーボード検索の開始位置へキャレットを移動する。
→ 画像 - Ctrl+Shift+Mキーを押してキーボードマクロ記録開始する(マクロメニューの【記録開始】を選択してもOKです)。
→ 画像 - Ctrl+↓(キャレットキー・下)を押してキーボード検索を実行する
→ 画像 - 検索文字列が見つかったときで置換したい文字列のときはペースト(Ctrl+V)する。
もし検索文字列が見つからなかったときや置換したい文字列でなかったときはCtrl+Shift+Mキーを押してキーボードマクロ記録終了し、中断して下さい。
→ 画像 - Ctrl+Shift+Mキーを押してキーボードマクロ記録終了する。
→ 画像
続けてCtrl+Gキーを押してキーボードマクロを再生してみましょう。
すると文字列検索&ペースト処理が実行され、文字列置換機能と同等の処理が行われます。
→ 画像
ちなみにこの例の場合にはキーボードマクロを使用しなくてもできますが、置換数がたくさんある場合にはキー操作をより少なくできますのでキーボードマクロを利用した方が楽に編集することができると思います。
※function3まで置換した後に更にGtrl+Gキーを押しますと検索文字列が見つからずに検索開始位置へペーストしてしまいます。
結果として期待している置換はできませんがこれは仕様です。
不具合ではありませんのでご注意ください。
文字種変換
本エディタには文字種(大文字/小文字・半角/全角)を変換する機能があります。
使い方は簡単で、変換したい文字を選択し、ポップアップメニューの文字変換項目のサブメニューより任意の変換を選択すればOKです。
もちろん対応するショートカットキーを押しても変換できます。対応するショートカットキーはメニュー項目の右側に表示されていますのでご覧下さい。
実際にやってみたところ
→ →大文字
→ →小文字
→ →半角
→ →全角(かな)
→ →全角(カナ)
→ 半角カナ→全角(カナ)
→ 全角カナ→半角(カナ)
拡張子の識別子
拡張子の識別子とは、同じ拡張子を持つファイル(ヘッダーファイル.h)でもC言語とアセンブリ言語とでは色替え表示の仕方(キーワード)が異なるのはお分かりいただけると思います。
これらをできるだけ簡単に区別するために設けた仕掛けが拡張子の識別子です。
拡張子の識別子を定義(登録)するにはキーワード定義ファイル
(デフォルトではTEditorMXのインストールフォルダ内のsettingfileフォルダ内の拡張子.kwdを持つファイル全て)に追加する必要があります。
拡張子の識別子は拡張子の後にコロンを付けてその後に半角文字で16文字以内です。
キーワード定義ファイルはユーザーご自身で追加・修正・変更して頂くことを前提としています。
私(作者)が全てできれば一番良いのですが、現実的ではないと判断しています。
ご了承ください。キーワード定義ファイルの詳細に関してはTEditorMXのヘルプに記述していますのでご覧下さい。