https://github.com/xolox/vim-publish
A Vim plug-in that helps you publish hyperlinked, syntax highlighted source code
https://github.com/xolox/vim-publish
Last synced: 2 months ago
JSON representation
A Vim plug-in that helps you publish hyperlinked, syntax highlighted source code
- Host: GitHub
- URL: https://github.com/xolox/vim-publish
- Owner: xolox
- Created: 2010-06-04T12:13:33.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2013-08-19T19:30:28.000Z (over 11 years ago)
- Last Synced: 2025-01-02T06:43:03.978Z (4 months ago)
- Language: VimL
- Homepage: http://peterodding.com/code/vim/publish/
- Size: 227 KB
- Stars: 14
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Publish hyperlinked, syntax highlighted source code with Vim
The [Vim text editor](http://www.vim.org/) includes the script [2html.vim](http://vimdoc.sourceforge.net/htmldoc/syntax.html#2html.vim) which can be used to convert a syntax highlighted buffer in Vim to an HTML document that, when viewed in a web browser, should look exactly the same. After using that script for a while and discovering the excellent [Exuberant Ctags](http://ctags.sourceforge.net/) I wondered *"Wouldn't it be nice to have those tags converted to hyperlinks when I publish source code as HTML?"*.
After several attempts I managed a working prototype, but it was quite rough around the edges and I didn't really have the time or interest to clean it up. Several months later I found myself with some free time and a renewed interest in Vim scripting so I decided to clean up my code and release it. If you're wondering what the result looks like, I've published [the plug-in source code](http://peterodding.com/code/vim/profile/plugin/publish.vim) as a demonstration.
## Installation & usage
*Please note that the vim-publish plug-in requires my vim-misc plug-in which is separately distributed.*
Unzip the most recent ZIP archives of the [vim-publish](http://peterodding.com/code/vim/downloads/publish.zip) and [vim-misc](http://peterodding.com/code/vim/downloads/misc.zip) plug-ins inside your Vim profile directory (usually this is `~/.vim` on UNIX and `%USERPROFILE%\vimfiles` on Windows), restart Vim and execute the command `:helptags ~/.vim/doc` (use `:helptags ~\vimfiles\doc` instead on Windows). If you prefer you can also use [Pathogen](http://www.vim.org/scripts/script.php?script_id=2332), [Vundle](https://github.com/gmarik/vundle) or a similar tool to install & update the [vim-publish](https://github.com/xolox/vim-publish) and [vim-misc](https://github.com/xolox/vim-misc) plug-ins using a local clone of the git repository.
As an example we'll publish the plug-in using itself. First create a tags file that contains entries for the files you want to publish using a shell command such as:
$ ctags -Rf ~/.publish_tags ~/.vim/
If this doesn't work because [ctags](http://vimdoc.sourceforge.net/htmldoc/tagsrch.html#ctags) isn't installed you can download it from the [Exuberant Ctags homepage](http://ctags.sourceforge.net/), or if you're running Debian/Ubuntu you can install it by executing the following shell command:
$ sudo apt-get install exuberant-ctags
The plug-in needs an up-to-date tags file so that it can create hyperlinks between the published files. Now start Vim and write a script that registers the tags file you just created and calls the function `Publish()` as follows:
:set tags=~/.publish_tags
:let sources = '/home/peter/.vim'
:let target = 'sftp://peterodding.com/code/vim/profile'
:call Publish(sources, target, [
\ 'autoload/xolox/escape.vim',
\ 'autoload/xolox/path.vim',
\ 'autoload/publish.vim',
\ 'plugin/publish.vim',
\ ])Change the `sources` and `target` variables to reflect your situation, save the script as `~/publish_test.vim` and try it in Vim by executing the command `:source ~/publish_test.vim`. If everything goes well Vim will be busy for a moment and after that you will find a bunch of syntax highlighted, interlinked HTML documents in the `target` directory!
## Publishing to a remote location (website)
As you can see from the example above it's possible to publish files directly to your web server using the [netrw plug-in](http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html#netrw) that's bundled with Vim, simply by starting the `target` path with `sftp://`. All you need for this to work is the ability to establish [SCP](http://en.wikipedia.org/wiki/Secure_copy) connections to your server. There are however two disadvantages to remote publishing over [SFTP](http://en.wikipedia.org/wiki/SSH_file_transfer_protocol):
1. The `publish.vim` plug-in can't automatically create directories on the remote side, which means you'll have to do so by hand -- very bothersome.
2. It can take a while to publish a dozen files because a new connection is established for every file that's uploaded to the remote location.
As a workaround to both of these issues the `publish.vim` plug-in will automatically use [rsync](http://en.wikipedia.org/wiki/rsync) when both the local and remote system have it installed. This cuts the time to publish to a remote location in half and enables the plug-in to automatically create directories on the remote side.
## Contact
If you have questions, bug reports, suggestions, etc. the author can be contacted at . The latest version is available at and . If you like the script please vote for it on [Vim Online](http://www.vim.org/scripts/script.php?script_id=2252).
## License
This software is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License).
© 2013 Peter Odding <>.