パーソナルツール

EnhCommentify.vim : 複数のファイルタイプに対応したソースコメントアウト、コメントアウト解除スクリプト

— カテゴリ:
作者: 小見 拓 最終変更 2012年01月12日 12時39分

指定の範囲のプログラムのコードを、 コメントアウトすることのできるスクリプトです。 コメントアウトの形式は、プログラムのコードの種類に応じて、 適切な形式が選択されます。 (Windows, Mac)

概要

EnhCommentify.vim : comment lines in a program
http://www.vim.org/script.php?script_id=23

指定の範囲のプログラムソースにコメントを付与したり、 逆に指定の範囲のコメントを取り外すことができるVimプラグインです。

コメントの形式はプログラムの種類ごとに異なっていますが、 このプラグインは編集中のソースのファイルタイプに合わせて、 適切なコメント形式を自動的に選択してくれます。

現在の時点でも、既にかなりの数のファイルタイプに対応しています。 (2003年2月1日)

インストール方法

vim online で配布ファイルを入手後、 ダウンロードした圧縮ファイルを解凍します。

ファイル URL
EnhCommentify.vim http://www.vim.org/script.php?script_id=23

docディレクトリのEnhancedCommentify.txtを$VIMRUNTIME/docに、
ftpluginディレクトリのphp_enhcomm.vimを$VIMRUNTIME/ftpluginに、
pluginディレクトリのEnhancedCommentify.vimを$VIMRUNTIME/pluginに
それぞれコピーします。

:helptags $VIMRUNTIME/doc

最後にEnhancedCommentifyのドキュメントを有効にするために、 VIMを起動して上のコマンドを実行します。

使用方法

ビジュアルモードでJavaソースファイルのコメントアウトしたい範囲を選択して、

Javaソースの範囲を指定
\x

を実行すると、指定された範囲をコメントアウトできます。

Javaソースをコメントアウト

逆にコメントを外したい場合は、コメントを外したい範囲を指定して、

Javaソースのコメントを外す範囲を指定
\x

と実行することで、コメントを取り除けます。

Javaソースのコメントを外した画面

どちらもコマンドは「 ¥ x 」なので、 「 ¥ x 」を実行する毎に、コメントを付けたり、外したりできます。

XML形式もコメントアウト可能

コメントの形式はファイルタイプに応じて、同一のコマンドでも変化します。 XML形式のファイルには、XML形式のコメントアウトを行えます。

\c

上のコマンドも、「 ¥ x 」と同じくコメントの付け外しができますが、スクリプトの実行後に、一行下に移動します。

プラグインの拡張

このプラグインは、ファイルタイプに応じてコメントの形式を変更してくれます。 コメントの形式はプラグインが管理しています。

しかし、逆に言うと、プラグインが編集中のファイルタイプを知らない場合、 コメントの形式を決定できません。

対応していないなら、スクリプトの実行時に次のようなダイアログが表示されることでしょう。(Win)
(Mac OSX版gvimでは、有無を言わさずアプリケーションが落ちます。)

ファイルタイプを知らないダイアログ

ファイルタイプを設定する

XML形式のファイルであっても、拡張子が違えば違うファイルタイプと認識されてしまいます。 プラグインはそのままでは有効に働かないでしょう。 XSL-FO、Relaxer、SmartDocファイルに対して、このプラグインはエラーを出してしまいます。

そういう場合は、この解決方法をとってください。

XSL-FO、Relaxer、SmartDocなどの対応していないファイルタイプのファイルに対して、 プラグインが対応できるファイルタイプを設定してしまいます。

例えば、_vimrcファイルに次の設定を追加してください。 これでプラグインが有効に働いてくれるでしょう。

au BufNewFile,BufRead *.fo setf xml
au BufNewFile,BufRead *.sdoc setf xml
au BufNewFile,BufRead *.rxm setf xml
au BufNewFile,BufRead *.rlx setf xml

ここでは、fo、sdoc、rxm、rlxの拡張子のファイルに、 xmlのファイルタイプを設定しています。

コメントの形式を設定する

Javaプラグラムを組む人であれば、すぐに気づかれることだと思いますが、 build.xml という名前のファイルに、このプラグインは現状、対応できません。

pure Javaコンパイルツールのデフォルトのビルドファイルとなるbuild.xmlファイルは、 ファイルタイプ ant として認識されています。

この問題は上の方法では解決できません。 そこで、EnhancedCommentify.vimファイルに設定を追加します。

編集するのは、EnhancedCommentifyの501行目から

function s:GetFileTypeSettings(ft)

655行目、上のfunction宣言と対になる

endfunction

までです。

ファイルタイプantの場合であれば、 xmlのファイルタイプと同じように扱って欲しいと考えるでしょうから、 510行目~512行目の

elseif fileType =~ "^\(html\|xml\|dtd\|sgmllnx\)$"
let b:EnhCommentifyCommentOpen = "<!--"
let b:EnhCommentifyCommentClose = "-->"

この部分を

elseif fileType =~ "^\(html\|xml\|dtd\|sgmllnx\|ant\)$"
let b:EnhCommentifyCommentOpen = "<!--"
let b:EnhCommentifyCommentClose = "-->"

と変更してしまいましょう。
(, ), | は、 |yen| でエスケープする 必要がありますので注意してください。

新規のコメントの形式を追加する

新規のコメントの形式が欲しい時があるかもしれません。 新しいプログラミング言語などの場合では、上2つの方法では解決できません。

そこで、EnhancedCommentify.vimに新しい形式のコメントを実行できるように、 設定を書き足します。

編集するのは、EnhancedCommentifyの501行目から

function s:GetFileTypeSettings(ft)

655行目、上のfunction宣言と対になる

endfunction

までです。

EnhancedCommentify.vimの644行目から651行目のソースは下のようになっています。 長く連なるif-elseif-else-endif節の最後の部分です。

elseif fileType == "texinfo"
let b:EnhCommentifyCommentOpen = "@c "
let b:EnhCommentifyCommentClose = ""
else
let b:EnhCommentifyCommentOpen = ""
let b:EnhCommentifyCommentClose = ""
endif

ファイルタイプが foo で、
コメントの始めの形式が ?--
コメントの終わりの形式が --? であったなら、

elseif fileType == "texinfo"
let b:EnhCommentifyCommentOpen = "@c "
let b:EnhCommentifyCommentClose = ""

elseif fileType == "foo"
let b:EnhCommentifyCommentOpen = "?--"
let b:EnhCommentifyCommentClose = "--?"

else
let b:EnhCommentifyCommentOpen = ""
let b:EnhCommentifyCommentClose = ""
endif

と書き足します。

もし、コメントが一行コメントであり、 コメントの終わりの形式が無い場合は、

let b:EnhCommentifyCommentClose = ""

とすれば良いでしょう。

注意事項など

このページは、2003年2月1時点のEnhancedCommentify.vimを元に書いています。

ドキュメントアクション
コメント
blog comments powered by Disqus