以下のコマンドはコメントに対して動作します:
現在の行にコメントを挿入または再配置します。リージョンがアクティブな場合は、代わりにそのリージョンをコメントアウトまたはコメントアウト解除します
(comment-dwim)。
現在の行 (comment-line)
をコメントアウトまたはコメントアウト解除します。リージョンがアクティブな場合は、代わりにそのリージョン内の行をコメントアウトまたはコメントアウト解除します。
現在の行 (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 で指定された列の間に収めようとします(コメントを制御するオプション
を参照)。そうでない場合は、別の適切な位置を選択し、通常はコメント以外のテキストから少なくとも1つのスペースで区切られます。いずれの場合も、Emacs
はコメントの開始デリミタの後にポイントを配置するため、すぐにコメントテキストの入力を開始できます。
また、M-; を使用して既存のコメントの位置を揃えることもできます。行にすでにコメント開始文字列が含まれている場合、M-; で従来の位置に合わせ、ポイントをコメントの開始デリミタの後に移動させます。例外として、0列目から始まるコメントは移動されません。既存のコメントが適切に配置されている場合でも、M-; はコメントテキストの先頭へ直接移動する際に便利です。
C-x C-; (comment-line)
は、行をコメントアウトまたはコメントアウト解除します。リージョンがアクティブな場合(マークとリージョンを参照)、C-x C-;
はそのリージョン内の行をコメントアウトまたはコメントアウト解除します。リージョンがアクティブでない場合、このコマンドはポインタがある行をコメントアウトまたはコメントアウト解除します。正の接頭辞引数
n を指定すると、現在の行から始まる n
行に対して動作し、負の引数 −n を指定すると、それより前の n
行に影響します。負の引数でこのコマンドを実行した後、正の引数で続けて実行すると、あたかも引数が否定されたかのように、それより前の行に対して動作します。
C-u M-;(プレフィックス引数付きのcomment-dwim)で、リージョンがアクティブでない場合、現在の行にあるコメントとその前の空白文字がキルされます。コメントはキルリングに保存されるため、別の行の末尾に移動してC-yを実行し、次にM-;でコメントの位置を再調整することで、そのコメントを別の行に再挿入できます。M-x comment-killと入力することでC-u
M-;と同じ効果を得られます(comment-dwimは、プレフィックス引数が与えられた際に実際にはcomment-killをサブルーチンとして呼び出します)。アクティブなリージョンがない状態でC-u n M-;のように数値のプレフィックス引数を付けてcomment-dwimを呼び出すと、comment-killがn行のコメントをキルします。
コマンド M-x comment-region は、アクティブなリージョンに対して M-; を呼び出すのと同等ですが、マークが非アクティブであっても常にそのリージョンに対して作用します。Cモードおよび関連モードでは、このコマンドは C-c C-c にバインドされています。コマンド M-x uncomment-region は、リージョン内の各行のコメントアウトを解除します。数値の接頭辞引数で、削除するコメント区切り文字の数を指定します(負の引数は、追加するコメント区切り文字の数を指定します)。
C系モードでは、変数 c-indent-comment-alist と c-indent-comments-syntactically-p を設定することで、M-; の具体的な動作を構成できます。例えば、閉じ中括弧で終わる行では、M-; を指定すると、コメントが comment-column
ではなく中括弧の1つ後ろに配置されます。詳細については、The CC Mode Manual の
Comment
Commands を参照してください。