aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-table-mode/doc/table-mode.txt
blob: b8e27540cf45c8404831daa0ed11fbff88652cc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
*table-mode.txt*			Table Mode for easy table formatting
===============================================================================
	Table Mode, THE AWESOME AUTOMATIC TABLE CREATOR & FORMATTER
				 VERSION 4.6.4

		Author: Dhruva Sagar <http://dhruvasagar.com/>
		License: MIT <http://opensource.org/licenses/MIT/>
===============================================================================
CONTENTS						*table-mode-contents*

	1. Introduction .................... |table-mode-introduction|
	2. Getting Started ................. |table-mode-getting-started|
	3. Options ......................... |table-mode-options|
	4. Mappings ........................ |table-mode-mappings|
	5. Commands ........................ |table-mode-commands|
	6. Contributing .................... |table-mode-contributing|
	7. Report Issues ................... |table-mode-report-issues|

===============================================================================
INTRODUCTION					*table-mode-introduction*

Table Mode is simple plugin that makes building tables in vim a breeze. It is
inspired from tpope's auto aligning script for creating tables in vim -
https://gist.github.com/tpope/287147, which in turn utilizes the Tabular
Plugin.

===============================================================================
GETTING STARTED					*table-mode-getting-started*

Create Table on the fly:
	Using Table Mode is dead simple. You simply start typing on a new line
	with the table separator - |table-mode-separator|, and you just type
	away! The plugin does the rest automatically for you as you type. With
	each additional separator you add, it aligns the table properly,
	without having to do anything else.

        Table Mode now supports gfm style tables and allows to define column
        alignments with the aid of placing ':' (configured using
        |g:table_mode_align_char|) on the table header border appropriately to
        align content left or right.

	The table mode is disabled by default and you can enter table mode
	using |table-mode-toggle-map| or you can also enable it permanently
	using |table-mode-always-active| if you wish though not recommended.

	Table Mode allows for creation of tables within comments, it looks at
	the 'commentstring' setting to identify whether the current line is
	commented.

Tableize content:
	Table Mode enables conversion of delimited text into tables. Again
	like table creation, this is also applicable within comments.

Move between cells :
	Now you can move between cells using table mode motions
	'<Leader>t[hjkl]' to move left | down | up | right cells respectively.
	You can use |table-mode-map-prefix| option to define the prefix
	mapping to be used before 'hjkl'. The left | right motions wrap around
	the table and move to the next | previous row after the last | first
	cell in the current row if one exists.

Manipulation of tables:
	Tableize provides 3 easy ways to quickly manipulate tables.

	1. Cell Text Object : A text object for table cell
	defined by |table-mode-cell-text-object|.  You can use it with an
	operator (d,c,y) to manipulate it easily. If you delete the cell using
	this, it will delete the table separator along with it so if you type
	out some new stuff, you will have to re-add it, which triggers a
	re-alignment and the table would be formatted again.

	2. Delete Column : Delete an entire table column using
	|table-mode-delete-column-map| .

	3. Delete Row : Delete an entire table row using
	|table-mode-delete-row-map|

Table Formulas:
	Table Mode now has support for formulas like a spreadsheet. There
	are 2 ways of defining formulas :

		You can add formulas using |:TableAddFormula| or the mapping
		|<Leader>tfa| defined by the option
		|table-mode-add-formula-map| from within a table cell, which
		will ask for input on the cmd-line with a 'f=' prompt. The
		input formula will be appended to the formula line if one
		exists or a new one will be created with the input formula
		taking the current cell as the target cell. The formula line
		is evaluated immediately to reflect the results.

		You can directly also add / manipulate formula expressions in
		the formula line. The formula line is a commented line right
		after the table, beginning with 'tmf:' (table mode formula).
		eg) '# tmf: $3=$2*$1'.  You can add multiple formulas on the
		line separated with a ';' eg) '# tmf: $3=$2*$1;$4=$3/3.14'

	You can evaluate the formula line using |:TableEvalFormulaLine| or the
	mapping |<Leader>tfe| defined by the option |table-mode-expr-calc-map|

Formula Expressions :
	Expressions are of the format '$target = formula'.

	The target can be of 2 forms :

		'$n': This matches the table column number 'n'. So the formula
		would be evaluated for each cell in that column and the result
		would be placed in it. You can use negative indice to
                represent column relative to the last, -1 being the last.

		'$n,m': This matches the table cell n,m (row, column). So in
		this case the formula would be evaluated and the result will
		be placed in this cell. You can also use negative values to
                refer to cells relative to the size, -1 being the last (row or
                column).

	The formula can be a simple mathematical expression involving cells
	which are also defined by the same format as that of the target cell.
	Apart from basic mathematical expressions, table mode also provides
	special functions 'Sum' and 'Average'. Both these functions take a
	range as input. A range can be of two forms :

		'n:m': This represents cells in the current column from row
		'n' through 'm'. If 'm' is negative it represents 'm' row
		above the current row (of the target cell).

		'r1,c1:r2,c2': This represents cells in the table from cell
		r1,c1 through cell r2,c2 (row, column).

	Examples :
		$2 = $1 * $1
		$2 = $1 / $1,3
		$1,2 = $1,1 * $1,1
		$5,1 = Sum(1:-1)
		$5,3 = Sum(1,2:5,2)

===============================================================================
OPTIONS							*table-mode-options*

Overview:
	|table-mode-loaded| ............. Disable the plugin.
	|table-mode-corner| ............. Set corner character.
	|table-mode-separator| .......... Set separator character.
	|table-mode-fillchar| ........... Set table fillchar character.
	|table-mode-map-prefix| ......... Set prefix for table mode commands.
	|table-mode-toggle-map| ......... Set table mode toggle mapping.
	|table-mode-always-active| ...... Set table mode to always enabled.
	|table-mode-delimiter| .......... Set the delimiter for Tableize.
        |table-mode-corner-corner| ...... Set the character to be used for
                                        extreme corners of the table border.
        |table-mode-align-char|.......... Set the alignment character which
                                        can be added to the table header
                                        border to control alignment of that
                                        column.
        |table-mode-motion-up-map| ...... Set the table motion up mapping
        |table-mode-motion-down-map| .... Set the table motion down mapping
        |table-mode-motion-left-map| .... Set the table motion left mapping
        |table-mode-motion-right-map| ... Set the table motion right mapping
        |table-mode-cell-text-object-a-map|
                                        Set the 'a' cell text object
                                        mapping
        |table-mode-cell-text-object-i-map|
                                        Set the 'i' cell text object
                                        mapping
        |table-mode-realign-map| ........ Set the realign mapping
        |table-mode-delete-row-map| ..... Set the delete row mapping
        |table-mode-delete-column-map| .. Set the delete column mapping
        |table-mode-add-formula-map| .... Set the add formula mapping
        |table-mode-eval-formula-map| ... Set the eval formula mapping
        |table-mode-echo-cell-map| ...... Set the echo cell mapping
        |table-mode-sort-map| ........... Set the table sort mapping

g:loaded_table_mode					*table-mode-loaded*
	Use this option to disable the plugin: >
		let g:loaded_table_mode = 1
<
g:table_mode_corner					*table-mode-corner*
	Use this option to define the table corner character: >
		let g:table_mode_corner = '+'
<
g:table_mode_separator					*table-mode-separator*
	Use this option to define the table column separator character: >
		let g:table_mode_separator = '|'
<
	This option also defines the trigger to be used to start creating a
	table row in insert mode.

g:table_mode_fillchar					*table-mode-fillchar*
	Use this option to define the table header border fill character: >
		let g:table_mode_fillchar = '-'
<

g:table_mode_map_prefix				      *table-mode-map-prefix*
	Use this option to define the table mode mapping prefix that will be
	prefixed for all other table mode mappings. >
		let g:table_mode_map_prefix = '<Leader>t'
<

g:table_mode_toggle_map				     *table-mode-toggle-map*
	Use this option to define the mapping for toggling the table mode: >
		let g:table_mode_toggle_map = 'm'
<
	Read |table-mode-mappings-toggle| for more info.

	NOTE you will need to use the |table-mode-map-prefix| before this to
	get the desired effect.

g:table_mode_always_active			    *table-mode-always-active*
	Use this option to permanently enable the table mode: >
		let g:table_mode_always_active = 0
<
	This will trigger table creation once you type the
	|table-mode-separator| as long as it's the first character on
	the line, which can be annoying. I recommend you to instead use the
	|table-mode-mappings-toggle| or |table-mode-commands-toggle| to toggle
	the table mode or |table-mode-commands-enable| to enable and
	|table-mode-commands-disable| to disable mode when needed.

g:table_mode_delimiter					*table-mode-delimiter*
	Use this option to define the delimiter which used by
	|table-mode-commands-tableize| >
		let g:table_mode_delimiter = ','
<
g:table_mode_corner_corner                           *table-mode-corner-corner*
        Use this option to define the character to be used for the extreme
        corners of the table border. >
                let g:table_mode_corner_corner = '|'
<
g:table_mode_align_char                                  *table-mode-align-char*
        Use this option to define the character to be used for defining
        alignments for columns in the table header border. >
                let g:table_mode_align_char = ':'
<
g:table_mode_disable_mappings                      *table-mode-disable-mappings*
        Set this to true to disable all mappings. >
                let g:table_mode_disable_mappings = 1
<
g:table_mode_motion_up_map                            *table-mode-motion-up-map*
        Set this to configure the mapping to move up a cell vertically. >
                let g:table_mode_motion_up_map = '{<Bar>'
<
g:table_mode_motion_down_map                        *table-mode-motion-down-map*
        Set this to configure the mapping to move down a cell vertically. >
                let g:table_mode_motion_down_map = '}<Bar>'
>
g:table_mode_motion_left_map                        *table-mode-motion-left-map*
        Set this to configure the mapping to move to the left cell. >
                let g:table_mode_motion_left_map = '[<Bar>'
>
g:table_mode_motion_right_map                      *table-mode-motion-right-map*
        Set this to configure the mapping to move to the right cell. >
                let g:table_mode_motion_right_map = ']<Bar>'
>
g:table_mode_cell_text_object_a_map          *table-mode-cell-text-object-a-map*
        Set this to configure the mapping to define the text object for around
        cell object. >
                let g:table_mode_cell_text_object_a_map = 'a<Bar>'
>
g:table_mode_cell_text_object_i_map           *table-mode-cell-text-object-i-map*
        Set this to configure the mapping to define the text object for inner
        cell object. >
                let g:table_mode_cell_text_object_i_map = 'i<Bar>'
>
g:table_mode_realign_map                                *table-mode-realign-map*
        Set this to configure the mapping for table realign. >
                let g:table_mode_realign_map = '<Leader>tr'
>
g:table_mode_delete_row_map                          *table-mode-delete-row-map*
        Set this to configure the mapping for deleting a table row. >
                let g:table_mode_delete_row_map = '<Leader>tdd'
>
g:table_mode_delete_column_map                    *table-mode-delete-column-map*
        Set this to configure the mapping for deleting a table column. >
                let g:table_mode_delete_column_map = '<Leader>tdc'
>
g:table_mode_add_formula_map                        *table-mode-add-formula-map*
        Set this to configure the mapping for adding a formula for a table
        cell. >
                let g:table_mode_add_formula_map = '<Leader>tfa'
>
g:table_mode_eval_formula_map                      *table-mode-eval-formula-map*
        Set this to configure the mapping for evaluating the formula line. >
                let g:table_mode_eval_formula_map = '<Leader>tfe'
>
g:table_mode_echo_cell_map                            *table-mode-echo-cell-map*
        Set this to configure the mapping for echoing the tablemode
        representation of the current cell. >
                let g:table_mode_echo_cell_map = '<Leader>t?'
>
g:table_mode_sort_map                                      *table-mode-sort-map*
        Set this to configure the mapping for sorting the table mode by
        current column. >
                let g:table_mode_sort_map = '<Leader>ts'
>

===============================================================================
MAPPINGS						*table-mode-mappings*

						*table-mode-mappings-prefix*
<Leader>t	This is a prefix defined by the option |table-mode-map-prefix|
		used before all other table mode commands.

						*table-mode-mappings-toggle*
<Leader>tm	Toggle table mode for the current buffer. You can change this
		using the |toggle-mode-options-toggle-map| option.

                NOTE This is applicable only if |table-mode-always-active| is
                not set.

						*table-mode-mappings-trigger*
|		Trigger table creation in table mode. You can change this
		using the |toggle-mode-options-separator| option.

<Leader>tt	Triggers |table-mode-commands-tableize| on the visually
		selected content.

                                              *table-mode-mappings-op-trigger*
<Leader>T	Triggers |table-mode-commands-tableize| on the visually
		selected asking for user to input the delimiter.

						*table-mode-mappings-realign*
<Leader>tr	Realigns table columns

<Leader>t?      Echo the current table cells representation for defining
                formulas.

						*table-mode-mappings-motions*
[|              Move to previous cell
]|              Move to next cell
{|              Move to the cell above
}|              Move to the cell below

                                              *table-mode-mappings-delete-row*
<Leader>tdd	Delete the entire table row you are on or multiple rows using
		a [count]. You can change this using |table-mode-delete-row-map|
		option.

                                           *table-mode-mappings-delete-column*
<Leader>tdc	Delete entire table column you are within. You can preceed it
		with a [count] to delete multiple columns to the right. You
		can change this using |table-mode-delete-column-map| option.

                                             *table-mode-mappings-add-formula*
<Leader>tfa	Add a fomula for the current table cell. This invokes
		|TableAddFormula| command.

                                   *table-mode-mappings-evaluate-formula-line*
<Leader>tfe	Evaluate the formula line which is a commented line right
		after the table beginning with 'tmf:'. If one exists this
		would evaluate the formula line and update the table
		accordingly. This invokes the |TableEvalFormulaLine| command.


                                               *table-mode-mappings-sort-column*
<Leader>ts      Sort a column under the cursor. This invokes |TableSort|

||              Expands to a header border. You can change this by changing
                |table-mode-separator| option. You can change the character to
                be used for te extreme corners of the border by changing
                |table-mode-corner-corner| option.

===============================================================================
COMMANDS						*table-mode-commands*

                                                            *:TableModeToggle*
                                                 *table-mode-:TableModeToggle*
:TableModeToggle
	Toggles the table mode. Same effect as |toggle-mode-mappings-toggle|.

	NOTE this is applicable only if |table-mode-always-active| is
	not set.

                                                            *:TableModeEnable*
                                                 *table-mode-:TableModeEnable*
:TableModeEnable
	Enables Table Mode.

	NOTE this is applicable only if |table-mode-always-active| is
	not set.

                                                           *:TableModeDisable*
                                                *table-mode-:TableModeDisable*
:TableModeDisable
	Disables Table Mode.

	NOTE this is applicable only if |table-mode-always-active| is
	not set.

                                                                   *:Tableize*
							*table-mode-:Tableize*
:Tableize
	This converts the current line into a table if it consists of
	|table-mode-delimiter|. This accepts a range, without which it
	applies on the current line.

	This accepts a {pattern} similar to Tabular which defines the
	delimiter. eg.) >
		:Tableize/;
<
	The above command will Tableize using ';' as the delimiter.

	NOTE this is optional, by default without the expression it will
	tableize the content using |table-mode-delimiter| as the delimiter.

                                                           *:TableModeRealign*
                                                *table-mode-:TableModeRealign*
:TableModeRealign
	This command triggers |table-mode-mappings-realign|

                                                            *:TableAddFormula*
                                                 *table-mode-:TableAddFormula*
:TableAddFormula
	This command is for defining a formula for the current table cell. It
	takes input on the cmd-line with a 'f=' prompt and appends it to the
	formula line if it exists or adds a new formula line with the
	expression using the current cell as the target and the input formula.

                                                       *:TableEvalFormulaLine*
                                            *table-mode-:TableEvalFormulaLine*
:TableEvalFormulaLine
	This command when invoked from anywhere within the table or directly
	on the formula line evaluates it and updates the table accordingly.

                                                                  *:TableSort*
                                                       *table-mode-:TableSort*
:TableSort[!] [i][u][r][n][x][o]
        This command sorts column under the cursor and inherits the same flags
        as the |:sort| command.

        With [!] the order is reversed.

===============================================================================
CONTRIBUTING						*table-mode-contributing*

If you want to take a stab at it, by all means, send me a pull request on
Github (http://github.com/dhruvasagar/table-mode) or get in touch with me
directly via e-mail at dhruva 'dot' sagar 'at' gmail.com.

===============================================================================
REPORT ISSUES					      *table-mode-report-issues*

If you discover any issues, please report them at
http://github.com/dhruvasagar/table-mode/issues.

 vim:tw=78:ts=8:ft=help:norl:ai:et