There are no reviews yet. Be the first to send feedback to the community and the maintainers!
This is a mirror of http://www.vim.org/scripts/script.php?script_id=1234 Vim already maintains a list of numbered registers containing the last 9 deletes. These previous deletes can be referenced using [register]p, so "1p will paste the last delete, "2p the 2nd last delete. For more information see |quote_number|. Vim does not provide any mechanism to reference previous yanked, deleted or changed text. In Emacs this feature is called the "kill ring". The YankRing plugin allows the user to configure the number of yanked, deleted and changed text. A split window can be used to choose which element(s) from the yankring you wish to paste. Alternately after text has been pasted (using p), it can be replaced with a previous value from the yankring with a single key stroke. The captured text is stored in a file (location configurable) and is instantly available (also configurable) to any other instance of Vim also running on the same machine. This can especially be useful on *nix machines when you are sshed in running Vim in multiple terminals. Storing the capture text in a file allows the text to be shared easily between multiple instances of Vim running in X, Windows, SSH or Screen. A tutorial is included to take you through the various features of the plugin. After you have installed the plugin just run: :h yankring.txt :h yankring-tutorial The yankring can be interacted with in two ways: a GUI or via maps. The yankring supports all of Vim motions and text-objects. There are very few new keystrokes the user must learn. One keystroke to open the yankring to choose which item to paste is all that is required. It has been designed work seamlessly with Vim All the mappings and behaviours are configurable via global variables you can optionally specify in your vimrc. The plugin can be toggled on and off, and supports: Ranges Registers Counts All visual modes (characterwise, linewise and blockwise) All motions All text-objects Examples: yy - Adds the current line to the yankring. dd - Adds the current line to the yankring and deletes it. 5yw - Adds 5 words to the yankring. "ade - Deletes the word, and puts it into both the yankring and the "a register. cw - Changes the word and stores the previous value in the yankring. 10"zyy - Places 10 lines into both the yankring and the "z register. :1,4YRYankRange - Similar to 1,4y :3,$YRDeleteRange - Similar to 3,$d If you wish to paste previous values from the yankring and do not want to use the GUI, there are only two additional maps you must learn (these are configurable via your vimrc if needed). The purpose of the yankring is to gain access to previously yanked (or deleted) elements. The YRReplace command will replace the previously pasted text with a different entry from the yankring. By default, I choose <C-P> (P for previous) to replace the text last pasted while moving backwards through your previous text from the yankring and <C-N> (N for next) to replace the previous paste while moving forward through the yankring. A separate buffer window to allow you to easily interact with the contents of the yankring. The window is similar to many other plugins: TagList, SelectBuf and so on. You can use the mouse or standard Vim keys (p, gp, P, ...). Visual mode is used to support counts, pasting multiple times and reversing the order of pasted elements. The GUI significantly simplifies your interaction with the yankring for basic functions. But often it useful to take advantage of the more powerful features of the yankring. Here is a small section from the tutorial (using maps) so you have some idea of how you interact with the plugin gaining access to previous yanks. Using the GUI for basic operations is self explanatory. :h yankring-tutorial ---- Partial Tutorial ---- To understand how to use the yankring, the following example should demonstrate the various features. Assume we have this buffer: one two three four five Now yank (yy) each line separately starting at line 1. Display the contents of the yankring. :YRShow --- YankRing --- Elem Content 5 five^@ 4 four^@ 3 three^@ 2 two^@ 1 one^@ Since we yanked the text starting at line 1 and finishing at line 5, the most current yankring element is the last one, the contents of line 5. "five^@" is displayed, the "^@" is a newline character (since we issued a "yy"). Now, go to the end of the file and press p. The resulting buffer appears as: one two three four five five Now press <C-P> to move backwards through the yankring, this results in: one two three four five four Now press 2<C-P>. This would be the same as pressing <C-P> two times in a row. This results in: one two three four five two Now press <C-N> to move forwards through the yankring, this results in: one two three four five three You can create a map to display a buffer displaying the yankring's contents: nnoremap <silent> <F11> :YRShow<CR> YRShow creates a new split buffer (you can configure where it should be and it's size) :YRShow AutoClose=1;Cmds:<enter>,[g]p,[p]P,d,r,a,u,q,<space>;Help=? --- YankRing --- Elem Content 3 three^@ 2 two^@ 1 one^@ 5 five^@ 4 four^@ You can simply hit "p", <enter>, double click on an item and it will be pasted into your document. The window will automatically close (by default) after you have made a choice. The element will be pasted into the correct buffer if you have multiple split windows. You can paste multiple items using visual mode. You can also remove items from the yankring. ---- Partial Tutorial ---- Concentrating on the last line of the buffer you could see how we were able to replace our pasted text with lines yanked previously. This is a feature Vim only has for deletes, and is limited to 9. This plugin enables the same features for both yanks, deletes and changes, the size of the history is configurable.
taglist.vim
Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)dbext.vim
Provides database access to many dbms (Oracle, Sybase, Microsoft, MySQL, DBI,..)a.vim
Alternate Files quickly (.c --> .h etc)DrawIt
Ascii drawing plugin: lines, ellipses, arrows, fills, and more!ReplaceWithRegister
Replace text with the contents of a register.Conque-GDB
GDB command line interface and terminal emulator in (G)Vim.AutoComplPop
Automatically opens popup menu for completionsFuzzyFinder
buffer/file/command/tag/etc explorer with fuzzy matchingConque-Shell
Run interactive commands inside a Vim buffervim-auto-save
Automatically save changes to diskvimwiki
Personal Wiki for VimZoomWin
Zoom in/out of windows (toggle between one window and multi-window)VimClojure
A filetype, syntax and indent plugin for Clojureparedit.vim
Paredit Mode: Structured Editing of Lisp S-expressionsDoxygenToolkit.vim
Simplify Doxygen documentation in C, C++, Python.c.vim
C/C++ IDE -- Write and run programs. Insert statements, idioms, comments etc.mru.vim
Plugin to manage Most Recently Used (MRU) filesmatchit.zip
extended % matching for HTML, LaTeX, and many other languagesargtextobj.vim
Text-object like motion for argumentsAlign
Help folks to align text, eqns, declarations, tables, etcUltiSnips
The ultimate snippet solution for python enabled Vim.Vim-R-plugin
Plugin to work with Rslimv.vim
SLIME-like Lisp and Clojure REPL inside Vim with Profiling, Hyperspec, Pareditbufexplorer.zip
Buffer Explorer / BrowserTaskList.vim
Eclipse like task listVimIM
Vim Input Method -- Vim δΈζθΎε ₯ζ³VOoM
Vim Outliner of Markers -- two-pane outliner and related utilitiesSQLUtilities
SQL utilities - Formatting, generate - columns lists, procedures for databasesbash-support.vim
BASH IDE -- Write and run BASH-scripts using menus and hotkeys.netrw.vim
Network oriented reading, writing, and browsing (keywords: netrw ftp scp)OmniCppComplete
C/C++ omni-completion with ctags databaseLanguageTool
Grammar checker for English, French, German (etc.) in VimPydiction
Tab-complete your Python codeTwitVim
Twitter client for Vimxoria256.vim
Finely tuned soft gamma, 256 colors, dark background, gvim == vimindentpython.vim
An alternative indentation script for pythonutl.vim
Univeral Text Linking - Execute URLs, footnotes, open emails, organize ideasfcitx.vim
keep and restore fcitx state when leaving/re-entering insert modepeaksea
Refined color, contains both gui and cterm256 for dark and light backgroundSyntaxRange
Define a different filetype syntax on regions of a buffer.L9
Vim-script libraryAnsiEsc.vim
ansi escape sequences concealed, but highlighted as specified (conceal)LargeFile
Edit large files quickly (keywords: large huge speed)JavaScript-Indent
Javascript indenter (HTML indent is included)tComment
An extensible & universal comment plugin that also handles embedded filetypesThe-NERD-tree
A tree explorer plugin for navigating the filesystemnginx.vim
initial versioncamelcasemotion
Motion through CamelCaseWords and underscore_notation.ShowMarks
Visually shows the location of marks.closetag.vim
Functions and mappings to close open HTML/XML tagsBufOnly.vim
Delete all the buffers except the current/named bufferbufkill.vim
Unload/delete/wipe a buffer, keep its window(s), display last accessed buffer(s)vcscommand.vim
CVS/SVN/SVK/git/hg/bzr integration pluginAuto-Pairs
Insert or delete brackets, parens, quotes in pair.AutoClose
Inserts matching bracket, paren, brace or quoteGundo
Visualize your undo tree.grep.vim
Grep search tools integration with Vimjavacomplete
Omni Completion for JAVASearchComplete
Tab completion of words inside of a search ('/')VisIncr
Produce increasing/decreasing columns of numbers, dates, or daynamesEasyGrep
Fast and Easy Find and Replace Across Multiple Filespep8
Check your python source files with PEP8wombat256.vim
Wombat for 256 color xtermssessionman.vim
Vim session managercscope.vim
create cscope database and connect to existing proper database automatically.restore_view.vim
A plugin for automatically restoring file's cursor position and foldingMark--Karkat
Highlight several words in different colors simultaneously. (#1238 continued)loremipsum
A dummy text generatorScrollColors
Colorsheme Scroller, Chooser, and Browsergtags.vim
Integrates GNU GLOBAL source code tag system with VIM.perl-support.vim
Perl IDE -- Write and run Perl-scripts using menus and hotkeys.google.vim
Indent file for Google C++ Coding Stylewinmanager
A windows style IDE for Vim 6.0gitignore
Set 'wildignore' from ./.gitignoresudo.vim
Allows one to edit a file with prevledges from an unprivledged session.HTML-AutoCloseTag
Automatically closes HTML tags once you finish typing them.greplace.vim
Replace a pattern across multiple files interactivelyCSApprox
Make gvim-only colorschemes work transparently in terminal vimphpfolding.vim
Automatic folding of PHP functions, classes,.. (also folds related PhpDoc)SyntaxComplete
OMNI Completion based on the current syntax highlightsvis
Extended Visual Mode Commands, Substitutes, and SearchessnipMate
TextMate-style snippets for Vimworkflowish
ToDo manager plugin inspired by workflowy.comVimRepress
Plugin for managing wordpress blog from Vim.Lucius
Dark and light color scheme (GUI and 256 color terminal)SQLComplete.vim
SQLComplete is a SQL code completion system using the omnifunc frameworkWombat
Dark gray color scheme sharing some similarities with DesertDirDiff.vim
A plugin to diff and merge two directories recursively.AutoTag
Updates entries in a tags file automatically when savingTagHighlight
Extra highlighting of typedefs, enumerations etc (based on ctags)Gist.vim
vimscript for gistjsbeautify
a javascript source code formatterThe-NERD-Commenter
A plugin that allows for easy commenting of code for many filetypes.marvim
Macro Persistent Storage and Shareable Repository for VIMPython-mode-klen
python modescratch.vim
Plugin to create and use a scratch Vim bufferEmmet.vim
vim plugins for HTML and CSS hi-speed coding.IndexedSearch
shows 'Nth match out of M' at every search (index of match+total # matches)errormarker.vim
Highlights and sets error markers for lines with compile errorsTeTrIs.vim
A tetris game in pure vimLove Open Source and this site? Check out how you can help us