sponsor Vim development Vim logo Vim Book Ad

PatternComplete : Insert mode completion for matches of queried / last search pattern.

 script karma  Rating 9/3, Downloaded by 1961  Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
script type
This plugin offers completions that either use the last search pattern or
query for a regular expression, and then offer all matches for completion.

Without this plugin, you can just directly insert the contents of the last
search pattern register via CTRL-R /, but the register can contain \<word\>
boundary characters from a star search or other non-literal regexp atoms
like \V, .*, etc., which you usually don't want inserted into the text.

- Check out the CompleteHelper.vim plugin page (vimscript #3914) for a full
  list of insert mode completions powered by it.

CTRL-X /                Use a "/"-delimited (g:PatternComplete_DelimitersPattern)
                        /{pattern}/ base before the cursor, or (if no such
                        base) first query for {pattern} (press <Enter> to
                        conclude), and find matches for {pattern}.
{Visual}CTRL-X /        The completion finds matches for the selected pattern.

CTRL-X *                Use a "/"-delimited /{pattern}/ base before the
                        cursor, or first query for {pattern} (press <Enter>
                        to conclude), and find matches for \<{pattern}\>, or
                        {pattern} surrounded by whitespace as a fallback.

{Visual}CTRL-X *        Find whole word (or whole WORD as a fallback) matches
                        for the selected pattern.

CTRL-X &                Find matches for the last search pattern, quote/.

CTRL-R &                Insert first match for the last search pattern
                        quote/ into the command-line.

CTRL-X ?                Find matches, reusing the {pattern} from the last
                        pattern completion.
install details
The code is hosted in a Git repo at
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 PatternComplete*.vmb.gz
    :so %
To uninstall, use the :RmVimball command.

- Requires Vim 7.0 or higher.
- Requires the ingo-library.vim plugin (vimscript #4433), version 1.011 or
- Requires the CompleteHelper.vim plugin (vimscript #3914), version 1.50 or

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
    let g:PatternComplete_complete = '.,w,b,u'

The possible regular expression delimiters for a /{pattern}/ base before the
cursor (for i_CTRL-X_/ and i_CTRL-X_star) can be configured as a pattern:
    let g:PatternComplete_DelimitersPattern = '[/?#@]'

If you want to use different mappings, map your keys to the
<Plug>(PatternComplete) mapping targets _before_ sourcing the script (e.g.
in your vimrc):
    imap <C-x>/ <Plug>(PatternCompleteInput)
    imap <C-x>* <Plug>(PatternCompleteWordInput)
    vmap <C-x>/ <Plug>(PatternCompleteInput)
    vmap <C-x>* <Plug>(PatternCompleteWordInput)
    imap <C-x>& <Plug>(PatternCompleteSearch)
    cmap <C-r>& <Plug>(PatternCompleteSearchMatch)
    imap <C-x>? <Plug>(PatternCompleteLast)

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
PatternComplete-1.10.vmb.gz 1.10 2017-09-16 7.0 Ingo Karkat - ENH: Add <C-x>? mapping to reuse last search pattern.
- ENH: Also support visual mode variants for <C-x>/ and <C-x>*.
- ENH: Also handle /{pattern}/ base before cursor; this is often quicker and more comfortable to enter (using register contents, other completions, etc.) than the explicit user query that has been the only possibility so far.
PatternComplete-1.02.vmb.gz 1.02 2016-04-28 7.0 Ingo Karkat - Use a:options.abbreviate instead of explicit abbreviation loop. *** You need to update to CompleteHelper.vim (vimscript #3914) version 1.50! ***
- Remove default g:PatternComplete_complete configuration and default to 'complete' option value instead.
- Use more functions from the ingo-library. *** You need to update to ingo-library (vimscript #4433) version 1.011! ***
PatternComplete-1.01.vmb.gz 1.01 2013-07-15 7.0 Ingo Karkat - DWIM: Remove the \<...\> enclosure when the last used search pattern is a whole word search (that just has no matches now).
- Add dependency to ingo-library (vimscript #4433).
PatternComplete-1.00.vmb.gz 1.00 2012-10-01 7.0 Ingo Karkat Initial upload
ip used for rating:

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.