This is a small vim extension to help making sections in restructured text documents.
It was inspired by the nice https://github.com/nvie/vim-rst-tables extension by
Vincent Driessen. The structure of this extension follows vim-rst-tables
,
and it uses more of Vincents's code from https://github.com/nvie/vim_bridge.
For install instructions see the Install
section at the end.
You'll need python compiled into your vim (:version in vim will tell you).
I've tested the python tests with Python 2.5, 2.6 and 3.3.
Should be at https://github.com/matthew-brett/vim-rst-sections
I could not see a license for vim-rst-tables
. vim-rst-sections
contains
some structure, but very little code, from vim-rst-tables
.
Assuming that that the vim-rst-tables
code is in the public domain or BSD
licensed, I (Matthew Brett) release this code under the 2-clause BSD license.
The full text is in the LICENSE
file in the same directory as this README.
Thanks to Vincent Driessen for sharing.
Once you've installed the extension, then you can access it with your
<leader>
key in vim. I believe the default is \
, for me it is mapped to
,
. You can also call the various functions directly with commands such as
:call RstSectionStandardize()
- see below.
The script mostly assumes that you are using, or want to use, the section headings that the python documents use - see http://sphinx.pocoo.org/rest.html#sections . In summary, the convention is:
#
with overline, for parts*
with overline, for chapters=
, for sections-
, for subsections^
, for subsubsections"
, for paragraphs
If you aren't using these conventions already, and you want to be able to use
rst-sections
in a happy way, you may be able to automatically change to use
these conventions using the RstSectionStandardize
vim function provided by
this extension. Open the document you want to change, then run this:
call RstSectionStandardize()
The same function should also be accessible with the key combination
<leader><leader>p
("p" for Python standard sections).
Imagine you've just started a document. You type this:
A big overall section
While the cursor is on that line, type <leader><leader>d
(for me that is
,,d
). d
is for 'down', you may see why later. When you do this, you
should get the top section heading formatting:
##################### A big overall section #####################
Then write some more text. Add another section below:
A subsection for the big one
Type (for me) ,,d
and you get the top-level '#' under and overlining. That
is, you get the same level as the nearest section above you. Type
,,d
again and you go Down a level in the heirarchy to:
**************************** A subsection for the big one ****************************
Now, with the cursor in the same place, try ,,u
(Up). Notice that the
heading level goes Up one level to the top level in the heirarchy again:
############################ A subsection for the big one ############################
So, if you are on a line that is not currently a section, then either of ,,d
or ,,u
will format the line with the same section level as the nearest
section above you (or the top level if there is no section above you). However,
pressing ,,d
on an existing section heading, will take you down a level in
the heirarchy, and pressing ,,u
will take you up a level in the heirarchy.
Let's say you edited your section title, so now the heading isn't aligned with the text anymore:
############################ A section for the big one ############################
Yes, you've guessed it, ,,r
on the section or the underlining will reformat
for you:
######################### A section for the big one #########################
I hope you are using vim pathogen
!
For the zip file:
- Change into your ~/.vim/bundle` directory
- Unzip the zip archive
From latest code at https://github.com/matthew-brett/vim-rst-sections:
- Change into your ~/.vim/bundle` directory
- clone
vim-rst-sections
into this directory, or add it as a submodule
It's a really good idea to use pathogen. But:
For the zip file:
- Unzip to some directory
cd
into the new subdirectoryvim-rst-sections-<version>
where<version>
is the version number (e.gcd vim-rst-sections-0.1
)- copy the contents of the
ftplugin
directory into your~/.vim/ftplugin
directory (e.gcp ftplugin/* ~/.vim/ftplugin
).