パーソナルツール

高性能なテキスト整形ツールAlignの使い方 #2 組み込みマッピングでテーブル構造を整形する

作者: 小見 拓 最終変更 2012年01月08日 11時52分

この記事では、整形ツールAlignに組み込みまれているマッピングを使用して、 CSV、TSVやHTML構造などの整形処理を行う方法を説明します。 (Windows, Mac)

概要

Align : Provides commands and maps to help produce aligned text, eqns, declarations, etc
http://www.vim.org/scripts/script.php?script_id=294

この記事では、整形ツールAlignに組み込みまれているマッピングを使用して、 CSV、TSVやHTML構造などの整形処理を行う方法を説明します。

高性能なテキスト整形ツールAlignの使い方 #1 インストールから設定まで 」の続きとなる記事です。

テーブル構造の整形機能の使い方

Align にはテーブル構造の整形用に、いくつかのキーマッピングがあらかじめ用意されています。
この Align に用意されたキーマッピングを使用するには、次のような手順を踏みます。

  1. まず整形処理の対象となる範囲を指定する。
  2. 実行する種類のキーマッピングを入力する。

この時、処理の範囲の指定方法には、ビジュアルモードで範囲を指定する方法と、
「a」のマークを使用する方法で、2種類の方法が用意されています。

Note

キーマッピングで整形処理を呼び出す方法以外に、 GUIのメニューで整形処理を呼び出す方法も用意されています。
このメニューはAlignをインストールすると追加されます。

メニュー

ビジュアルモードで範囲指定して整形処理を行う

整形処理の処理対象範囲をビジュアルモードする場合は、 まず、整形処理の対象としたい範囲をビジュアルモードで選択します。

ビジュアルモードで整形処理の範囲を選択する。
one two three four five
six seven eight nine ten
eleven twelve thirteen fourteen fifteen
ビジュアルモードで範囲指定

次に実行する整形処理のキーマッピングを入力します。
例えば、空白文字で区切られた各フィールドの位置を整形する場合は次のように入力します。
(どのキーを押すと、どの整形処理が実行されるかは後述。)

\tsp

整形処理実行のキーを入力すると、このように整形処理が実行されます。

整形処理後
one    two    three    four     five
six    seven  eight    nine     ten
eleven twelve thirteen fourteen fifteen
整形処理実行後

「a」のマークで範囲指定して整形処理を行う

マークを利用して、 Align の機能を呼び出す場合は次のようにします。

まず、整形処理を実行する範囲の先頭位置にカーソルを移動します。

整形範囲の先頭行の位置にカーソルを移動します。
one two three four five
six seven eight nine ten
eleven twelve thirteen fourteen fifteen

ノーマルモードで「ma」と入力し、カーソル位置に「a」のマークを設定します。

ma

次に、今度は整形処理の対象としたい範囲の最後の行にカーソルを移動します。

整形範囲の最後の行の位置にカーソルを移動します。
one two three four five
six seven eight nine ten
eleven twelve thirteen fourteen fifteen

最後に実行する整形処理のキーマップを入力します。
今回の例の場合も、先ほどの例と同じく、空白文字で区切られた各フィールドの位置を調節したいので、 次のように入力することになります。

\tsp

整形処理実行のキーを入力すると、整形処理が実行されます。

整形処理後
one    two    three    four     five
six    seven  eight    nine     ten
eleven twelve thirteen fourteen fifteen

用意されている整形機能のマッピングの一覧

Align に用意されている、キーの入力による、テーブル関連構造の整形機能はこれだけあります。
上でも説明していますが、整形処理の範囲を指定して、 下の表のキーを入力すると、選択した整形処理が実行されます。

<Leader>tsp 空白文字で分割して整形。各フィールドは左揃え。
<Leader>Tsp 空白文字で分割して整形。各フィールドは右揃え。
<Leader>tsq 空白文字で分割して整形。ダブルクォートで囲まれたフィールドをサポート。各フィールドは左揃え。
<Leader>tab TSVの整形。タブ文字で分割して整形。タブ文字は半角スペースに変換される。
<Leader>t{セパレータ} 指定したセパレータで分割して整形。各フィールドは左揃え。
<Leader>T{セパレータ} 指定したセパレータで分割して整形。各フィールドは右揃え。
<Leader>tml 行末のバックスラッシュの位置の整形。シェルスクリプト用。
<Leader>Htd HTMLのテーブルの整形。
<Leader>tt LaTexのテーブルの整形。

Note

「<Leader>」は、特に特別な設定を行っていなければ、 「\(バックスラッシュ、もしくは円マーク)」になります。
例えば、「<Leader>tsp」となっている時は、
「\tsp」と実行すれば、「<Leader>tsp」の整形処理を実行できます。

<Leader>tsp、<Leader>Tsp

「<Leader>tsp」、または「<Leader>Tsp」と実行すると、 文章を空白文字で区切って、複数のフィールドに分割し、 それぞれのフィールドの位置揃えを行います。
「<Leader>tsp」「<Leader>Tsp」には、各フィールドを左寄せにするか、右寄せにするか、 という違いがあります。


次の文章に対して、

one two three four five
six seven eight nine ten
eleven twelve thirteen fourteen fifteen

「<Leader>tsp」と実行すると、

<Leader>tsp
one    two    three    four     five
six    seven  eight    nine     ten
eleven twelve thirteen fourteen fifteen

「<Leader>Tsp」と実行すると、

<Leader>Tsp
   one    two    three     four    five
   six  seven    eight     nine     ten
eleven twelve thirteen fourteen fifteen

と整形します。

<Leader>tsq

「<Leader>tsq」は、整形範囲の文章を空白文字で区切って各フィールドに分割し、 それぞれのフィールドの位置を整えます。
「<Leader>tsp」「<Leader>Tsp」と似た整形処理ですが、 ダブルクォートに囲まれた空白文字入りのテキストを、 1つのフィールドとして扱える、という特徴があります。


次の文章に対して、

"one two" three
four "five six"

「<Leader>tsq」と実行すると、

<Leader>tsq
"one two" three
four      "five six"

と整形する。

<Leader>tab

「<Leader>tab」を実行すると、タブ文字で文章をフィールドに分割し、各フィールドの位置を揃えます。 TSVフォーマットのファイルを見やすく整形する機能です。 各フィールド間のタブ文字は、半角スペースに置換されます。


もとのテキスト

    aa>-bbb>cccc>---ddddd>--ee
    1111>---22>-33>-4444>---5

「<Leader>tab」と実行すると、

<Leader>tab
aa     bbb   cccc   ddddd   ee
1111   22    33     4444    5

と整形されます。 タブ文字はスペースで置き換えられます。

<Leader>t{セパレータ}、<Leader>T{セパレータ}

一部の記号だけですが、各フィールドを区切るセパレータを自分で指定することもできます。 指定できるのは、「,」「:」「<」「=」「@」「|」の6種類です。
<Leader>t{セパレータ}と指定した場合は各フィールド左寄せで、 <Leader>T{セパレータ}と指定した場合は各フィールドを右寄せで整形します。


<Leader>t=、<Leader>T=

もとの文章

aa=bb=cc=1;
a=b=c=1;
aaa=bbb=ccc=1;

「<Leader>t=」と実行

<Leader>t=
aa  = bb  = cc  = 1;
a   = b   = c   = 1;
aaa = bbb = ccc = 1;

「<Leader>T=」と実行

<Leader>T=
 aa =  bb =  cc = 1;
  a =   b =   c = 1;
aaa = bbb = ccc = 1;

<Leader>t|、<Leader>T|

もとの文章

one|two|three
four|five|six
seven|eight|nine

「<Leader>t|」と実行

<Leader>t|
one  |two  |three
four |five |six
seven|eight|nine

「<Leader>T|」と実行

<Leader>T|
  one|  two|three
 four| five|  six
seven|eight| nine

<Leader>t:、<Leader>T:

もとの文章

one:two:three
four:five:six
seven:eight:nine

「<Leader>t:」と実行

<Leader>t:
one   : two   : three
four  : five  : six
seven : eight : nine

「<Leader>T:」と実行

<Leader>T:
  one :   two : three
 four :  five :   six
seven : eight :  nine

と、それぞれ、指定したセパレータで区切って、整形します。

<Leader>tml

「<Leader>tml」は行末のバックスラッシュの位置を揃えます。
この機能は、シェルスクリプトの次の行に続くことを意味するバックスラッシュ位置の 整形などで利用できます。


もとの文章

one \
two three \
four five six \
seven \\ \
eight \nine \
ten \

「<Leader>tml」と実行

<Leader>tml
one           \
two three     \
four five six \
seven \\      \
eight \nine   \
ten           \

と整形される。

<Leader>Htd

「<Leader>Htd」はHTMLテーブルのソース上のカラム位置を揃えます。


もとの文章

<TR><TD>...field one...</TD><TD>...field two...</TD></TR>
<TR><TD>...field three...</TD><TD>...field four...</TD></TR>

「<Leader>Htd」と実行

<Leader>Htd
<TR><TD> ...field one...   </TD><TD> ...field two...  </TD></TR>
<TR><TD> ...field three... </TD><TD> ...field four... </TD></TR>

と整形。

<Leader>tt

「<Leader>tt」はLatexのテーブルのカラムのソース上での位置を揃えます。


次のような文章がある場合に

\begin{tabular}{||c|l|r||}
\hline\hline
  one&two&three\\ \hline
  four&five&six\\
  seven&eight&nine\\
\hline\hline
\end{tabular}

テーブルのカラムの行を選択して、

\begin{tabular}{||c|l|r||}
\hline\hline
  one   & two   & three \\ \hline
  four  & five  & six   \\
  seven & eight & nine  \\
\hline\hline
\end{tabular}

「<Leader>tt」と実行すると、

<Leader>tt
\begin{tabular}{||c|l|r||}
\hline\hline
  one   & two   & three \\ \hline
  four  & five  & six   \\
  seven & eight & nine  \\
\hline\hline
\end{tabular}

というように整形されます。

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