{"id":17678011,"url":"https://github.com/mutewinter/unconditionalpaste","last_synced_at":"2026-01-30T10:30:24.646Z","repository":{"id":5960568,"uuid":"7181843","full_name":"mutewinter/UnconditionalPaste","owner":"mutewinter","description":"A clone of UnconditionalPaste from http://www.vim.org/scripts/script.php?script_id=3355 since it's not updated on GitHub yet.","archived":false,"fork":false,"pushed_at":"2021-07-31T16:06:30.000Z","size":9,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-30T18:12:38.291Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Vim script","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/mutewinter.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}},"created_at":"2012-12-15T17:17:05.000Z","updated_at":"2021-07-31T16:06:32.000Z","dependencies_parsed_at":"2022-07-21T12:03:53.600Z","dependency_job_id":null,"html_url":"https://github.com/mutewinter/UnconditionalPaste","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mutewinter/UnconditionalPaste","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutewinter%2FUnconditionalPaste","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutewinter%2FUnconditionalPaste/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutewinter%2FUnconditionalPaste/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutewinter%2FUnconditionalPaste/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mutewinter","download_url":"https://codeload.github.com/mutewinter/UnconditionalPaste/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutewinter%2FUnconditionalPaste/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260717554,"owners_count":23051676,"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-10-24T08:03:25.118Z","updated_at":"2026-01-30T10:30:24.605Z","avatar_url":"https://github.com/mutewinter.png","language":"Vim script","readme":"# Description\n\n_Note: this is a clone of http://www.vim.org/scripts/script.php?script_id=3355\nsince it hasn't made it to GitHub yet._\n\nIf you're like me, you occasionally do a linewise yank, and then want to\ninsert that yanked text in the middle of some other line (or vice versa).\nThe mappings defined by this plugin will allow you to do a character-, line-,\nor block-wise paste no matter how you yanked the text, both from normal and\ninsert mode.\n\nOften, the register contents aren't quite in the form you need them. Maybe you\nneed to convert yanked lines to comma-separated arguments, maybe join the\nlines with another separator, maybe the reverse: un-joining a single line on\nsome pattern to yield multiple lines. Though you can do the manipulation after\npasting, this plugin offers shortcut mappings for these actions, which are\nespecially helpful when you need to repeat the paste multiple times.\n\n# Source\n\nBased on vimtip #1199 by cory,\n    http://vim.wikia.com/wiki/Unconditional_linewise_or_characterwise_paste\n\n# Related works\n\n- whitespaste.vim (vimscript #4351) automatically removes blank lines around\n  linewise contents, and condenses inner lines to a single one. By default, it\n  remaps p / P, but this can be changed.\n\n# Usage\n\n```\n[\"x]gcp, [\"x]gcP        Paste characterwise (newline characters and indent are\n                        flattened to spaces) [count] times.\n\n[\"x]glp, [\"x]glP        Paste linewise (even if yanked text is not a complete\n                        line) [count] times.\n\n[\"x]gbp, [\"x]gbP        Paste blockwise (inserting multiple lines in-place,\n                        pushing existing text further to the right) [count]\n                        times.\n\n[\"x]g,p, [\"x]g,P        Paste characterwise, with each line delimited by \", \"\n                        instead of the newline (and indent).\n\n[\"x]gqp, [\"x]gqP        Query for a separator string, then paste\n                        characterwise, with each line delimited by it.\n\n[\"x]gQp, [\"x]gQP        Paste characterwise, with each line delimited by the\n                        previously queried (gqp) separator string.\n\n[\"x]gup, [\"x]guP        Query for a separator pattern, un-join the register\n                        contents, then paste linewise.\n\n[\"x]gUp, [\"x]gUP        Un-join the register contents on the previously\n                        queried (gup) separator pattern, then paste\n                        linewise.\n\nCTRL-R CTRL-C {0-9a-z\"%#*+/:.-}\n                        Insert the contents of a register characterwise\n                        (newline characters and indent are flattened to\n                        spaces).\n                        If you have options like 'textwidth', 'formatoptions',\n                        or 'autoindent' set, this will influence what will be\n                        inserted.\nCTRL-R , {0-9a-z\"%#*+/:.-}\n                        Insert the contents of a register characterwise, with\n                        each line delimited by \", \" instead of the newline\n                        (and indent).\nCTRL-R CTRL-Q {0-9a-z\"%#*+/:.-}\n                        Query for a separator string, then insert the contents\n                        of a register characterwise, with each line delimited\n                        by it.\nCTRL-R CTRL-Q CTRL-Q {0-9a-z\"%#*+/:.-}\n                        Insert the contents of a register characterwise, with\n                        each line delimited by the previously queried (gqp,\n                        i_CTRL-R_CTRL-Q) separator string.\nCTRL-R CTRL-U {0-9a-z\"%#*+/:.-}\n                        Query for a separator pattern, un-join the contents of\n                        a register, then insert it linewise.\nCTRL-R CTRL-U CTRL-U {0-9a-z\"%#*+/:.-}\n                        Un-join the contents of\n                        a register on the previously queried (gup,\n                        i_CTRL_R_CTRL-U) pattern, then insert it linewise.\n```\n\n# Installation\n\nThis script is packaged as a vimball. If you have the \"gunzip\" decompressor\nin your PATH, simply edit the *.vmb.gz package in Vim; otherwise, decompress\nthe archive first, e.g. using WinZip. Inside Vim, install by sourcing the\nvimball or via the :UseVimball command.\n    vim UnconditionalPaste*.vmb.gz\n    :so %\nTo uninstall, use the :RmVimball command.\n\n# Dependencies\n\n- Requires Vim 7.0 or higher.\n- repeat.vim (vimscript #2136) plugin (optional)\n\n# Configuration\n\nfor a permanent configuration, put the following commands into your vimrc:\n\nThe default separator string for the gQp and i_CTRL-R_CTRL-Q_CTRL-Q\nmappings is a \u003cTab\u003e character; to preset another one (it will be overridden by\ngqp and i_CTRL-R_CTRL-Q), use:\n    let g:UnconditionalPaste_JoinSeparator = 'text'\n\nThe default separator pattern for the gUp and i_CTRL-R_CTRL-U_CTRL-U\nmappings matches any whitespace and newlines (i.e. it will get rid of empty\nlines); to preset another one (it will be overridden by gup and\ni_CTRL-R_CTRL-U), use:\n    let g:UnconditionalPaste_UnjoinSeparatorPattern = '-'\n\nIf you want to use different mappings (e.g. starting with \u003cLeader\u003e), map your\nkeys to the \u003cPlug\u003eUnconditionalPaste... mapping targets _before_ sourcing this\nscript (e.g. in your vimrc):\n\n```vim\n    nmap \u003cLeader\u003ePc \u003cPlug\u003eUnconditionalPasteCharBefore\n    nmap \u003cLeader\u003epc \u003cPlug\u003eUnconditionalPasteCharAfter\n    nmap \u003cLeader\u003ePl \u003cPlug\u003eUnconditionalPasteLineBefore\n    nmap \u003cLeader\u003epl \u003cPlug\u003eUnconditionalPasteLineAfter\n    nmap \u003cLeader\u003ePb \u003cPlug\u003eUnconditionalPasteBlockBefore\n    nmap \u003cLeader\u003epb \u003cPlug\u003eUnconditionalPasteBlockAfter\n    nmap \u003cLeader\u003eP, \u003cPlug\u003eUnconditionalPasteCommaBefore\n    nmap \u003cLeader\u003ep, \u003cPlug\u003eUnconditionalPasteCommaAfter\n    nmap \u003cLeader\u003ePq \u003cPlug\u003eUnconditionalPasteQueriedBefore\n    nmap \u003cLeader\u003epq \u003cPlug\u003eUnconditionalPasteQueriedAfter\n    nmap \u003cLeader\u003ePQ \u003cPlug\u003eUnconditionalPasteRecallQueriedBefore\n    nmap \u003cLeader\u003epQ \u003cPlug\u003eUnconditionalPasteRecallQueriedAfter\n    nmap \u003cLeader\u003ePu \u003cPlug\u003eUnconditionalPasteUnjoinBefore\n    nmap \u003cLeader\u003epu \u003cPlug\u003eUnconditionalPasteUnjoinAfter\n    nmap \u003cLeader\u003ePU \u003cPlug\u003eUnconditionalPasteRecallUnjoinBefore\n    nmap \u003cLeader\u003epU \u003cPlug\u003eUnconditionalPasteRecallUnjoinAfter\n\n    imap \u003cC-G\u003ec \u003cPlug\u003eUnconditionalPasteChar\n    imap \u003cC-G\u003e, \u003cPlug\u003eUnconditionalPasteComma\n    imap \u003cC-G\u003eq \u003cPlug\u003eUnconditionalPasteQueried\n    imap \u003cC-G\u003eQ \u003cPlug\u003eUnconditionalPasteRecallQueried\n    imap \u003cC-G\u003eu \u003cPlug\u003eUnconditionalPasteUnjoin\n    imap \u003cC-G\u003eU \u003cPlug\u003eUnconditionalPasteRecallUnjoin\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutewinter%2Funconditionalpaste","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmutewinter%2Funconditionalpaste","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutewinter%2Funconditionalpaste/lists"}