Fuzzy file, buffer, mru and tag finder
Pull request Compare This branch is 129 commits behind kien:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
autoload
doc
plugin
.gitignore
readme.md

readme.md

ctrlp.vim

Full path fuzzy file, buffer, mru and tag finder for Vim.

  • Written in pure Vimscript for MacVim and Vim 7.0+.
  • Full support for Vim’s regexp as search pattern.
  • Built-in Most Recently Used (MRU) files monitoring.
  • Built-in project’s root finder.
  • Open multiple files at once.
  • Create new files and directories.
  • Extensible.

ctrlp

Basic Usage

  • Press <c-p> or run :CtrlP [dir] to invoke CtrlP in find file mode.
  • Run :CtrlPBuffer or :CtrlPMRU to invoke CtrlP in buffer or MRU mode.
  • Run :CtrlPMixed to search in a mix of files, buffers and MRU files.

Once CtrlP is open:

  • Press <c-f> and <c-b> to cycle between modes.
  • Press <c-d> to switch to filename only search instead of full path.
  • Press <c-r> to switch to regexp mode.
  • Press <F5> to purge the cache for the current directory and get new files.
  • End the input string with a colon : followed by a command to execute it after opening the file:
    Use :45 to open selected file and jump to line 45.
    Use :difft to open the marked files and run :difft on the first 4 files.
  • Submit two dots .. as the input string to go backward the directory tree by 1 level.
  • Use <c-y> to create a new file and its parent dirs.
  • Use <c-z> to mark/unmark multiple files and <c-o> to open them.

Basic Options

  • Change the mapping to invoke CtrlP:

    let g:ctrlp_map = '<c-p>'
  • When invoked, unless a path is specified, CtrlP will automatically set its local working directory according to this variable:

    let g:ctrlp_working_path_mode = 2

    0 - don’t manage working directory.
    1 - the directory of the current file.
    2 - the nearest ancestor that contains one of these directories or files: .git/ .hg/ .svn/ .bzr/ _darcs/

  • If you want to exclude directories or files from the search, use the Vim’s option wildignore and/or the option g:ctrlp_custom_ignore. Examples:

    set wildignore+=*/tmp/*,*.so,*.swp,*.zip  " MacOSX/Linux
    set wildignore+=tmp\*,*.swp,*.zip,*.exe   " Windows
    
    let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'
    let g:ctrlp_custom_ignore = {
      \ 'dir':  '\.git$\|\.hg$\|\.svn$',
      \ 'file': '\.exe$\|\.so$\|\.dll$',
      \ 'link': 'some_bad_symbolic_links',
      \ }
  • Use a custom file listing command:

    let g:ctrlp_user_command = 'find %s -type f'        " MacOSX/Linux
    let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d'  " Windows
  • Define an external matcher:

    let g:ctrlp_match_func = {}

Check the docs for more mappings, commands and options.