QUICKSTART
This plugin adds wiki-like hypertext capabilities to Vim. You can use viki as a "minor" mode (i.e., as an add-on to any other mode) or as a full-fledged wiki mode. There is also an add-on plugin for "wikifying" latex documents by turning some latex commands into wiki names. If viki is properly configured, activating a reference to an image, a webpage etc. will view that resource in an external viewer.

WIKIS:
In case you missed out on wikis, a wiki is a simple way of creating hypertexts. In its very basic form creating a hyperlink is as easy as writing a word in CamelCase or by enclosing a word in brackets--as in [[destination]] or [-destination-]. A wiki is a simple tool to organize ideas, notes etc. See http://en.wikipedia.org/wiki/Wiki for details.

See :help vimball for details. Also, make sure to read |viki-customization|. If you have difficulties to install this plugin or if you use vim 7.0, please make sure to use the current version of vimball (vimscript #1502).

This plugin relies on the use of filetype plugins. Your .vimrc file should thus contain these lines:

set nocompatible
filetype plugin indent on
syntax on

By default, vim doesn't allow to |abandon| a modified buffer unless |hidden| is set. If get a "cannot abandon buffer"-message, please read the help on |g:vikiHide| and |abandon| to find out how to avoid this problem.

- Escape special character when loading "autoload/viki/enc_{&enc}.vim"- Support for xdg- Register 3gp as special file- viki#SetAnchorMarks(): Hide errors- :EditWrapper(): Fix slashes on windows- g:vikiIndentedPriorityLists: if 0, allow priority lists not to be indented- s:EditWrapper(): Correct filenames only if g:vikiDirSeparator == ''- s:UpdateHeadings(): Use silent! when searching for headersMD5 checksum: 918f9422bc3678ccd8c0eb71abad6f6b

- Use tlib#balloon#Register() if available- viki#Edit(): Switch to homepage only if we are in a viki-enabled buffer- Run VimEnter command immediately if !has('vim_starting')- Transcode balloon text (guess the file encoding based on the value of &fenc)- Don't rely on g:vikiEnabled to be set when loading syntax/viki.vim- Removed g:vikiEnabled variable (use g:viki#quit for checking when to quit)- Act more graciously if g:vikiHomePage is emptyMD5 checksum: 64ebd14609764e98b91f1e233e121e32

- FIX: g:vikiOpenUrlWith_ANY for Windows
- Moved definition of fold related variables to ftplugin/viki.vim
- viki_viki: Anchors in URLs can start with an upper case character
- viki#RestoreCursorPosition(): use winrestview() (reported by Marko Mahnic)

- CHANGE: Moved the definition of some variables from plugin/viki.vim to autoload/viki.vim (this could require some changes in after/* user configuration)
- viki#Balloon(), g:vikiBalloonLines: Display text from the target file in a balloon tooltip if &balloonexpr is set to viki#Balloon().
- Renamed VikiMode() to viki#Mode()
- Renamed viki#MakeName() to VikiMakeName()
- Renamed viki#Define() to VikiDefine()
- Removed g:vikiIndex (the index name has to be made explicit in VikiDefine()) in order to reduce startup time
- Set g:vikiMenuPrefix = "" in order to reduce startup time
- Registered eml as special file
- Define g:vikiSaveHistory in plugin/viki.vim (reported by Marko Mahnic)
- FIX: Handling of cursor positions (reported by Marko Mahnic)

- FIX: viki#MarkInexistentInElement() for pre 7.0.009 vim (thanks to M Brandmeyer)
- FIX: Make sure tlib is loaded even if it is installed in a different rtp-directory (thanks to M Brandmeyer)
- Added dia to g:vikiSpecialFiles
- FIX: Scrambled window when opening an url from vim (thanks A Moell)

- Promote anchors to VikiOpenSpecialProtocol().
- viki_viki: Enabled #INCLUDE
- Put the poor-man's math highlighting into syntax/texmath.vim so that
it can be included from other syntax files.
- Cascade menu of intervikis
- FIX: don't register viki names as known/unknown more than once

- VikiFolds() rev4: The text body is set to max heading level + 1 in
order to avoid lookups and thus speed-up the code.
- g:vikiPromote: Don't set viki minor modes for any files opened via
viki, unless this variable is set
- Added support for 'l' vikiFolds to the default fold expression.
- Added support for the {ref} macro (the referenced label has to be in
the same file though)
- INCOMPATIBLE CHANGE: Moved most function to autoload/viki.vim; moved
support for deplate/viki markup to vikiDeplate.vim.
- The argument of the VikiMode() has changed. (But this function
shouldn't be used anyway.)
- With g:vikiFoldMethodVersion=4 (the default), the text body is at the
level of the heading. This uses "=" for the body, which can be a problem
on slow machines. With g:vikiFoldMethodVersion=5, the body is below the
lowest heading, which can cause other problem.
- :VikiEditInVim ... edit special files in vim
- Set the default value for g:vikiCacheInexistent in order not to
surprise users with the abundance of cached data.
- Require tlib 0.15
- Use tlib#progressbar
- Improved (poor-man's) tex/math syntax highlighting
- Removed norm! commands form s:MarkInexistent().
- FIX: Wrong value for b:vikiSimpleNameAnchorIdx when simple viki names
weren't disabled.
- Optionally use hookcursormoved (vimscript #2037) for improved detection of hyperlinks to
inexistent sources. If this plugin causes difficulties, please tell me
and temporarily remove it.
- Use matchlist() instead of substitute(), which could speed things up a
little.

- The shortcuts automatically defined by VikiDefine may now take an
optional argument (the file on an interviki) (:WIKI thus is the same as
:VikiEdit WIKI:: and supports the same command-line completion)
- Read ".vikiWords" in parent directories (top-down);
g:vikiHyperWordsFiles: Changed order (read global words first)
- In .vikiWords: destination can be an interviki name (if not, it is
assumed to be a relative filename); if destination is -, the word will
be removed from the jump table; blanks in "hyperwords" will be replaced
with \s\+ in the regular expression.
- New :VikiBrowse command.
- FIX: wrong value for &comments
- FIX: need to reset filetype on color-scheme change (because of viki's
own styles)
- FIX: Caching of inexistent viki names.
- In minor mode, don't map keys that trigger a check for inexistent
links.
- Don't highlight textstyles (emphasized, typewriter) in comments.
- Removed configuration by: VikiInexistentColor(),
g:vikiInexistentColor, VikiHyperLinkColor(), g:vikiHyperLinkColor; use
g:viki_highlight_hyperlink_light, g:viki_highlight_hyperlink_dark,
g:viki_highlight_inexistent_light, g:viki_highlight_inexistent_dark
instead. By default, links are no longer made bold.
- The new default fold expression (g:vikiFoldMethodVersion=4) support
only hH folds (normal and inverse headings based; see g:vikiFolds).
Previous fold methods can be used by setting g:vikiFoldMethodVersion.

- Require tlib >= 0.9
- FIX: Use absolute file names when editing a local file (avoid problem
when opening a file in a different window with a different CWD).
- New folding routine. Use the old folding method by setting
g:vikiFoldMethodVersion to 1.

- Got rid of multvals & genutils dependencies (use vim7 lists instead)
- New dependency: tlib.vim (vimscript #1863)
- INCOMPATIBLE CHANGE: The format of g:vikiMapFunctionality has changed.
- INCOMPATIBLE CHANGE: g:vikiSpecialFiles is now a list!
- Viki now has a special #Files region that can be automatically
updated. This way we can start thinking about using viki for as
project/file management tool. This is for vim only and not supported yet
in deplate. New related maps & commands: :VikiFilesUpdate (<LL>vu),
:VikiFilesUpdateAll (<LL>vU), :VikiFilesCmd, :VikiFilesCall,
:VikiFilesExec (<LL>vx), and VikiFileExec.
- VikiGoParent() (mapped to <LL>v<bs> or <LL>v<up>): If b:vikiParent is
defined, open this viki name, otherwise follow the backlink.
- New :VikiEditTab command.
- Map <LL>vt to open in tab.
- Map <LL>v<left> to open go back.
- Keys listed in g:vikiMapQParaKeys are now mapped to
s:VikiMarkInexistentInParagraphVisible() which checks only the visible
area and thus avoids scrolling.
- Highlight lines containing blanks (which vim doesn't treat as
paragraph separators)
- When following a link, check if it is an special viki name before
assuming it's a simple one.
- Map [[, ]], [], ][
- If an interviki has an index file, a viki name like [[INTERVIKI::]]
will now open the index file. In order to browse the directory, use
[[INTERVIKI::.]]. If no index file is defined, the directory will be
opened either way.
- Set the default value of g:vikiFeedbackMin to &lines.
- Added ws as special files to be opened with :WsOpen if existent.
- Replaced most occurences of <SID> with s:
- Use tlib#InputList() for selecting back references.
- g:vikiOpenFileWith_ANY now uses g:netrw_browsex_viewer by default.
- CHANGE: g:vikiSaveHistory: We now rely on viminfo's "!" option to save
back-references.
- FIX: VikiEdit now works properly with protocols that are to be opened
with an external viewer
- FIX: VikiEdit completion, which is more usable now

- Intervikis can now be defined as function ('*Function("%s")', this
breaks conversion via deplate) or format string ('%/foo/%s/bar', not yet
supported by deplate)
- Task lists take optional tags, eg #A [tag] foo; they may also be
tagged with the letters G-Z, which are highlighted as general task (not
supported by deplate)
- Automatically set marks for labels prefixed with "m" (eg #ma -> 'a,
#mB -> 'B)
- Two new g:vikiNameTypes: w = (Hyper)Words, f = File names in cwd as
hyperwords (experimental, not implemented in deplate)
- In extended viki names: add the suffix only if the destination hasn't
got one
- A buffer local b:vikiOpenInWindow allows links to be redirected to a
certain window (ie, if b:vikiOpenInWindow = 2, pressing <c-cr> behaves
like <LocalLeader>v2); this is useful if you use some kind of
directory/catalog metafile; possible values: absolute number, +/-
relative number, "last"
- Switched back to old regexp for simple names in order to avoid
highlighting of names like LaTeX
- VikiEdit opens the homepage only if b:vikiFamily is set
- Map <LocalLeader>vF to <LocalLeader>vn<LocalLeader>vf
- Improved syntax for (nested) macros
- Set &suffixesadd so that you can use vim's own gf in some situations
- SYNTAX: Allow empty lines as region delimiters (deplate 0.8.1)
- FIX: simple viki names with anchors where not recognised
- FIX: don't mark simple (inter)viki names as inexistent that expand to
links matching g:vikiSpecialProtocols
- FIX: file names containing %
- FIX: added a patch (VikiMarkInexistentInElement) by Kevin Kleinfelter
for compatibility with an unpatched vim70 (untested)
- FIX: disabling simple names (s) also properly disables the name types:
Scwf

- Pseudo anchors (not supported by deplate): jump to a line number, e.g. [[file#l=10]] or [[file#line=10]]; find an regexp, e.g. [[file#rx=\\d]]; execute some vim code, e.g. [[file#vim=call Whatever()]]; you can also define your own handlers: VikiAnchor_{type}(arg)
- g:vikiFolds: new 'b' flag: the body has a higher level than all
headings (gives you some kind of outliner experience; the default value
for g:vikiFolds was changed to 'h')
- FIX: VikiFindAnchor didn't work properly in some situations
- FIX: Escape blanks when following a link (this could cause problems in
some situations, not always)
- FIX: Don't try to mark inexistent links when pressing enter if the current
line is empty.
- FIX: Restore vertical cursor position in window after looking for
inexistent links.
- FIX: Backslashes got lost in some situations.

- Register mp3, ogg and some other multimedia related suffixes as
special files
- Add a menu of Intervikis if g:vikiMenuPrefix is != ''
- g:vikiMapKeys can contain "\n" and " " (supplement g:vikiMapKeys with
the variables g:vikiMapQParaKeys and g:vikiMapBeforeKeys)
- FIX: <SID>IsSupportedType
- FIX: Only the first inexistent link in a line was highlighted
- FIX: Set &buflisted when editing an existing buffer
- FIX: VikiDefine: Non-viki index names weren't quoted
- FIX: In "minor mode", vikiFamily wasn't correctly set in some
situations; other problems related to b:vikiFamily
- FIX: AnyWord works again
- Removed: VikiMinorModeMaybe
- VikiDefine now takes an optional fourth argument (an index file;
default=Index) and automatically creates a vim command with the name of
the interviki that opens this index file

- Fold lists too (see also g:vikiFolds)
- Allow interviki names in extended viki names (e.g.,
[[WIKI::WikiName][Display Name]])
- Renamed <SID>GetSimpleRx4SimpleWikiName() to
VikiGetSimpleRx4SimpleWikiName() (required in some occasions; increased the
version number so that we can check against it)
- Fix: Problem with urls/fnames containing '!' and other special characters
(which now have to be escaped by the handler; so if you defined a custom
handler, e.g. g:vikiOpenFileWith_ANY, please adapt its definition)
- Fix: VikiEdit! opens the homepage only when b:vikiEnabled is defined in the
current buffer (we assume that for the homepage the global configuration is in
effect)
- Fix: Problem when g:vikiMarkInexistent was false/0
- Fix: Removed \c from the regular expression for extended names, which caused
FindNext to malfunction and caused a serious slowdown when matching of
bad/unknown links
- Fix: Re-set viki minor mode after entering a buffer
- The state argument in Viki(Minor)Mode is now mostly ignored
- Fix: A simple name's anchor was ignored

- g:vikiHomePage: If you call VikiEdit! (with "bang"), the homepage is opened
first so that its customizations are in effect. Also, if you call :VikiHome or
:VikiEdit *, the homepage is opened.
- basic highlighting & indentation of emacs-planner style task lists (sort of)
- command line completion for :VikiEdit
- new command/function VikiDefine for defining intervikis
- added <LocalLeader>ve map for :VikiEdit
- fixed problem in VikiEdit (when the cursor was on a valid viki link, the
text argument was ignored)
- fixed opening special files/urls in a designated window
- fixed highlighting of comments
- vikiLowerCharacters and vikiUpperCharacters can be buffer local
- fixed problem when an url contained an ampersand
- fixed error message when the &hidden option wasn't set (see g:vikiHide)

- file type URLs (file://) are now treated like special files
- indent: if g:vikiIndentDesc is '::', align a definition's description to the
first non-blank position after the '::' separator
- b:vikiDisableType
- Put AnyWord-related stuff into a file of its own.
- indentation for notices (!!!, ??? etc.)
- When creating a new file by following a link, the desired window number was ignored
- (VikiOpenSpecialFile) Escape blanks in the filename
- Set &include and &define (ftplugin)
- Set g:vikiFolds to '' to avoid using Headings for folds (which may cause a
major slowdown on slower machines)
- renamed <SID>DecodeFileUrl(dest) to VikiDecomposeUrl()
- fixed problem with table highlighting

- new command: VikiEdit NAME ... allows editing of arbitrary viki names (also understands extended and interviki formats)
- support for some regions/commands/macros: #INC/#INCLUDE, #IMG, #Img (requires an id to be defined), {img}
- b:vikiInverseFold: Inverse folding of subsections
- g:vikiFreeMarker: Search for the plain anchor text if no explicitly marked anchor was found.
- setting the b:vikiNoSimpleNames to true prevents viki from recognizing simple viki names
- made some script local functions global so that it should be easier to integrate viki with other plugins
- fixed moving cursor on <SID>VikiMarkInexistent()
- fixed typo: b:VikiEnabled, which should be b:vikiEnabled (thanks to Ned Konz)