*yankstack.txt*     Plugin for storing and cycling through yanked text strings.

Author:  Max Brunsfeld <http://www.github.com/maxbrunsfeld>

|yankstack-introduction|    Introduction
|yankstack-installation|    Installation
|yankstack-initialization|  Initialization
|yankstack-commands|        Commands
|yankstack-configuration|   Configuration
|yankstack-changelog|       Changelog

INTRODUCTION                                    *yankstack-introduction*

[Yankstack.vim](https://github.com/maxbrunsfeld/vim-yankstack) is a
lightweight implementation of the Emacs 'kill ring' for Vim. It allows you to
yank and delete things without worrying about losing the text that you yanked
previously. It effectively turns your default register into a stack, and lets
you cycle through the items in the stack after doing a paste.

This plugin is intended to be a simpler alternative to the {Yankring} plugin
(https://github.com/chrismetcalf/vim-yankring).

INSTALLATION                                    *yankstack-installation*

I recommend loading your plugins with {Pathogen}
(https://github.com/tpope/vim-pathogen), so you can just clone this repo into
your "bundle" directory.

KEY MAPPINGS                                    *yankstack-mappings*

By default, yankstack adds only 2 key mappings, in normal and visual modes:

Mapping         Action ~
meta-p          cycle backward through your history of yanks
meta-shift-p    cycle forwards through your history of yanks

After pasting some text using |p| or |P|, you can cycle through your
yank history using these commands.

Typing either of these keys without pasting first will do a normal paste
(the same as typing `p`). This also works in insert mode.

A note about the meta key - if you're using MacVim, and you want to use
this plugin's default key bindings (or any bindings involving the `option`
key), you must :set |macmeta|.

COMMANDS                                        *yankstack-commands*

You can see the contents of the yank-stack using the :Yanks command.
Its output is similar to the |registers| command. >

  :Yanks                  (lists the contents of the yank-stack)

CONFIGURATION                                   *yankstack-configuration*

If you want to load yankstack without defining any of the default key
mappings, just add >

   let g:yankstack_map_keys = 0

to your |.vimrc| file.

Yankstack defines three plugin mappings that you can map to keys of your
choosing. The same mappings work in normal and insert modes.

Mapping Name                               Action ~
<Plug>yankstack_substitute_older_paste     cycle BACKWARDs through your history of yanks
<Plug>yankstack_substitute_newer_paste     cycle FORWARDS through your history of yanks

For example, if you wanted to define some mappings based on your |leader| key, you could do this: >

  nmap <leader>p <Plug>yankstack_substitute_older_paste
  nmap <leader>P <Plug>yankstack_substitute_newer_paste


COMPATIBILITY                                   *yankstack-compatibility*

Yankstack works by mapping the yank and paste keys to functions that do some
book-keeping before calling through to the normal yank/paste keys. You may
want to define your own mappings of the yank and paste keys. For example, I
like to map the |Y| key to "y$", so that it behaves the same as |D| and |C|.
The yankstack mappings need to happen **BEFORE** you define any such
mappings of your own. To achieve this, just call 'yankstack#setup()'in your
|vimrc|, before defining your mappings: >

  call yankstack#setup()
  nmap Y y$

CHANGELOG                                       *yankstack-changelog*

1.0.5 (2012-07-19)
  - Fix bug where on certain versions of vim, the first time you tried
    to cycle through your yanks after doing a normal paste, an extra
    paste was created.

1.0.4 (2012-07-01)
  - Make it so that yankstack-cycling keys cause a normal paste if they are
    used without pasting first. Fix stack-cycling in insert-mode.

1.0.3 (2012-05-04):
  - Fix bug when overwriting text in select mode. This was causing
    problems for snipMate users.

1.0.2 (2012-4-20):
  - Add test coverage using rspec and [vimbot](https://github.com/maxbrunsfeld/vimbot)!
  - Perfect the behavior of the yankstack when pasting over text in visual
    mode
  - Fix bug where 's' and 'S' didn't push to the yankstack

1.0.1 (2012-02-11):
  - Change default key bindings, update readme, add link to github page.

1.0.1 (2011-12-08):
  - Fix bug when displaying empty yanks.

1.0 (2011-12-04):
  - Remove unnecessary dependency on the undotree() function. Plugin should
    now work on any recent version of vim.

                                                *yankstack-license*
Copyright (c) Max Brunsfeld.  Distributed under the same terms as Vim itself.
See |license|.

 vim:tw=78:ts=8:ft=help:norl:
