# VIM Table Mode An awesome automatic table creator & formatter allowing one to create neat tables as you type. ## Change Log ### Version 2.0 : * Moved bulk of code to autoload for vimscript optimisation. ### Version 1.1 : * Added Tableize command and mapping to convert existing content into a table. ### Version 1.0 : * First stable release, create tables as you type. ## Getting Started ### Installation There are 2 ways to do this 1. I recommend installing pathogen.vim and then adding a git submodule for your plugin: ```sh $ cd ~/.vim $ git submodule add git@github.com:dhruvasagar/vim-table-mode.git bundle/table-mode ``` 2. Copy table-mode.vim into ~/.vim/plugin/ (Unix) or vimfiles/plugin/ (Windows) as with other plugins. ### Requirements Depends on Tabular. Make sure Tabular is installed and loaded into your runtime to ensure this works. ### Usage - On the fly table creation : By default the table column separator is '|' (it can be changed). As soon as you type it on a new line (ignores indentation) the script gets to work on creating a table around it. As you type and define more columns, the table is completed, formatted and aligned automatically on the fly. Since this could lead to unwanted behavior I have disabled table mode by default. You would have to use `:TableModeToggle` command or the table mode toggle mapping, which is `tm` by default to toggle the table mode or you can directly use `:TableModeEnable` and `:TableModeDisable` to enable or disable the table mode. This is on a per buffer basis and so it does not cause any unusual behavior unless enabled explicitly. Please read `:h table-mode` for further information. - Format existing content into a table : Table Mode wouldn't justify it's name if it didn't allow formatting existing content into a table. And it does as promised. Like table creation on the fly as you type, formatting existing content into a table is equally simple. You can visually select multiple lines and call `:Tableize` on it, or alternatively use the mapping `T` (this is configurable). `:Tableize` accepts a range and so you can also call it by giving lines manually like `:line1,line2Tableize`, but this is not that intuitive. You can also use the mapping `T` with a `[count]` to apply it to the next `[count]` lines in usual vim style. ### Demo ## Contributing ### Reporting an Issue : - Use Github Issue Tracker ### Contributing to code : - Fork it. - Commit your changes and give your commit message some love. - Push to your fork on github. - Open a Pull Request. ## Credit I must thank Tim Pope for inspiration. The initial concept was created by him named cucumbertables.vim. Also a shout out to godlygeek who developed the incredible Tabular plugin which does most of the grunt work behind the scenes.