A vim 7.4+ plugin to generate table of contents for CSS files.
This is a straight rip-off of the code used for 'mzlogin/vim-markdown-toc', except that it doesn't not provide links within the document and it's for .css files instead of markdown.*
Auto-generates a Table of Contents in .css files based on section-headings (comments). It will search through a stylesheet and find /* # Section Headers */. Use the hashtag (#) character to specify indentation level:
/* # Main Level */
.class {
...
}
/* ## Secondary Level */
.class-2 {
...
}
/* ### Tertiary Level */
.class-3 {
...
}
This would create a ToC similar to the following:
/* BEGIN - Table of Contents =============================== *
+ Main Level
* Secondary Level
- Tertiary Level
* END - Table of Contents =============================== */
-
Generate table of contents for CSS,SCSS files.
-
Update existing table of contents.
-
Auto update existing table of contents on save.
- Screenshots
- Tests
I suggest managing your vim plugins via Vundle or Vim Plug so you can install in three simple steps:
-
add the following line to your vimrc file
Plugin 'l00sed/vim-css-toc'or
Plug 'l00sed/vim-css-toc' -
:so $MYVIMRC -
:PluginInstall
Move the cursor to the line you want to append table of contents, then type a command below suit you. The command will generate headings after the cursor into table of contents.
:GenToc
Generate table of contents.
Generally you don't need to do this manually, existing table of contents will auto update on save by default.
The :UpdateToc command, which is designed to update toc manually, can only work when g:vct_auto_update_on_save turned off, and keep insert fence.
:RemoveToc command will do this for you, just remember keep insert fence option by default.
-
g:vct_auto_update_on_savedefault:
1This plugin will update existing table of contents on save automatic.
You can close this feature by add the following line to your vimrc file:
let g:vct_auto_update_on_save = 0
-
g:vct_dont_insert_fencedefault:
0By default, the
:GenToccommands will add/* BEGIN - Table of Contentsfence to the table of contents, it is designed for feature of auto update table of contents on save and:UpdateToccommand, it won't effect what your CSS file looks like after parse.If you don't like this, you can remove the fence by add the following line to your vimrc file:
let g:vct_dont_insert_fence = 1
But then you will lose the convenience of auto update tables of contents on save and
:UpdateToccommand. When you want to update toc, you need to remove existing toc manually and rerun:GenToccommands. -
g:vct_fence_textdefault:
BEGIN - Table of ContentsInner text of the fence marker for the table of contents, see
g:vct_dont_insert_fence. -
g:vct_fence_closing_textdefault:
g:vct_fence_textInner text of the closing fence marker. E.g., you could
let g:vct_fence_text = 'TOC'andlet g:vct_fence_closing_text = '/TOC'to get/* TOC =================================== * ...TOC * TOC =================================== */ -
g:vct_cycle_list_item_markersdefault:
1By default,
*is used to denote every level of a list:* Level 1 * Level 1-1 * Level 1-2 * Level 1-2-1 * Level 2If you set:
let g:vct_cycle_list_item_markers = 1
every level will instead cycle between the valid list item markers
*,-and+:* Level 1 - Level 1-1 - Level 1-2 + Level 1-2-1 * Level 2Might appeal to those who care about readability of the source.
-
g:vct_list_item_chardefault:
*The list item marker, it can be
*,-or+. -
g:vct_include_headings_beforedefault:
0Include headings before the position you are inserting Table of Contents.
-
g:vct_clean_listdefault:
['*', '/', '\n', '\r', '\s\+$', '\#']These are the regex characters removed from the comment as it's sourced into the ToC. The comment start (/) and end (/) characters are removed. It also removes the hashtags (#) used to define ToC indentation. Lastly it removes newlines (\n), carriage returns (\r), and trailing whitespace (\s+$). Can be added to or adjusted depending preference
