sponsor Vim development Vim logo Vim Book Ad

MultiWordComplete : Insert mode completion that completes a sequence of words based on anchors.

 script karma  Rating 0/0, Downloaded by 111    Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
 
script type
utility
 
description
DESCRIPTION
The built-in insert mode completion completes single words, and one can copy
the words following the previous expansion one-by-one. (But that is cumbersome
and doesn't scale when there are many alternatives.)
This plugin offers completion of sequences of words, i.e. everything separated
by whitespace, non-keyword characters or the start / end of line, based on the
typed first letter of each word. With this, one can quickly complete entire
phrases; for example, "imc" completes to "insert mode completion", and "/ulb"
completes to "/usr/local/bin".

SEE ALSO
- CamelCaseComplete (vimscript #3915) provides a similar completion, but the
  anchor characters must be the start fragments of CamelCaseWords or
  underscore_words.
- Check out the CompleteHelper.vim plugin page (vimscript #3914) for a full
  list of insert mode completions powered by it.

USAGE
In insert mode, type all initial letters of the requested phrase, and invoke
the multi-word completion via CTRL-X w.
You can then search forward and backward via CTRL-N / CTRL-P, as usual.

CTRL-X w                Find matches for multiple words which begin with the
                        typed letters in front of the cursor. The 'ignorecase'
                        and 'smartcase' settings apply. If no matches were
                        found that way, a case-insensitive search is tried as
                        a fallback. (So, unless you care about a minimum
                        number of matches and search speed, you can be sloppy
                        with the case of the typed letters.)
                        The sequence of words can span multiple lines;
                        newlines are removed in the completion results.

                        Non-alphabetic keyword characters (e.g. numbers, "_"
                        in the default 'iskeyword' setting) can be inserted
                        into the completion base to force inclusion of these,
                        e.g. both "mf" and "mf_b" complete to "my foo_bar",
                        but the latter excludes "my foobar" and "my foo_quux".
                        An alphabetic anchor following a non-alphabetic anchor
                        must match immediately after the non-alphabetic
                        letter, not in the next word. Thus, mentally parse the
                        base "mf_b" as "m", "f", "_b".
                        In addition, non-alphabetic keyword characters match
                        at a start of a word, too. For example, "f2s" matches
                        both "foobar 2000 system" ("2" matching like an
                        alphabetic character) and "foo2sam" ("2" matching
                        according to the special rule for non-alphabetic
                        characters).
 
install details
INSTALLATION
This script is packaged as a vimball. If you have the "gunzip" decompressor
in your PATH, simply edit the *.vmb.gz package in Vim; otherwise, decompress
the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
vimball or via the :UseVimball command.
    vim MultiWordComplete*.vmb.gz
    :so %
To uninstall, use the :RmVimball command.

DEPENDENCIES
- Requires Vim 7.0 or higher.
- Requires the CompleteHelper.vim plugin (vimscript #3914).

CONFIGURATION
For a permanent configuration, put the following commands into your vimrc:

Analoguous to the 'complete' option, you can specify which buffers will be
scanned for completion candidates. Currently, '.' (current buffer), 'w'
(buffers from other windows), and 'b' (other listed buffers) are supported.
    let g:MultiWordComplete_complete = '.,w,b'
The global setting can be overridden for a particular buffer
(b:MultiWordComplete_complete).

To disable the removal of the (mostly useless) completion base when aborting
with <Esc> while there are no matches:
    let g:MultiWordComplete_FindStartMark = ''

If you want to use a different mapping, map your keys to the
<Plug>(MultiWordComplete) mapping target _before_ sourcing the script (e.g.
in your vimrc):
    imap <C-x>w <Plug>(MultiWordComplete)<Plug>(MultiWordPostComplete)
 

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
MultiWordComplete-1.00.vmb.gz 1.00 2013-12-19 7.0 Ingo Karkat Initial upload
ip used for rating: 54.91.16.49

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
   
SourceForge.net Logo