¿Cómo puedo crear y mantener tablas fácilmente?


28

Aquí hay (parte de) una tabla que uso en alguna documentación:

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

El problema es que es muy difícil de editar; si cambio una cosa, necesito (manualmente) realinear todo, que es un PITA

¿Hay formas más fáciles de manejar esto? No me importa el diseño exacto anterior como tal, pero me gustaría mantener la envoltura de la tercera columna ...


1
Dejando a un lado, si esto es texto reStructured, podría considerar investigar list-table(recientemente convertí muchas tablas a esto, porque las tablas ascii son difíciles de mantener y
difieren

Respuestas:


35

Soy el autor del complemento vim-table-mode . He pasado bastante tiempo construyendo y mejorando esto, especialmente con los comentarios de la comunidad y satisface exactamente este caso de uso.

Un breve inicio rápido: ingresa al 'modo de tabla' con el :TableModeEnablecomando, luego puede simplemente escribir:

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

Y vim-table-mode se encargará automáticamente de la alineación sobre la marcha, para que se vea como:

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

Cuando edite la tabla más tarde, vim-table-mode también se encargará de la alineación por usted.

Puede salir del 'modo tabla' con :TableModeDisable.


Su núcleo se trata de crear fácilmente tablas que se formatearán automáticamente a medida que escribe. También ofrece muchas asignaciones para moverse y manipular tablas (una particularmente útil es <Leader>tdceliminar una columna completa). Todo lo que tiene que hacer es habilitar el modo de tabla y estos se activarán y podrá simplemente escribir sin preocuparse por el formateo.

Tiene muchas más funciones que las que se muestran aquí, como la capacidad de alinear a la derecha las columnas con una pequeña pista en el encabezado. También tiene un motor de fórmulas de hoja de cálculo ordenado que le permite a uno definir fórmulas y realizar cálculos como lo haría una hoja de cálculo normal.

Está diseñado para ser extremadamente flexible y configurable para que pueda cambiar varios aspectos de las tablas y bordes que se crean.

También he creado algunos screencasts tratando de mostrar sus poderes. Este screencast es el más reciente , pero tenga en cuenta que ha habido muchas mejoras desde entonces.


55
Gracias; He editado un poco su respuesta para agregar información práctica de uso (se leía un poco como un anuncio antes) ... Una cosa que no pude hacer con vim-table-mode es el ajuste de la tercera columna como en el ejemplo en mi pregunta ... ¿Es esto posible?
Martin Tournoij

@Carpetsmoker gracias por la edición. Bueno, puedes envolverlo manualmente, no hay forma de hacerlo automáticamente.
Dhruva Sagar

6

Si puede usar sedy column, una solución de línea de comandos que se acerque sería:

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

Puede combinar esto con selección visual y / '<,'>o con números de línea.

Contras:

  • Usos sedy column. Vim es incidental. Los sedcomandos probablemente se pueden cambiar a :substitutecomandos vim , pero columnes crucial.
  • Los separadores de fila ( ---...-) se rellenan, pero tengo sospechas sobre su fiabilidad.
  • No sé lo portátil que $'\x01'es.

Fuentes:


Dejando a un lado los pequeños fallos (que probablemente se puedan solucionar), esto parece prometedor ... Sin embargo, lo único que no puedo hacer es envolver la tercera columna: - /
Martin Tournoij

5

Si no desea instalar ningún complemento y desea editar tablas manteniendo la alineación:

- use el modo VREPLACE incorporado , activado por gR.

(Asegúrese de tener la última versión de vim y compruebe si está compilada con la +vreplacefunción, escribiendo vim --versionen el terminal)

ingrese la descripción de la imagen aquí (mi línea de estado está configurada para mostrar REPLACE para los modos REPLACE y VREPLACE)

Si usted quiere saber más acerca de los REPLACE y VREPLACE modos, compruebe este artículo .


3

He creado la herramienta de línea de comandos tablign para este propósito; funciona desde dentro de vim también. Simplemente instale con

[sudo -H] pip3 install tablign

marque la tabla en vim y llame

:'<,'>:!tablign

(vim completa los primeros caracteres si marcó la tabla).

Todavía no puede hacer anchos de columna fijos, pero podría agregarse si fuera necesario.

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.