{"id":13897521,"url":"https://github.com/maxbrunsfeld/vim-yankstack","last_synced_at":"2025-04-05T06:08:30.829Z","repository":{"id":1712589,"uuid":"2442202","full_name":"maxbrunsfeld/vim-yankstack","owner":"maxbrunsfeld","description":"A lightweight implementation of emacs's kill-ring for vim","archived":false,"fork":false,"pushed_at":"2024-01-27T22:53:38.000Z","size":477,"stargazers_count":441,"open_issues_count":18,"forks_count":28,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T05:07:57.504Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxbrunsfeld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-09-23T05:43:04.000Z","updated_at":"2025-02-26T21:14:05.000Z","dependencies_parsed_at":"2024-01-06T23:57:29.860Z","dependency_job_id":"3bacfde5-d11f-42ad-ab13-071d39e2035b","html_url":"https://github.com/maxbrunsfeld/vim-yankstack","commit_stats":{"total_commits":141,"total_committers":8,"mean_commits":17.625,"dds":0.07801418439716312,"last_synced_commit":"157a659c1b101c899935d961774fb5c8f0775370"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbrunsfeld%2Fvim-yankstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbrunsfeld%2Fvim-yankstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbrunsfeld%2Fvim-yankstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbrunsfeld%2Fvim-yankstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbrunsfeld","download_url":"https://codeload.github.com/maxbrunsfeld/vim-yankstack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294539,"owners_count":20915340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T18:03:39.753Z","updated_at":"2025-04-05T06:08:30.808Z","avatar_url":"https://github.com/maxbrunsfeld.png","language":"Ruby","funding_links":[],"categories":["Tools","Ruby","Included Plugins"],"sub_categories":["Editing","Install for multiple users"],"readme":"yankstack.vim\n=============\n\nAuthor:  Max Brunsfeld \u003chttp://www.github.com/maxbrunsfeld\u003e\n\n[Yankstack.vim](https://github.com/maxbrunsfeld/vim-yankstack) is a\nlightweight implementation of the Emacs 'kill ring' for Vim.  It allows you to\nyank and delete things without worrying about losing the text that you yanked\npreviously. It effectively turns your default register into a stack, and lets\nyou cycle through the items in the stack after doing a paste.\n\nThis plugin is intended to be a simpler alternative to the\n[yankring](https://github.com/chrismetcalf/vim-yankring) plugin. It has a fairly\ncomplete [test suite](https://github.com/maxbrunsfeld/vim-yankstack/blob/master/spec/yankstack/yankstack_spec.rb)\nbased on [rspec](https://www.relishapp.com/rspec)\nand [vimbot](https://github.com/maxbrunsfeld/vimbot).\n\n## Installation ##\n\nI recommend loading your plugins with\n[vundle](https://github.com/gmarik/vundle) or \n[pathogen](https://github.com/tpope/vim-pathogen).\n\n## Key Mappings ##\n\nBy default, yankstack adds only 2 key bindings, in normal and visual modes:\n\n- ```meta-p```  - cycle *backward* through your history of yanks\n- ```meta-shift-p```  - cycle *forwards* through your history of yanks\n\nAfter pasting some text using ```p``` or ```P```, you can cycle through your\nyank history using these commands. Typing either of these keys *without* pasting first \nwill do a normal paste (the same as typing `p`). This also works in insert mode.\n\n### the 'meta' key\n\nIf you're using MacVim, and you want to use\nthis plugin's default key bindings (or any bindings involving the `option`\nkey), you must ```:set macmeta```. On Linux, you may have issues with the meta key if your terminal is running in 7bit mode.\nInstructions for dealing with this can be found on the [wiki](https://github.com/maxbrunsfeld/vim-yankstack/wiki/Linux-terminal-configurations-for-correct-meta-key-handling)\n\n## Commands ##\n\nYou can see the contents of the yank-stack using the ```:Yanks``` command.\nIts output is similar to the ```:registers``` command.\n\n## Configuration ##\n\nYankstack defines two plugin mappings that you can map to keys of your choosing.\nThe same mappings work in normal and insert modes.\n\n- ```\u003cPlug\u003eyankstack_substitute_older_paste``` - cycle backwards through your history of yanks\n- ```\u003cPlug\u003eyankstack_substitute_newer_paste``` - cycle forwards through your history of yanks\n\nFor example, if you wanted to define some mappings based on your 'leader' key,\nyou could do this:\n\n```\nnmap \u003cleader\u003ep \u003cPlug\u003eyankstack_substitute_older_paste\nnmap \u003cleader\u003eP \u003cPlug\u003eyankstack_substitute_newer_paste\n```\n\nAlso, if you want to load yankstack without the default key mappings, just\n``` let g:yankstack_map_keys = 0 ```\nin your .vimrc file.\n\n## Compatibility ##\n\nYankstack works by mapping the yank and paste keys to functions that do some\nbook-keeping before calling through to the normal yank/paste keys. You may want\nto define your own mappings of the yank and paste keys. For example, I like to\nmap the ```Y``` key to ```y$```, so that it behaves the same as ```D``` and\n```C```. The yankstack mappings need to happen **before** you define any such\nmappings of your own. To achieve this, just call ```yankstack#setup()``` in\nyour vimrc, before defining your mappings:\n\n```\ncall yankstack#setup()\nnmap Y y$\n\" other mappings involving y, d, c, etc\n```\n\nYou can also prevent certain keys from being remapped by setting the `g:yankstack_yank_keys`\nto the keys of your choosing. For example, if you only want Yankstack to remap `y` and `d`:\n\n```\nlet g:yankstack_yank_keys = ['y', 'd']\n```\n\n## Contributing, Feedback ##\n\nI'd enjoy hearing anybody's feedback on yankstack, and welcome any contribution.\nCheck it out on [github](https://github.com/maxbrunsfeld/vim-yankstack)!\n\n## Changelog ##\n\n\n### 1.0.6 (2014-08-04)\n  - Allow customization of the list of keys to be remapped.\n\n### 1.0.5 (2012-07-19)\n  - Fix bug where on certain versions of vim, the first time you tried\n    to cycle through your yanks after doing a normal paste, an extra\n    paste was created.\n\n### 1.0.4 (2012-07-01)\n  - Make it so that yankstack-cycling keys cause a normal paste if they are\n    used without pasting first. Fix stack-cycling in insert-mode.\n\n### 1.0.3 (2012-05-04):\n  - Fix bug when overwriting text in select mode. This was causing\n    problems for snipMate users.\n\n### 1.0.2 (2012-4-20):\n  - Add test coverage using rspec and [vimbot](https://github.com/maxbrunsfeld/vimbot)!\n  - Perfect the behavior of the yankstack when pasting over text in visual\n    mode\n  - Fix bug where 's' and 'S' didn't push to the yankstack\n\n### 1.0.1 (2012-2-11):\n  - Change default key bindings, update readme, add link to github page.\n\n### 1.0.1 (2011-12-08):\n  - Fix bug when displaying empty yanks.\n\n### 1.0.0 (2011-12-04):\n  - Remove unnecessary dependency on the undotree() function. Plugin should\n    now work on any recent version of vim.\n\n## License ##\nCopyright (c) Max Brunsfeld.  Distributed under the same terms as Vim itself.\nSee the vim license.\n\n vim:tw=78:ts=8:ft=help:norl:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbrunsfeld%2Fvim-yankstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbrunsfeld%2Fvim-yankstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbrunsfeld%2Fvim-yankstack/lists"}