| 707 | 1 # ctrlp.vim | 
|  | 2 Full path fuzzy __file__, __buffer__, __mru__, __tag__, __...__ finder for Vim. | 
|  | 3 | 
|  | 4 * Written in pure Vimscript for MacVim, gVim and Vim 7.0+. | 
|  | 5 * Full support for Vim's regexp as search patterns. | 
|  | 6 * Built-in Most Recently Used (MRU) files monitoring. | 
|  | 7 * Built-in project's root finder. | 
|  | 8 * Open multiple files at once. | 
|  | 9 * Create new files and directories. | 
|  | 10 * [Extensible][2]. | 
|  | 11 | 
|  | 12 ![ctrlp][1] | 
|  | 13 | 
|  | 14 ## Install | 
|  | 15 | 
|  | 16 vim 8+ manages packages all on its own. Installing `ctrlp` is this simple: | 
|  | 17 | 
|  | 18 ```bash | 
|  | 19 mkdir -p ~/.vim/pack/plugins/start | 
|  | 20 git clone --depth=1 https://github.com/ctrlpvim/ctrlp.vim.git ~/.vim/pack/plugins/start/ctrlp | 
|  | 21 ``` | 
|  | 22 | 
|  | 23 Of course you can use your favorite plugin manager or check the [quick installation guide][3] for a primitive installation method. | 
|  | 24 | 
|  | 25 ## Basic Usage | 
|  | 26 * Run `:CtrlP` or `:CtrlP [starting-directory]` to invoke CtrlP in find file mode. | 
|  | 27 * Run `:CtrlPBuffer` or `:CtrlPMRU` to invoke CtrlP in find buffer or find MRU file mode. | 
|  | 28 * Run `:CtrlPMixed` to search in Files, Buffers and MRU files at the same time. | 
|  | 29 | 
|  | 30 Check `:help ctrlp-commands` and `:help ctrlp-extensions` for other commands. | 
|  | 31 | 
|  | 32 ##### Once CtrlP is open: | 
|  | 33 * Press `<F5>` to purge the cache for the current directory to get new files, remove deleted files and apply new ignore options. | 
|  | 34 * Press `<c-f>` and `<c-b>` to cycle between modes. | 
|  | 35 * Press `<c-d>` to switch to filename only search instead of full path. | 
|  | 36 * Press `<c-r>` to switch to regexp mode. | 
|  | 37 * Use `<c-j>`, `<c-k>` or the arrow keys to navigate the result list. | 
|  | 38 * Use `<c-t>` or `<c-v>`, `<c-x>` to open the selected entry in a new tab or in a new split. | 
|  | 39 * Use `<c-n>`, `<c-p>` to select the next/previous string in the prompt's history. | 
|  | 40 * Use `<c-y>` to create a new file and its parent directories. | 
|  | 41 * Use `<c-z>` to mark/unmark multiple files and `<c-o>` to open them. | 
|  | 42 | 
|  | 43 Run `:help ctrlp-mappings` or submit `?` in CtrlP for more mapping help. | 
|  | 44 | 
|  | 45 * Submit two or more dots `..` to go up the directory tree by one or multiple levels. | 
|  | 46 * End the input string with a colon `:` followed by a command to execute it on the opening file(s): | 
|  | 47 Use `:25` to jump to line 25. | 
|  | 48 Use `:diffthis` when opening multiple files to run `:diffthis` on the first 4 files. | 
|  | 49 | 
|  | 50 ## Basic Options | 
|  | 51 * Change the default mapping and the default command to invoke CtrlP: | 
|  | 52 | 
|  | 53     ```vim | 
|  | 54     let g:ctrlp_map = '<c-p>' | 
|  | 55     let g:ctrlp_cmd = 'CtrlP' | 
|  | 56     ``` | 
|  | 57 | 
|  | 58 * When invoked without an explicit starting directory, CtrlP will set its local working directory according to this variable: | 
|  | 59 | 
|  | 60     ```vim | 
|  | 61     let g:ctrlp_working_path_mode = 'ra' | 
|  | 62     ``` | 
|  | 63 | 
|  | 64     `'c'` - the directory of the current file. | 
|  | 65     `'a'` - the directory of the current file, unless it is a subdirectory of the cwd | 
|  | 66     `'r'` - the nearest ancestor of the current file that contains one of these directories or files: `.git` `.hg` `.svn` `.bzr` `_darcs` | 
|  | 67     `'w'` - modifier to "r": start search from the cwd instead of the current file's directory | 
|  | 68     `0` or `''` (empty string) - disable this feature. | 
|  | 69 | 
|  | 70     If none of the default markers (`.git` `.hg` `.svn` `.bzr` `_darcs`) are present in a project, you can define additional ones with `g:ctrlp_root_markers`: | 
|  | 71 | 
|  | 72     ```vim | 
|  | 73     let g:ctrlp_root_markers = ['pom.xml', '.p4ignore'] | 
|  | 74     ``` | 
|  | 75 | 
|  | 76     If more than one mode is specified, they will be tried in order until a directory is located. | 
|  | 77 | 
|  | 78 * If a file is already open, open it again in a new pane instead of switching to the existing pane | 
|  | 79 | 
|  | 80     `let g:ctrlp_switch_buffer = 'et'` | 
|  | 81 | 
|  | 82 * Exclude files and directories using Vim's `wildignore` and CtrlP's own `g:ctrlp_custom_ignore`. If a custom listing command is being used, exclusions are ignored: | 
|  | 83 | 
|  | 84     ```vim | 
|  | 85     set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux | 
|  | 86     set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe  " Windows | 
|  | 87 | 
|  | 88     let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' | 
|  | 89     let g:ctrlp_custom_ignore = { | 
|  | 90       \ 'dir':  '\v[\/]\.(git|hg|svn)$', | 
|  | 91       \ 'file': '\v\.(exe|so|dll)$', | 
|  | 92       \ 'link': 'some_bad_symbolic_links', | 
|  | 93       \ } | 
|  | 94     ``` | 
|  | 95 | 
|  | 96 * Use a custom file listing command: | 
|  | 97 | 
|  | 98     ```vim | 
|  | 99     let g:ctrlp_user_command = 'find %s -type f'        " MacOSX/Linux | 
|  | 100     let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d'  " Windows | 
|  | 101     ``` | 
|  | 102 | 
|  | 103 * Ignore files in `.gitignore` | 
|  | 104 | 
|  | 105     ```vim | 
|  | 106       let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard'] | 
|  | 107     ``` | 
|  | 108 | 
|  | 109 Check `:help ctrlp-options` for other options. | 
|  | 110 | 
|  | 111 ## License | 
|  | 112 CtrlP is distributed under Vim's [license][4]. | 
|  | 113 | 
|  | 114 [1]: https://i.imgur.com/aOcwHwt.png | 
|  | 115 [2]: https://github.com/ctrlpvim/ctrlp.vim/tree/extensions | 
|  | 116 [3]: https://ctrlpvim.github.io/ctrlp.vim#installation | 
|  | 117 [4]: http://vimdoc.sourceforge.net/htmldoc/uganda.html |