No.1ベストアンサー
- 回答日時:
こんにちは。
> &ikeike を選択すると sub ikeikeに手軽にジャンプするにはどういうeditorでどうしたらいいのでしょうか?
勘違いでしたら、すみません。
エディタ上の、同一ソース上でサブルーチン本体の定義部分にジャンプしたいということでしょうか?
その場合、秀丸エディタの場合ですが、正規表現で検索されては如何でしょうか?
※もし、正規表現の構文等が解らない場合は秀丸エディタのヘルプをご覧下さい。
(もう既に試されている場合は、御免なさい)
<検索パターンの例>
例1: ^[ \t]*sub[ \t]+ikeike[ \t]*({|$)
この例ですと、行頭から "sub ikeike" と記述された個所にヒットします。
・行頭及び単語の間に、スペースorタブが複数あってもヒットします。
・また、ルーチン名の後に '{' があるかまたは、行末だった場合にヒットします。
例2: sub ikeike
"sub" と "ルーチン名" の間がスペース1個と決まっているような場合は、正規表現パターンでなくても
単純に、このようなパターンでも良いと思います。
また、複数のルーチンを検索する際に、検索パターンを毎回入力するのが面倒な場合は、秀丸エディタのマクロ機能
を利用して、検索を半自動化する方法もあります。
マクロ利用の際のおおよその手順は、
1)サブルーチン呼び出し個所のルーチン名部分を、カーソルで選択状態(反転表示)にする。
2)作成した検索マクロを実行する。
マクロの処理としては、
・選択部分の文字列(ルーチン名)を取り出して、正規表現の検索パターンに加工する、
↓
・作成した検索パターンで、正規表現による検索を実行する。
↓
・検索結果によりメッセージ等を表示する。
↓
・マクロ終了
のような流れになるかと思います。
以上が、質問者さんの目的とする内容と違っていた場合は、申し訳ありません。(その際はスルーして下さい)
【補足:秀丸のサンプルマクロ】
参考までに、上記の処理を行う秀丸エディタ用のサンプルマクロを作ってみましたので宜しければ試してみて下さい。
■使用方法
注)下記記述において、使用されている秀丸エディタの設定(カスタマイズ)等により、メニュー項目及び操作等が
異なる場合がありますので、その際はご使用の環境に合わせて適せん置き換えて下さい。
1)下記のサンプルマクロを、拡張子 .mac として適当な名前を付けて、秀丸エディタがあるフォルダに保存して下さい。
2)秀丸エディタを起動して、メニュー「マクロ」 → 「マクロ登録」
で開いた「マクロ登録」ダイアログで、上記1)で保存したマクロファイルを登録して下さい。
その際、タイトルを適当な名前で登録して下さい。(例: "Perl サブルーチン検索")
※登録が完了したら、メニュー「マクロ」下に、登録したマクロのタイトルが表示されると思います。
3)続いて秀丸エディタで、Perlのソースを開きます。
4)ソース内のサブルーチンを呼んでいる個所で、ルーチン名をマウスでダブルクリックすると、ルーチン名が
選択状態(反転表示)になると思います。
5)上記4)の状態で、メニュー「マクロ」→「(登録したマクロのタイトル)」 をクリックするとマクロが実行されます。
◎ルーチン定義が見つかれば、その個所にカーソルが移動し、
"サブルーチン定義が見つかりました。" のメッセージボックスが表示されます。
◎ルーチン定義が見つからなければ、
"サブルーチン定義はありませんでした。" のメッセージボックスが表示されます。
■サンプルマクロ
注1)下記ソースには、字下げのために全角スペースを入れています。
ファイルに保存する際は、お手数ですが全角スペースを削除するか、半角スペースorタブに置換してから
保存して下さい。
注2)下記マクロは、最近の秀丸エディタのバージョン(Version 7.00以降)であれば多分動作すると思います。
もし、上手く動作しなかった場合は申し訳ありません。
また、マクロの修正及び機能の追加等を行いたい場合は、ご自身で適当にいじってみていろいろ試して
みて下さい。
//-----------------------------------------------------
// 秀丸エディタ用 「Perl サブルーチン定義検索」マクロ Ver 1.0.0
//-----------------------------------------------------
FsPerl_main:
//変数の初期化
$rtname = "";
$schptn = "";
$mes = "";
//現テキスト&秀丸の設定状態を保存
#save_x = x; #save_y = y; //カーソル位置のX,Y座標
#save_selecting = selecting; //選択状態
#save_rectselecting = rectselecting; //BOX選択状態
#save_seltopx = seltopx; #save_seltopy = seltopy; //選択範囲の開始X,Y座標
#save_selendx = selendx; #save_selendy = selendy; //選択範囲の終了X,Y座標
#save_srchopt = searchoption; //検索フラグの値
$save_srchbuf = searchbuffer; //検索バッファの内容
//選択文字列があるかチェック
if (selecting==0 && rectselecting==0) {
$mes = "サブルーチン名を選択して下さい。";
message $mes;
endmacro;
}
//選択文字列が複数行でないかチェック
if (seltopy != selendy) {
$mes = "単一行内のサブルーチン名を選択して下さい。";
message $mes;
endmacro;
}
//選択文字列(ルーチン名)を取得
$rtname = gettext( seltopx, seltopy, selendx, selendy, 1 );
//検索パターンを作成(正規表現 "sub xxxxx")
$schptn = "^[ \\t]*sub[ \\t]+" + $rtname + "[ \\t]*({|$)";
//選択状態の解除
escape; escapeinselect;
//検索実行
searchdown2 $schptn, regular, nocasesense, hilight, loop;
if (result) {
//見つかった場合
//検索バッファを再保存
$save_srchbuf = searchbuffer;
//検索結果のメッセージ表示
$mes = "サブルーチン定義が見つかりました。";
beep; message $mes;
}
else {
//見つからなかった場合
//マクロ実行前のカーソル位置&選択状態を復元
if (#save_rectselecting) { //マクロ開始前がBOX選択状態だった時
//選択状態の復元
moveto #save_seltopx, #save_seltopy;
beginrect;
moveto #save_selendx, #save_selendy;
//範囲選択モードを解除(範囲選択はそのまま)
endsel;
}
else if (#save_selecting) { //マクロ開始前が選択状態だった時
//選択状態の復元
moveto #save_seltopx, #save_seltopy;
beginsel;
moveto #save_selendx, #save_selendy;
//範囲選択モードを解除(範囲選択はそのまま)
endsel;
}
//検索結果のメッセージ表示
$mes = "サブルーチン定義はありませんでした。";
beep; message $mes;
}
//秀丸の検索設定状態を復元
setsearch $save_srchbuf, #save_srchopt; //検索バッファの内容、検索フラグの値
//マクロ終了
endmacro;
わざわざマクロまで書いていただいてありがとうございました。残念ねがら私の環境では動きませんでしたが、エッセンスだけとりだして
copy;
setmark;
escape;
beginclipboardread;
$a=getclipboard;
$b="sub "+$a;
gofiletop;
searchdown $b;
でSubが定義してある場所へすぐ移動でき、また、マークしたSubを呼んでいるところにもすぐ戻れるようになりました。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlのrequireの動き方についての質問 2 2022/10/30 17:27
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
- その他(プログラミング・Web制作) 外付ディスプレイで AutoHotkey の MouseMove コマンドを実行するとマウスカーソル 1 2023/03/06 00:04
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl の外部モジュールの利用方法
-
ファイルアイコンの左下に緑の□...
-
perlのプログラミング 部分入れ...
-
ペプシコーラとコカ・コーラとD...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
Blenderについて
-
perl このテキストファイルを簡...
-
Perlでファイルの末尾から指定...
-
秀丸での一括変換について
-
英数文字列のうちの数値を4桁に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報