All Projects → cyansprite → Extract

cyansprite / Extract

Licence: MIT license
👻 Neovim yank ring plugin with completion for registers, ring, pinning, and replacing with register.

Programming Languages

Vim Script
2826 projects

Projects that are alternatives of or similar to Extract

vim-mysticaltutor
Low-contrast flat colorscheme for Vim and terminals
Stars: ✭ 22 (-43.59%)
Mutual labels:  vim-plugin
miniSnip
Lightweight snippet plugin for Vim
Stars: ✭ 45 (+15.38%)
Mutual labels:  vim-plugin
vim9-stargate
modern alternative to easymotion written in vim9
Stars: ✭ 76 (+94.87%)
Mutual labels:  vim-plugin
nvim-contabs
contextual tabs for vim/neovim
Stars: ✭ 20 (-48.72%)
Mutual labels:  vim-plugin
vim-readme-viewer
📖 Viewing plugin's README easily like vim help
Stars: ✭ 26 (-33.33%)
Mutual labels:  vim-plugin
vim-mdnquery
Query the Mozilla Developer Network documentation without leaving Vim
Stars: ✭ 19 (-51.28%)
Mutual labels:  vim-plugin
vim-snipp-snapp-snut-and-the-legend-continues
💇 (Experimental) Vim snippet plugin
Stars: ✭ 24 (-38.46%)
Mutual labels:  vim-plugin
vim-strip-trailing-whitespace
🎞️ Vim plugin that removes trailing whitespace from *modified* lines on save
Stars: ✭ 66 (+69.23%)
Mutual labels:  vim-plugin
PICO-8.vim
A vim plugin package for PICO-8 programming.
Stars: ✭ 42 (+7.69%)
Mutual labels:  vim-plugin
stable-windows
Keeps vim windows stable on layout changes
Stars: ✭ 41 (+5.13%)
Mutual labels:  vim-plugin
vim-textobj-anyblock
A text object for any of '', "", (), {}, [] and <>.
Stars: ✭ 76 (+94.87%)
Mutual labels:  vim-plugin
vim-solidity
Syntax highlighting for Solidity in Vim
Stars: ✭ 44 (+12.82%)
Mutual labels:  vim-plugin
vim-plugin-ruscmd
Vim plugin: support command mode in Russian keyboard layout
Stars: ✭ 60 (+53.85%)
Mutual labels:  vim-plugin
vim-shellcheck
Vim wrapper for ShellCheck, a static analysis tool for shell scripts.
Stars: ✭ 63 (+61.54%)
Mutual labels:  vim-plugin
vim-emberlayout
Open Ember files in a grid
Stars: ✭ 18 (-53.85%)
Mutual labels:  vim-plugin
qf helper.nvim
A collection of improvements for the quickfix buffer
Stars: ✭ 70 (+79.49%)
Mutual labels:  vim-plugin
vim-pairs
Punctuation text objects: ci/ da; vi@ yiq da<space> ...
Stars: ✭ 35 (-10.26%)
Mutual labels:  vim-plugin
vim-viler
Editable file explorer for Vim
Stars: ✭ 24 (-38.46%)
Mutual labels:  vim-plugin
skim.vim
vim support for skim
Stars: ✭ 127 (+225.64%)
Mutual labels:  vim-plugin
yaml-vim
YAML syntax/indent plugin for Vim
Stars: ✭ 37 (-5.13%)
Mutual labels:  vim-plugin

Neovim Extract

Extract; Draw forth what really matters

Extract puts and yanks to a list with normal, visual swapping, and insert list/register/deoplete completion.

Version 4 Indexes

Version 3

Version 2

Version 1

Extract Demo

Things to know

  • You can still use "<register>p/P
    • Putting will add to the list if it's a new item.
  • Yanking will add to the list if it's a new item.
  • If you put/yank a duplicate, with a different *-wise insertion, it will choose the newest *-wise.
  • If you put/yank a duplicate that is the same *-wise, it will go to the top of the list, but not add a new occurance.
  • If you yank just whitespace or tabs it will ignore it, assuming you don't alter the option.
  • You're clipboards will be automatically pulled into the list on a timer, ignoring duplicates.

Usage

Normal and Visual

Putting

Use p/P like normal, once you use it with different registers or you yank text, it will add those to the list. Then, you can use use s to go forward in the list, and S to go backwards. If you want to change whether it pastes linewise/blockwise/characther wise, hit c-s to cycle through them.

Index

You can use insert completion (the c-v mapping by default in insert) or the default normal mappings for / to pick an index (seeing the list), whenever you do this it will select a new one in the list. To see the list you can use o (by default). Late noteworthy thing, when a new yank happens index will reset to 0 to make sure you are pasting in the thing you just yanked.

Examples:

Note: index will start at 4 (top, makes sense) List: Index 4 A <- Will paste B C clip + clip *

List: Index 0 A B C <- Will paste clip + clip *

Swapping

Use ["reg]s motion, this will delete and replace with the register you pick. If no register is specified it will use the default.

Pinning

Use <leader>p to open a input to ask you which you would like to pin. After doing this it will stay at the top of your list, so if even if you add more items to the list, putting will still use that pinned value.

To unpin use <leader>P.

Optinonally you can use ExtractPin and ExtractUnPin on the command line as well.

Insert Mode

Use c-v to paste from the ring, this will make a popup for the ring with the most recent at the top, descending to the least current.

Once selected you can continue typing like usual, or something I use a lot: whenever I yank something, it's usually linewise (like yy), which means that it puts mean on a new line after putting the text, if you then type <c-s> to complete it, it will then switch the *-wise and put you in front of the completed text.

Use <m-s\S> to cycle inside the ring while inside of insert mode.

Use <m-v> to show a popup menu you for your registers.

Global options

Flag Default Description
g:extract_maxCount 5 How many yanks do you want to save in the list? I use 25
g:extract_defaultRegister '0' Registered used to perform opeartions, it is set back to whatever it was previously after.
g:extract_ignoreRegisters ['a', '.'] What registers to ignore
g:extract_clipCheck &updatetime How often to check for clipboard changes
g:extract_ignoreJustSpaces &updatetime How often to check for clipboard changes
g:extract_useDefaultMappings 1 Use the default mappings
g:extract_loadDeoplete 0 Use deoplete?
" Color options for preview window
let g:extract_preview_colors = {
            \ 'Title':      'Special',
            \ 'CursorLine': 'CursorLine',
            \ 'Separator':  'Function',
            \ 'Index':      'Number',
            \ 'Type':       'Type',
            \ 'Lines':      'Boolean',
            \ 'Content':    'Statement'
            \ }

I Don't Like your mappings...

It's cool, just map these

let g:extract_normal_mappings = {
            \ 'p'         : '<Plug>(extract-put)',
            \ 'P'         : '<Plug>(extract-Put)',
            \ '<leader>p' : ':ExtractPin<cr>A',
            \ '<leader>P' : ':ExtractUnPin<cr>A',
            \ 's '        : '<Plug>(extract-replace-normal)',
            \ 'S '        : '<Plug>(extract-replace-normal)$',
            \ 'ss'        : 'V<Plug>(extract-replace-visual)',
            \ '<leader>o' : '<Plug>(extract-preview)',
            \ '<down>'     : '<Plug>(extract-sin-preview-inc)',
            \ '<up>'     : '<Plug>(extract-sin-preview-dec)'
            \ }

let g:extract_global_mappings = {
            \ '<m-s>' : '<Plug>(extract-sycle)',
            \ '<m-S>' : '<Plug>(extract-Sycle)',
            \ '<c-s>' : '<Plug>(extract-cycle)'
            \ }

let g:extract_visual_mappings = {
            \ 'p' : '<Plug>(extract-put)',
            \ 'P' : '<Plug>(extract-Put)',
            \ 's' : '<Plug>(extract-replace-visual)'
            \ }

let g:extract_insert_mappings = {
            \ '<m-v>' :  '<Plug>(extract-completeReg)',
            \ '<c-v>' :  '<Plug>(extract-completeList)',
            \ '<c-s>' :  '<Plug>(extract-cycle)',
            \ '<m-s>' :  '<Plug>(extract-sycle)',
            \ '<m-S>' :  '<Plug>(extract-Sycle)'
            \ }
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].