如何轻松创建和维护表?


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           |
+---------------+------------------------+---------------------------------------+

问题是这很难编辑。如果我更改一件事,则需要(手动)重新调整所有内容,这就是PITA

有没有更简单的方法来管理这个问题?我不在乎上面的确切布局,但我想保留第三列的包装...


1
list-table
顺便说一句

Answers:


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做的一件事是包装第三列就像我问题中的例子一样。这可能吗?
马丁·图尔诺伊

@Carpetsmoker感谢您的编辑。好吧,您可以手动包装它,没有办法自动完成。
Dhruva Sagar'2

6

如果可以使用sedcolumn,那么接近的命令行解决方案将是:

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

您可以将其与视觉选择'<,'>或行号结合使用。

缺点:

  • 用途sedcolumn。Vim是偶然的。sed可以将命令更改为vim :substitute命令,但column至关重要。
  • 行分隔符(---...-)被填充,但是我怀疑它的可靠性。
  • 我不知道便携性如何$'\x01'

资料来源:


除了小故障(可能可以解决)外,这看起来很有希望...虽然我无法完成的一件事是第三列的包装:-/
Martin Tournoij 2015年

5

如果您不想安装任何插件,并且想要编辑表格以保持对齐:

-使用由激活的内置VREPLACE模式gR

(确保您拥有的是vim最新版本,并检查其是否使用+vreplace功能进行编译,vim --version然后在终端上键入)

在此处输入图片说明 (我的状态行设置为在REPLACE和VREPLACE模式下都显示REPLACE)

如果您想进一步了解REPLACEVREPLACE模式,请查看本文


3

为此,我创建了命令行工具tablign。它也可以在vim内部运行。只需安装

[sudo -H] pip3 install tablign

在vim中标记表并调用

:'<,'>:!tablign

(如果标记了表格,vim会为您填写前几个字符。)

它尚不能固定列宽,但是如果需要可以添加。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.