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 1281  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.vim (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
The code is hosted in a Git repo at
    https://github.com/inkarkat/vim-MultiWordComplete
You can use your favorite plugin manager, or "git clone" into a directory used
for Vim packages. Releases are on the "stable" branch, the latest unstable
development snapshot on "master".

This script is also 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 ingo-library.vim plugin (vimscript #4433), version 1.010 or
  higher.
- Requires the CompleteHelper.vim plugin (vimscript #3914), version 1.40 or
  higher.

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

By default, the 'complete' option controls which buffers will be scanned for
completion candidates. You can override that either for the entire plugin, or
only for particular buffers; see CompleteHelper_complete for supported
values.
    let g:MultiWordComplete_complete = '.,w,b,u'

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.01.vmb.gz 1.01 2019-03-18 7.0 Ingo Karkat - Make repeat across lines work.
- FIX: Avoid "E121: Undefined variable: s:isNoMatches" when triggering the completion for the first time without a valid base.
- Remove default g:MultiWordComplete_complete configuration and default to 'complete' option value instead.
- Remove superfluous duplicate :imap for default mapping. *** You need to update to CompleteHelper.vim (vimscript #3914) version 1.40! ***
MultiWordComplete-1.00.vmb.gz 1.00 2013-12-19 7.0 Ingo Karkat Initial upload
ip used for rating: 18.97.9.174

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.
   
Vim at Github