テーブルを簡単に作成および保守するにはどうすればよいですか?


28

これは、いくつかのドキュメントで使用している表の一部です:

+---------------+------------------------+---------------------------------------+
| TASK NAME     | WHEN                   | DESCRIPTION                           |
+---------------+------------------------+---------------------------------------+
| db:seed       | On every update        | Data required for the application to  |
|               |                        | run; you should always be able to     |
|               |                        | safely execute this multiple times    |
|               |                        | for an update.                        |
| db:truncate   | Manually (dangerous!)  | TRUNCATE all tables but postal_codes  |
| postal_codes  | Once                   | Load the postal_codes table           |
+---------------+------------------------+---------------------------------------+

問題は、これは編集するのが非常に厄介だということです。1つのことを変更する場合、すべてを(手動で)再調整する必要があります。これはPITAです

これを管理する簡単な方法はありますか?上記のレイアウトそのものは気にしませんが、3列目の折り返しは維持したいです...


1
余談ですが、これがreStructuredTextである場合は、検討することを検討してくださいlist-table(asciiテーブルは保守や差分が不十分なため、最近多くのテーブルをこれに変換しました)
ideasman42

回答:


35

私はプラグインvim-table-modeの著者 です。私はこれを構築して改善するのにかなりの時間を費やしました。特にコミュニティのフィードバックがあり、まさにこのユースケースに対応しています。

簡単なクイックスタート::TableModeEnableコマンドで「テーブルモード」に入ると、次のように入力できます。

||
| MOVIE | QUOTE|
||
| Blade Runner | Like tears in the rain |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
||

また、vim-table-modeは自動的にオンザフライでアライメントを処理するため、次のようになります。

|-----------------------------------------+-------------------------------------------|
| MOVIE                                   | QUOTE                                     |
|-----------------------------------------+-------------------------------------------|
| Blade Runner                            | Like tears in the rain                    |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
|-----------------------------------------+-------------------------------------------|

後でテーブルを編集するときに、vim-table-modeが自動的に配置を調整します。

で「テーブルモード」を終了できます:TableModeDisable


そのコアは、入力時に自動フォーマットされるテーブルを簡単に作成することです。テーブル内を移動したり操作したりするための多くのマッピングを提供します(特に便利なのは<Leader>tdc、列全体を削除することです)。あなたがしなければならないのは、テーブルモードを有効にすることです。これらは起動し、フォーマットを心配することなく入力することができます。

ここに表示される機能よりも多くの機能があります。たとえば、ヘッダーの小さなヒントを使用して列を右揃えにする機能などです。また、きちんとしたスプレッドシートの数式エンジンがあり、通常のスプレッドシートのように数式を定義して計算を実行できます。

非常に柔軟で構成可能なように構築されているため、作成されるテーブルと境界線のいくつかの側面を変更できます。

また、その力を披露するためにいくつかのスクリーンキャストを作成しました。 このスクリーンキャストは最新のものですが、それ以来多くの改善が行われていることに注意してください。


5
ありがとう。実際の使用情報を追加するために回答を少し編集しました(以前は広告のように少し読みました)... vim-table-modeでできなかったことの1つは、3列目の折り返しです私の質問の例のように...これは可能ですか?
マーティントゥルノイ

@Carpetsmoker編集に感謝します。手動でラップできますが、自動的にラップする方法はありません。
Dhruvaサーガル

6

とを使用できる場合sedcolumn近いコマンドラインソリューションは次のようになります。

!sed 's/[- ]*\([+|]\)/'$'\x01''\1/g' | column -ts $'\x01' | sed '/^[-+ ]*$/s/ /-/g'

これを視覚的な選択'<,'>または行番号と組み合わせることができます。

短所:

  • とを使用sedcolumnます。Vimは偶発的です。sedコマンドは、おそらくのvimに変更することができる:substituteコマンドが、column非常に重要です。
  • 行セパレーター(---...-)が埋め込まれますが、その信頼性には疑いがあります。
  • 移植性$'\x01'がどの程度かはわかりません。

ソース:


マイナーは、このルックスは有望な...私は成し遂げることができない一つのことにはかかわらず、第3列の折り返しである(おそらく固定することができた)余談グリッチ: - /
マーティンTournoij

5

プラグインをインストールしたくない場合、整列を維持してテーブルを編集する場合:

-組み込みのVREPLACEモードを使用しますgR

(vimの最新バージョンがあることを確認し、+vreplace機能を使用してコンパイルされているかどうかを確認vim --versionし、端末で入力します)

ここに画像の説明を入力してください (ステータスラインは、REPLACEモードとVREPLACEモードの両方でREPLACEを表示するように設定されています)

REPLACEモードとVREPLACEモードについて詳しく知りたい場合は、この記事を参照してください


3

この目的のためにコマンドラインツールtablignを作成しました。vim内からも機能します。単にインストールする

[sudo -H] pip3 install tablign

vimでテーブルをマークして呼び出します

:'<,'>:!tablign

(テーブルをマークした場合、vimは最初の数文字を入力します。)

固定の列幅はまだできませんが、必要に応じて追加できます。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.