wellle / line-targets.vim

A simple (example) plugin for targets.vim

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This is a simple example plugin which extends the targets.vim plugin by adding a new source with a default mapping.

Effectively this adds line text objects. Type da- to delete a line (including leading and trailing whitespace) or ci- to change the inner line (excluding leading and trailing whitespace). As for all other text objects provided by targets.vim, you can use n and l to operate on distant lines below and above the current line respectively. For example d2an- deletes the line two lines below the cursor.

You can customize this behavior by putting something like this in your vimrc:

autocmd User targets#mappings#user call targets#mappings#extend({
            \ '-': {'separator': [{'d': '-'}]},
            \ 'x': {'line': [{'c': 1}]},
            \ })

The '-' line restores the default mapping for '-' as a separator text object. The 'x' line maps 'x' to the line source. So now you can delete the next line with danx and still delete between - with di-.

If you want to map 'l', you'll need to free it from the default meaning of last target, as in dilb (delete in last block), for example by using N for that instead:

let g:targets_nl = 'nN'

Now you can delete in last block with diNb and use this settings to make ciNl change the last/previous line:

autocmd User targets#mappings#user call targets#mappings#extend({
            \ '-': {'separator': [{'d': '-'}]},
            \ 'l': {'line': [{'c': 1}]},
            \ })

To see how such an extension for targets.vim can be implemented, please have a look at the code and comments within the code in this repository.

About

A simple (example) plugin for targets.vim


Languages

Language:Vim Script 100.0%