コメントアウトとコメントアウトの解除を簡単に行えるようになるマクロです。
範囲選択中は行コメントに関する処理を、BOX範囲選択中はブロックコメントに関する処理を行います。
私は Ctrl + Shift + C に割り当てて使っています。
ダウンロード
使い方
- 範囲選択中に実行された場合
選択範囲の先頭行を基準に、行のコメントアウトまたは解除を行います。 - BOX範囲選択中に実行された場合
- カーソル位置がブロックコメントの中にある場合はそれを解除します。
- そうでなければ、BOX選択の開始位置から終了位置までをブロックコメントにします。
- 範囲選択中でない場合
- カーソル位置がブロックコメントの中にある場合はそれを解除します。
- そうでなければ、カーソル行のコメントアウトまたは解除を行います。
その他の特徴
- マクロの先頭で、ファイルタイプごとにコメントアウトの方法を設定できます。
- コメントアウトと解除の処理は、まとめてやり直すことが可能です。
- 常に、処理された範囲が選択された状態でマクロを終了します。
変更履歴
Ver 2.8 (2014-02-10)
- CoffeeScript の設定を追加
Ver 2.7 (2014-01-25)
- .erb Rakefile の設定を追加
Ver 2.6 (2014-01-14)
- .scss .pas .gitignore の設定を追加
Ver 2.5
- .htaccess の設定を追加
Ver 2.4
- ブロックコメントによるコメントアウトの対象範囲にブロックコメントの終端文字列が含まれていた場合の確認ダイアログの表示方法を question コマンドに変更
Ver 2.3
- .bat のコメントアウトの設定を追加
- .css のファイルタイプの指定が間違っていたので修正
Ver 2.2
- 秀丸エディタの複数行コメントの設定によってブロックコメントの解除が正常に動かない場合があったので修正
- 選択範囲の先頭行がコメントアウトされているか判定する際、行末の文字もチェックするよう修正
- 拡張子 .hta .twig のコメントアウトの設定を追加
Ver 2.1
- 正規表現のメタ文字をエスケープする処理を修正
- 拡張子 .rbw のコメントアウトの設定を追加
ピンバック: 秀丸エディタのお勧めの設定 | TipsZone
以下のようにエラーが表示されてつかえませんTT
式がおかしいです。 または、このバージョンではこの式はつかえません。
キーワード/関数/式: selopenx
秀丸エディタのバージョンが古いと思われます。
最新版でお試しください。
秀まるおのホームページ(サイトー企画)-秀丸エディタ
できました。ありがとうございます
以下のようにエラーが表示されてつかえませんTT (秀丸のバージョンは、Version 7.10)
comment_out.mac(142): 文法エラーです。
秀丸エディタのバージョンが古いからです。
最新版でお試しください。
非常に便利に使わせていただいています。
行の先頭タブやスペースを無視することは可能でしょうか。 行揃えをしていても、行の先頭にコメント文字が入りますが、揃えた行の位置にコメント文字が入ると綺麗でさらに助かります。
行頭の空白類文字の後にコメント文字を挿入するということであれば、 LINE_COMMENT_OUT サブルーチンと LINE_UNCOMMENT サブルーチンを 次の様に変更し(comment_out.mac の 164 行目ぐらいです。)、 さらに142行目の「先頭行がコメントアウトされているか判定する」の処理を 適切に修正する必要があります。
// 範囲選択中でない場合はカーソル行をコメントアウトする。
LINE_COMMENT_OUT:
if (selecting == false) selectline;
replaceallfast "^([\t ]*)(.*?)$", "\\1" + $c[0] + "\\2" + $c[1], regular, inselect;
return;
// 選択されている行のコメントアウトを解除する。
// 範囲選択中でない場合はカーソル行のコメントアウトを解除する。
LINE_UNCOMMENT:
if (selecting == false) selectline;
call REGEX_ESCAPE $c[0];
$$head = $$return;
call REGEX_ESCAPE $c[1];
$$tail = $$return;
replaceallfast "^([\t ]*)" + $$head + "(.*?)" + $$tail + "$", "\\1\\2", regular, inselect;
return;
Visual Studio の Ctrl + E, C および Ctrl + E, U によるコメントアウト動作の様にするには、より多くの変更が必要になります。
どちらでしょうか?
返信ありがとうございます。
Visual Studioの動作の違いがよく分からなかったのですが、提示していただいたコードで、希望どうりのコメントアウト動作でした。 コメントアウトを外す処理のコードもお手数ですが、お教え願えませんでしょうか。
出来ました。
どうぞ
comment_out_ignore_line_head_blanks.mac
ありがとうございます。思っていたとおりの動作です。 これからも感謝しながら使わせていただきます^^
scilabという数値計算用言語を使っています.
ご教示いただければ幸いです.
ご回答ありがとうございました. 早速使い始めました. 作業が効率的になり助かっております.
コメント記号の//に左に空白やタブ文字列がある場合の動作を変更したいのですが,可能かどうか,可能であればどうすればいいかご教示頂ければ幸いです.
//に左に空白やタブ文字列がある場合にショートカットキーを押すと現状はさらに行頭に//がつきます. 望ましい動作は//を削除してコメントアウトの解除です.
宜しくお願いします.
以前、他の人から同様のリクエストがあり、その時作ったものがあります。
お試しください。
comment_out_ignore_line_head_blanks.mac
御礼が遅くなり申し訳ありませんでした. 使って疑問点があれば同時にお聞きしようと思っており返事が遅れました. すごく便利になりましたが,一つ変更したいことがあります. 今はコメント化するか,解除するか,マクロが自動的判断していますが,これをコメント化と解除の二つのマクロにわけて,そろぞれ別のキーを割り当てて使いたいのです.
ブロック選択をしていて困ることがあります. もともとコメント行がついていて,デバックのためにそのブロック(含むこめんと行)全体をコメント化したい場合があります.既存のコメント行を外してブロック選択すればいいのですが,そうすると解除するときにもとのコメントとそれ以外が同じ//なので,どこまでを解除すればよかったか,一瞬戸惑います.できれば,もとのコメント行は//→////にかわり,解除でもとに戻るとしたいのです. 下のような例です.
//レベルがあり低いレベルでコメント行があるときのコメントアウトと解除の動作 //原型 for i=1 :10 //xが小さい時の処理 if i<5 then x=10 else x=0 end end
//'//原型'行も選択していると解除を実行.低レベルのコメントも解除される. 原型 for i=1 :10 xが小さい時の処理 if i<5 then x=10 else x=0 end end
//'//原型'を選択していないとコメントアウトを実行.希望の処理 //原型 //for i=1 :10 ////xが小さい時の処理 //if i<5 then //x=10 //else //x=0 //end //end
//'//原型'を選択していると解除を実行し最初のコメント行も解除される. 原型 for i=1 :10 //xが小さい時の処理 if i<5 then x=10 else x=0 end end
//理想のコメントアウト ////原型 //for i=1 :10 ////xが小さい時の処理 //if i<5 then //x=10 //else //x=0 //end //end