/vim-librarian.vim

re-callable sets of bookmarks

Primary LanguageVim ScriptMIT LicenseMIT

INSTALLATION

There are several ways to install the plugin. The recommended one is by using Tim Pope's pathogen (http://www.vim.org/scripts/script.php?script_id=2332). In that case, you can clone the plugin's git repository like so:

git clone git://github.com/malkomalko/vim-librarian.vim.git ~/.vim/bundle/librarian

If your vim configuration is under git version control, you could also set up the repository as a submodule, which would allow you to update more easily. The command is (provided you're in ~/.vim):

git submodule add git://github.com/malkomalko/vim-librarian.vim.git bundle/librarian

Another way is to simply copy all the essential directories inside the ~/.vim directory: plugin, autoload, doc.

Thanks to AndrewRadev's https://github.com/AndrewRadev/simple_bookmarks.vim which this is a fork of.

USAGE

This plugin differs from Andrew's simple_bookmarks in that you may bookmark multiple locations with the same bookmark name, allowing for you to restore sets of bookmarks.


:VLBookmark *bookmark*

command accepts a name to store the bookmark. It will save the current file and the cursor position to .vim_librarian in your current working directory if it can find a .git folder OR ~/.vim_librarian.


:VLOpenBookmarks *bookmark*

will save and close all open buffers and then open up every file for giving you a clean slate to edit the part of the application you like.


:VLQFOpenBookmarksFor *bookmark*

will open a quickfix window with the bookmarks allowing you jump to a bookmark manually.


:VLQFOpenBookmarks

will open up all your bookmarks in a quickfix window.


:VLDelBookmark *bookmark*

highlight the current bookmarked line and type in this tab to remove it from the library.


Note: all commands accepting a name can be tab completed.

Note that bookmarks should be synchronized between vim instances. Anytime you add a mark in one vim instance, it should be available in all others. In practice, this is achieved by simply reading and writing the whole file on each update. I have yet to experiment to find out if there are any performance issues or race conditions.

SUGGESTED MAPPINGS

nnoremap <leader>ka :VLBookmark<space>                                          
nnoremap <leader>kd :VLDelBookmark<space>                                       
nnoremap <leader>ke :execute "split" g:librarian_filename<cr>                   
nnoremap <leader>kf :VLQFOpenBookmarksFor<space>                                
nnoremap <leader>kl :VLQFOpenBookmarks<cr>                                      
nnoremap <leader>ko :VLOpenBookmarks<space>

have fun :D