以下のコマンドは、コメントにたいして処理を行います:
カレント行にコメントを挿入、または位置揃えします。リージョンがアクティブのときは、かわりにリージョンをコメント化、または非コメント化します(comment-dwim
)。
カレント行をコメント、または非コメントにします(comment-line
)。リージョンがアクティブの場合は、かわりにリージョンをコメント、または非コメントにします。
カレント行のコメントをkillします(comment-kill
)。
コメント列をセットします(comment-set-column
)。
RETの後にコメントを挿入して位置揃えします(default-indent-new-line
)。複数行のコメントを参照してください。
リージョンのすべての行にたいして、コメント区切りを追加します。
コメントを挿入または位置揃えするコマンドは、M-; (comment-dwim
)です。単語“dwim”は、“Do
What I
Mean(私が言ったとおりにしてください)”の頭文字をとったものです。このコマンドは、コメントに関係する多くの異なる作業に使用できます。それは、このコマンドをどこで使うかという、状況に依存することを示します。
リージョンがアクティブ(マークとリージョンを参照してください)の場合、M-;はリージョンのコメント区切りの追加と削除のどちらかを行います。リージョンの各行がすでにコメントの場合、それらのコメント区切りを削除することにより、それらの行を非コメント化します。そうでない場合は、リージョンのテキストにコメント区切りを追加します。
リージョンがアクティブのときにM-;に数引数を与えると、それは追加または削除するコメント区切りの数を指定します。正の引数nはn個の区切りを追加し、負の引数−nはn個の区切りを削除します。
リージョンが非アクティブで、カレント行にコメントがない場合、M-;はカレント行に新しいコメントを追加します。ブランク行(たとえば空または空白文字しか含まない)の場合、TABをタイプしたときにインデントされるのと同じ位置に、コメントがインデントされます(プログラムの基本的なインデントコマンドを参照)。非ブランク行の場合、コメントはその行の最後の非空白文字の後ろに配されます。Emacsは、可能なら変数comment-column
とcomment-fill-column
(コメントを制御するオプションを参照)で指定された列の間にコメントを配そうと試みます。それ以外では、Emacsは別の適切な位置、通常、非コメントのテキストと少なくとも1つのスペースを空けてコメントを配します。どちらの場合も、Emacsはコメントの開始区切りの後にポイントを配すので、すぐにコメントのタイプを開始できます。
既存のコメントの位置揃えにもM-;を使用できます。行がすでにコメント開始文字列を含む場合、M-;は慣習的な位置にそれを位置揃えして、ポイントをコメント開始区切りの後ろに移動します。例外として、列0で始まるコメントは移動されません。既存のコメントがすでに正しく位置揃えされているときでも、M-;はコメントテキストの開始に直接移動するので有用です。
C-x C-;
(comment-line
)は、行そのものをコメント化または非コメント化します。リージョンがアクティブ(マークとリージョンを参照してください)の場合は、リージョン内の行をコメント化または非コメント化します。リージョンが非アクティブの場合、このコマンドはポイントがある行をコメント化または非コメント化します。正のプレフィクス引数nを与えた場合、カレント行から数えてn行を処理します。負の引数−nの場合は、先行するn行に作用します。負の引数を与えてこのコマンドを呼び出した後は、それに続けて正の引数を指定して連続して呼び出した場合、あたかも負の引数が与えられたかのように、先行する行を処理します。
C-u M-;
(comment-dwim
にプレフィクス引数を指定)は、リージョンが非アクティブなら、カレント行のすべてのコメントとその前の空白文字とを緒にkillします。コメントはkillリングに保存されるので、他の行の行末に移動してC-yで挿入して、M-;でコメントの位置揃えをすることができます。M-x
comment-killとタイプしてもC-u
M-;と同じ効果を得ることができます(comment-dwim
はプレフィクス引数を与えられたとき、実際にサブルーチンとしてcomment-kill
を呼び出す)。C-u n M-;のようにプレフィックス数引数とともにcomment-dwim
を呼び出すと、アクティブなリージョンがなければn行のコメントのkillを指示したことになります。
コマンドM-x comment-regionは、アクティブなリージョンにたいしてM-;を呼び出すのと等価ですが、このコマンドはマークが非アクティブのときでも、常にリージョンにたいして動作します。Cモードおよび関連するモードでは、このコマンドはC-c C-cにバインドされています。コマンドM-x uncomment-regionは、リージョンの各行を非コメント化します。数引数は、削除するコメント区切りの数を指定します(負の引数は、追加するコメント区切りの数を指定します)。
C-likeなモードにたいしては、変数c-indent-comment-alist
およびc-indent-comments-syntactically-p
をセットすることにより、M-;の正確な効果を設定できます。たとえば閉じ大カッコで終わる行では、M-;はcomment-column
ではなく、大カッコの後ろにスペースを1つ空けてコメントを配します。完全な詳細は、Comment
Commands in The CC Mode Manualを参照してください。