Vim Tips Wiki
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
FANDOM
Fan Central
BETA
Games
Anime
Movies
TV
Video
Wikis
Explore Wikis
Community Central
Start a Wiki
Don't have an account?
Register
Sign In
Sign In
Register
Vim Tips Wiki
1,649
pages
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
Editing
Smarter Table Editing II
Back to page
Edit
Edit source
View history
Talk (0)
We recommend that you
log in
before editing. This will allow other users to leave you a message about your edit, and will let you track edits via your
Watchlist
.
Creating an account
is quick and free.
Anti-spam check. Do
not
fill this in!
{{review}} {{TipImported |id=554 |previous=552 |next=555 |created=September 10, 2003 |complexity=basic |author=Usman Latif |version=5.7 |rating=2/3 |category1= |category2= }} In [[VimTip547]] I described some functions that enable easier navigation and editing of tables. I have considerably enhanced the functionality and placed all the relevant code in a script file {{script|id=769}}. The idea of the script is to automatically extract fields from a table row and use that information to create maps that aid in editing and navigation of the table. The user first marks a table row as the table heading. The line does not literally have to be the table heading, but it should be representative of the typical row of the table in question. After this step the script maps tab and shift-tab keys to move between fields. These mappings work in both insert and normal modes. The tab mapping is especially useful in insert mode as it inserts the correct amount of padding to reach the start of the next field. The script also has an alignment feature that aligns the fields of the row with that of the heading. Editing a pre-existing table frequently leads to misaligned rows and this feature alleviates the need to manually add/remove padding. To better illustrate the functionality of the script, I have created the table below: <pre> ==================================================================== This table illustrates the use of table.vim script ==================================================================== <Leader>th marks a line as table heading and activates maps for <Tab> and <S-Tab> keys <Leader>th must be invoked on a well formed line with the right number of columns This means that the above line does not qualify Also notice that the field separator is atleast two spaces -------------------------------------------------------------------- when the maps are active, pressing <Tab> here <-- moves here <Tab> here <-- moves here <== <S-Tab> moves back to "<==" <** <S-Tab> here moves to "<**" above -------------------------------------------------------------------- The maps for <Tab> and <S-Tab> work in insert and normal modes, and can be deactivated by pressing <Leader>tt pressing <Leader>tt again, re-enables the maps -------------------------------------------------------------------- The script has some very basic support for field alignment It is very easy to get out of alignment when editing <Leader>ta on the line above will fix the line to: It is very easy to get out of alignment when editing -------------------------------------------------------------------- <Leader>ta can be very handy if the user wants to expand or contract fields, just change the width of the fields on the heading line and press <Leader>th to mark the new heading and then num<Leader>ta on the top line of the table. num is the number of lines in the table -------------------------------------------------------------------- The alignment command fails when a row has more fields than the heading or when the contents of a field don't fit inside the field, as specified by the heading row case1 is this row case2 is this row ... ... this is another example of case2, there is no space for field separator on the first field on above line ==================================================================== </pre> If you don't like the default mappings change them to whatever you like. The mappings are defined on top of the table.vim script file. To install the script, place table.vim in the vim macros directory and source it in your vimrc using: source $VIMRUNTIME/macros/table.vim If you simply want to check the functionality of the script, place the script file in your current directory, open vim in the same directory and use :so table.vim The script can also be downloaded from http://www.techuser.net/files ==Comments== I think it belongs in the documentation of the corresponding script. No need to allocate multiple tip/script ids for the same thing. Hence I vote -1 here but 1 on the script. ---- The scripts section is a repository for code and the tips section is about solutions to text-editing problems. The two serve very different and distinct purposes. Recently I posted [[VimTip548]] and someone turned it into a script, {{script|id=763}}. No one questioned it, as it was a very natural thing to do. Similarly, I have divided this tip into a download part and a problem/solution part, and I consider it good organization. I think people should be using the scripts section only to provide file downloads. If they have non-trivial comments that provide motivation for downloading the script, they should be putting them in the tips section. That way there will be one central place where users can look for solutions to text-editing problems. Please post your opinion on the issue as a comment. I suggest that the site maintainers consider all the discussion here and turn it into a set of guidelines for people posting tips/scripts. ---- "I think people should be using the scripts section only to provide file downloads." I disagree. When you upload a script you want to motivate then and there why people will find it useful. Tips and scripts are both meant for problem/solution descriptions; I select which section to add something depending on whether I am uploading any significant amount of code that people can use out of the box (dump into plugins, etc.). If everyone followed you and simply put up a .vim file or a tarball in the scripts section, linking to it from a tip with an explanation of what it does, I think vim online would be a lot less useful than it is now. The scripts section would just be a glorified repository, and we could get rid of it from the webpages altogether, simply using the script IDs transparently in the background. There is a reason why both tips and scripts have lots of room for explanation and description. Duplicating something in both places is just noise. I realize that whether something constitutes a tip or script is a subjective opinion. You may disagree with me, but it is not worth debating imo. Select one of the two sections. Just one. As a postscript, it is interesting to compare the karma of your [[VimTip548]] and Robert Kelly's [/scripts/script.php?script_id=763 vimscript #763]. I will hazard the hypothesis that the vim online community has a pretty good idea of where that particular (very useful!) idea belongs. ----
Summary:
Please note that all contributions to the Vim Tips Wiki are considered to be released under the CC-BY-SA
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Navigation
(
view source
)
Template:Review
(
view source
)
Template:Script
(
view source
)
Template:TipImported
(
view source
)
Follow on IG
TikTok
Join Fan Lab