パーソナルツール

2html.vim : ファイルをシンタックスハイライトつきのHTMLに変換

作者: 小見 拓 最終変更 2012年01月12日 12時42分

現在、vimエディタで表示している状態そのままを、HTMLファイル化するスクリプトです。 テキストを印刷する時や、他人へHTMLファイルとして公開する時などに利用できます。 (Windows, Mac)

概要

現在、vimエディタで表示している状態そのままを、HTMLファイル化するスクリプトです。
テキストを印刷する時や、他人へHTMLファイルとして公開する時などに利用できます。
Syntaxハイライト、および、行番号もそのまま、HTMLファイルで再現されます。

上の画像が変換前のテキスト、
下の画像が、このスクリプトでHTML化し、Webブラウザで表示したものです。
見ての通り、エディタ上での見た目を極力保っています。

vimエディタ上での表示

↑ 変換前のテキスト

↓ 上のテキストをHTML化したもの

HTML化した時のWebブラウザ上での表示

このスクリプトは、vim6であればデフォルトで添付されています。

インストール方法

このスクリプトは、vim6であればデフォルトで添付されています。
インストールの必要はありません。

使い方

ファイル全体をHTML化する

vim6には、:TOhtmlというコマンドが組み込まれています。
このコマンドを実行すると、現在のバッファの内容を2html.vimスクリプトでHTML化し、 新しく開いたウィンドウに、その内容を表示します。

" 2html.vimスクリプトで、テキストをHTML化するコマンド
:TOhtml

:TOhtmlコマンドを実行した直後の状態が下です。
新しく開いたウィンドウのテキストは、まだファイルとして保存される前の状態なので、 好きな場所に保存しましょう。
そのまま、:wで保存した場合には、ソーステキストと同じディレクトリに、 .html拡張子付きのファイルとして保存されます。 保存したくない場合は、:q!でウィンドウを閉じてしまえば良いでしょう。

:TOhtmlコマンドを実行した直後

範囲付きで:TOhtmlコマンドを実行

この:TOhtmlコマンドは範囲指定付きで実行可能で、 その場合、指定した範囲のみHTML化します。

" :TOhtmlコマンドを範囲指定付きで実行する例
:12,19TOhtml

設定

行番号の設定

HTML化した時に、各行の先頭に行番号を付けるかどうかは、 numberオプションを見て、エディタ上の表示と合うように切り替わっています。
html_number_linesという変数に値をセットしておくと、 numberオプションの設定ではなく、html_number_linesの値に応じて、 行番号の表示が切り替わるようになります。

設定例 生成されるHTML
:let html_number_lines = 1 行番号を付ける
:let html_number_lines = 0 行番号を付けない
html_number_linesが未定義な状態 numberオプションに応じて変わる。

CSSの設定

html_use_cssという変数に値をセットすると、生成するHTMLがCSSを利用したものになります。
ただし、CSS定義はHTMLに埋め込まれた状態であり、外部のCSSを指定する事もできないので、 この設定にあまり利用価値はありません。

設定例 生成されるHTML
:let html_use_css = 1 CSSを利用したHTMLを生成する。
html_use_cssが未定義な状態 CSSを利用しないHTMLを生成する。

preタグの設定

デフォルトでは、生成するHTMLは、 全体が<pre>タグで囲まれたものになります。

html_no_preという変数に値をセットすると、 本文全体を<pre>タグで囲む代わりに、 改行ごとに<br>タグを挿入したHTMLを生成するようになります。

この設定は、1行あたりのテキストが長い時には有効に働くでしょう。

設定例 生成されるHTML
:let html_no_pre = 1 <pre>タグを使用しないHTMLを生成する。
html_no_preが未セットな状態 本文全体が<pre>タグで囲まれたHTMLを生成する。

XHTML形式でファイルを生成する

このスクリプトによって生成されるファイルは、デフォルトではHTML形式のファイルですが、
use_xhtml変数に値をセットしておくと、XHTML形式で生成するようになります。

設定例 生成されるHTML
:let use_xhtml = 1 XHTML形式でファイルを生成する。
use_xhtmlが未セットな状態 HTML形式でファイルを生成する。

charsetの設定

変数html_use_encodingにエンコーディングを設定すると、 生成するHTMLファイルのMETA要素のcharsetに、 そのエンコーディング指定がセットされるようになります。

ただし、この変数をセットしても、 実際に生成されるファイルのエンコーディングは変わらないので、 ファイルを保存する前に、希望のファイルエンコーディングに変換しましょう。

" html_use_encodingにutf-8をセットする時の実行例
:let html_use_encoding = "utfー8"  (←utf-8を指定する。)
:TOhtml  (←:TOhtmlコマンドでHTML化する。)
:set fenc=utf-8  (←ファイルエンコーディングを変換して、)
:w  (←保存。)

このスクリプトの使用上の注意事項など

スクリプトの実行時間

テキストが1000行を超えると、:TOhtmlコマンドによるHTMLファイルへの変換処理に、 時間がかかるようになってしまいます。

変数を未定義な状態にするには

一度セットされた変数を未定義状態に戻すには、 :unletコマンドを使用します。

" :unletコマンドの実行例
:unlet html_use_css
ドキュメントアクション
コメント
blog comments powered by Disqus