bfd98009ed
* New option `g:ctrlp_live_update`: enable/disable the update-as-you-type functionality. * New option `g:ctrlp_max_depth`: the maximum directory depth to recurse into. * New command `ResetCtrlP`: reset all options and take in new values of the option variables. * Various other changes and bugfixes.
461 lines
17 KiB
Plaintext
461 lines
17 KiB
Plaintext
*ctrlp.txt* Full path fuzzy file, buffer and MRU file finder for Vim.
|
||
*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'*
|
||
===============================================================================
|
||
# #
|
||
# :::::::: ::::::::::: ::::::::: ::: ::::::::: #
|
||
# :+: :+: :+: :+: :+: :+: :+: :+: #
|
||
# +:+ +:+ +:+ +:+ +:+ +:+ +:+ #
|
||
# +#+ +#+ +#++:++#: +#+ +#++:++#+ #
|
||
# +#+ +#+ +#+ +#+ +#+ +#+ #
|
||
# #+# #+# #+# #+# #+# #+# #+# #
|
||
# ######## ### ### ### ########## ### #
|
||
# #
|
||
===============================================================================
|
||
CONTENTS *ctrlp-contents*
|
||
|
||
1.Intro...................................|ctrlp-intro|
|
||
2.Options.................................|ctrlp-options|
|
||
3.Commands................................|ctrlp-commands|
|
||
4.Mappings................................|ctrlp-mappings|
|
||
5.Input Formats...........................|ctrlp-input-formats|
|
||
6.Credits.................................|ctrlp-credits|
|
||
|
||
===============================================================================
|
||
1. Intro *ctrlp-intro*
|
||
|
||
Full path fuzzy file, buffer and MRU file finder with an intuitive interface.
|
||
Written in pure Vimscript for MacVim and Vim version 7.0+. Has full support for
|
||
Vim’s |regexp| as search pattern, and more.
|
||
|
||
See also |ctrlp-input-formats| and |ctrlp-fullregexp|.
|
||
|
||
===============================================================================
|
||
2. Options *ctrlp-options*
|
||
|
||
Below are the available options and their default values.
|
||
|
||
*'g:ctrlp_map'*
|
||
Use this option to change the mapping to invoke |CtrlP| in |Normal| mode: >
|
||
let g:ctrlp_map = '<c-p>'
|
||
<
|
||
|
||
*'g:loaded_ctrlp'*
|
||
Use this option to disable the plugin completely: >
|
||
let g:loaded_ctrlp = 1
|
||
<
|
||
|
||
*'g:ctrlp_by_filename'*
|
||
Set this to 1 to set search by filename (not full path) as the default: >
|
||
let g:ctrlp_by_filename = 0
|
||
<
|
||
|
||
*'g:ctrlp_regexp_search'*
|
||
Set this to 1 to set full |regexp| search as the default mode: >
|
||
let g:ctrlp_regexp_search = 0
|
||
<
|
||
|
||
*'g:ctrlp_match_window_reversed'*
|
||
Reverse the sort order of the matched files in the match window. The default
|
||
setting is from bottom to top: >
|
||
let g:ctrlp_match_window_reversed = 1
|
||
<
|
||
|
||
*'g:ctrlp_persistent_input'*
|
||
Remember the last input string. Set this to 2 to also remember the last
|
||
position of the selection in the match window and 0 to disable this feature: >
|
||
let g:ctrlp_persistent_input = 1
|
||
<
|
||
|
||
*'g:ctrlp_split_window'*
|
||
Use this option to specify how the file is to be opened when pressing <cr>:
|
||
1 - in a new tab
|
||
2 - in a new horizontal split
|
||
3 - in a new vertical split
|
||
0 - in the current window/split
|
||
>
|
||
let g:ctrlp_split_window = 0
|
||
<
|
||
|
||
*'g:ctrlp_ignore_space'*
|
||
Set this to 1 to ignore whitespaces in filenames and directory names: >
|
||
let g:ctrlp_ignore_space = 0
|
||
<
|
||
|
||
*'g:ctrlp_working_path_mode'*
|
||
*SetWorkingPath()*
|
||
When starting up the prompt, automatically set the working directory (i.e. the
|
||
|current-directory|) to:
|
||
1 - the parent directory of the current file.
|
||
2 - the nearest ancestor that contains one of these directories/files:
|
||
.git/
|
||
.hg/
|
||
.bzr/
|
||
_darcs/
|
||
root.dir
|
||
.vimprojects
|
||
0 - don’t manage working directory.
|
||
>
|
||
let g:ctrlp_working_path_mode = 1
|
||
<
|
||
You can use this functionality outside of |CtrlP| by adding the following line
|
||
to your |.vimrc|; the parameter is the same (1, 2 and 0): >
|
||
au BufEnter * cal ctrlp#SetWorkingPath(2)
|
||
<
|
||
|
||
*'g:ctrlp_root_markers'*
|
||
Use this to set your own root markers for the |SetWorkingPath()| function, in
|
||
addition to the default ones, your markers will take precedence: >
|
||
let g:ctrlp_root_markers = ['']
|
||
<
|
||
|
||
*'g:ctrlp_max_height'*
|
||
Set the maximum height of the match window: >
|
||
let g:ctrlp_max_height = 10
|
||
<
|
||
|
||
*'g:ctrlp_use_caching'*
|
||
Set this to 0 to disable per-session caching. When disabled, caching will still
|
||
be enabled for directories that have more than 4000 files: >
|
||
let g:ctrlp_use_caching = 1
|
||
<
|
||
Note: you can quickly purge the cache by pressing <F5>.
|
||
|
||
*'g:ctrlp_clear_cache_on_exit'*
|
||
Set this to 0 to enable cross-sessions caching by not deleting the caches upon
|
||
exit: >
|
||
let g:ctrlp_clear_cache_on_exit = 1
|
||
<
|
||
|
||
*'g:ctrlp_cache_dir'*
|
||
Set the parent directory for the '.ctrlp_cache' directory: >
|
||
let g:ctrlp_cache_dir = $HOME
|
||
<
|
||
|
||
*'g:ctrlp_prompt_mappings'*
|
||
Use this to customize the mappings inside |CtrlP|’s prompt to your liking. You
|
||
only need to keep the lines that you’ve changed the values (inside []): >
|
||
let g:ctrlp_prompt_mappings = {
|
||
\ 'PrtBS()': ['<bs>'],
|
||
\ 'PrtDelete()': ['<del>'],
|
||
\ 'PrtDeleteWord()': ['<c-w>'],
|
||
\ 'PrtClear()': ['<c-u>'],
|
||
\ 'PrtSelectMove("j")': ['<c-n>', '<c-j>', '<down>'],
|
||
\ 'PrtSelectMove("k")': ['<c-p>', '<c-k>', '<up>'],
|
||
\ 'AcceptSelection("e")': ['<cr>'],
|
||
\ 'AcceptSelection("h")': ['<c-cr>', '<c-s>'],
|
||
\ 'AcceptSelection("t")': ['<c-t>'],
|
||
\ 'AcceptSelection("v")': ['<c-v>'],
|
||
\ 'ToggleFocus()': ['<tab>'],
|
||
\ 'ToggleRegex()': ['<c-r>'],
|
||
\ 'ToggleByFname()': ['<c-d>'],
|
||
\ 'ToggleType(1)': ['<c-f>', '<c-up'],
|
||
\ 'ToggleType(-1)': ['<c-b>', '<c-down>'],
|
||
\ 'ForceUpdate()': ['<c-o>'],
|
||
\ 'PrtCurStart()': ['<c-a>'],
|
||
\ 'PrtCurEnd()': ['<c-e>'],
|
||
\ 'PrtCurLeft()': ['<c-h>', '<left>'],
|
||
\ 'PrtCurRight()': ['<c-l>', '<right>'],
|
||
\ 'PrtClearCache()': ['<F5>'],
|
||
\ 'BufOpen("ControlP", "del")': ['<esc>', '<c-c>', '<c-g>'],
|
||
\ }
|
||
<
|
||
|
||
*'g:ctrlp_mru_files'*
|
||
Set this to 0 to completely disable the Most Recently Used files feature: >
|
||
let g:ctrlp_mru_files = 1
|
||
<
|
||
|
||
*'g:ctrlp_mruf_max'*
|
||
Specify the number of recently opened files you want |CtrlP| to remember: >
|
||
let g:ctrlp_mruf_max = 50
|
||
<
|
||
|
||
*'g:ctrlp_mruf_exclude'*
|
||
Files you don’t want |CtrlP| to remember; use |regexp| to specify the patterns:
|
||
>
|
||
let g:ctrlp_mruf_exclude = ''
|
||
<
|
||
Examples: >
|
||
let g:ctrlp_mruf_exclude = '/tmp/.*\|/temp/.*' " MacOSX/Linux
|
||
let g:ctrlp_mruf_exclude = '^C:\\dev\\tmp\\.*' " Windows
|
||
<
|
||
|
||
*'g:ctrlp_mruf_include'*
|
||
And if you want |CtrlP| to only remember some files, specify them here: >
|
||
let g:ctrlp_mruf_include = ''
|
||
<
|
||
Example: >
|
||
let g:ctrlp_mruf_include = '\.py$\|\.rb$'
|
||
<
|
||
|
||
*'g:ctrlp_dotfiles'*
|
||
Set this to 0 if you don’t want |CtrlP| to search for dotfiles and dotdirs: >
|
||
let g:ctrlp_dotfiles = 1
|
||
<
|
||
You can also use |'wildignore'| to exclude anything from the search.
|
||
e.g. exclude version control directories from the results: >
|
||
set wildignore+=*/.git/*,*/.hg/*,*/.svn/* " Linux/MacOSX
|
||
set wildignore+=.git\*,.hg\*,.svn\* " Windows
|
||
<
|
||
Note: the `*/` in front of each dotfile glob is required for the dotfiles
|
||
search feature to work correctly along side with |wildignore|. If you’ve
|
||
disabled dotfiles search (set |g:ctrlp_dotfiles| to 0), then you can ignore
|
||
this.
|
||
|
||
*'g:ctrlp_highlight_match'*
|
||
Use this to enable/disable highlighting of the matched patterns and to specify
|
||
the highlight group that’ll be used: >
|
||
let g:ctrlp_highlight_match = [1, 'Function']
|
||
<
|
||
|
||
*'g:ctrlp_max_files'*
|
||
The maximum number of files to scan, set to 0 for no limit: >
|
||
let g:ctrlp_max_files = 20000
|
||
<
|
||
|
||
*'g:ctrlp_max_depth'*
|
||
The maximum depth of a directory tree to recurse into: >
|
||
let g:ctrlp_max_depth = 40
|
||
<
|
||
Note: keep it smaller than 200. The larger the value, the more memory Vim uses.
|
||
|
||
*'g:ctrlp_live_update'*
|
||
Set to 0 to disable the update-as-you-type functionality; press <c-o> to force
|
||
an update: >
|
||
let g:ctrlp_live_update = 1
|
||
<
|
||
|
||
*'g:ctrlp_user_command'*
|
||
Specify an external tool to use for indexing files instead of Vim’s globpath().
|
||
Use %s in place of the target directory: >
|
||
let g:ctrlp_user_command = ''
|
||
<
|
||
Examples: >
|
||
let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux
|
||
let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows
|
||
<
|
||
You can also use 'grep', 'findstr' or something else to filter the results.
|
||
Examples: >
|
||
let g:ctrlp_user_command = 'find %s -type f | grep (?!tmp/.*)'
|
||
let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d | findstr .*\.py$'
|
||
<
|
||
|
||
===============================================================================
|
||
3. Commands *ctrlp-commands*
|
||
|
||
*:CtrlP*
|
||
:CtrlP [starting-directory]
|
||
Open the |CtrlP| prompt in find files mode.
|
||
If no argument is given, the value of |g:ctrlp_working_path_mode| will be
|
||
used to determine the starting directory.
|
||
|
||
*:CtrlPBuffer*
|
||
:CtrlPBuffer
|
||
Open the |CtrlP| prompt in find buffers mode.
|
||
|
||
*:CtrlPMRUFiles*
|
||
:CtrlPMRUFiles
|
||
Open the |CtrlP| prompt in find Most-Recently-Used files mode.
|
||
|
||
*:ClearCtrlPCache*
|
||
:ClearCtrlPCache
|
||
Flush the cache for the current working directory. Same as pressing <F5>.
|
||
|
||
*:ClearAllCtrlPCaches*
|
||
:ClearAllCtrlPCaches
|
||
Delete all the cache files saved in |ctrlp_cache_dir|.
|
||
|
||
*:ResetCtrlP*
|
||
:ResetCtrlP
|
||
Reset all options, take in new values of the option variables (section 2).
|
||
|
||
The following commands ignore the value of |g:ctrlp_working_path_mode|:
|
||
|
||
*:CtrlPCurWD*
|
||
:CtrlPCurWD
|
||
Find files in the |current-directory| (without changing it).
|
||
|
||
*:CtrlPCurFile*
|
||
:CtrlPCurFile
|
||
Find files in the same directory as the current file, regardless of what the
|
||
|current-directory| is.
|
||
|
||
*:CtrlPRoot*
|
||
:CtrlPRoot
|
||
Same as |:CtrlPCurFile| but start from the project’s root.
|
||
Check |g:ctrlp_working_path_mode| to see how |CtrlP| finds a root.
|
||
|
||
===============================================================================
|
||
4. Mappings *ctrlp-mappings*
|
||
|
||
*'ctrlp-<c-p>'*
|
||
<c-p>
|
||
Default |Normal| mode mapping to open the |CtrlP| prompt.
|
||
|
||
Once inside the prompt:
|
||
|
||
<c-r> *'ctrlp-fullregexp'*
|
||
Toggle between the string mode (section 5.a & b) and full |regexp| mode.
|
||
(note: in full |regexp| mode, the prompt’s base is 'r>>' instead of '>>>')
|
||
|
||
See also |input-formats| and |g:ctrlp_regexp_search|.
|
||
|
||
<c-d>
|
||
Toggle between full path search and filename only search.
|
||
(note: in filename mode, the prompt’s base is '>d>' instead of '>>>')
|
||
|
||
<c-f>, 'forward'
|
||
<c-up>
|
||
Toggle between searching files and searching buffers. Or switch to the
|
||
'next' search type in the sequence; currently files, buffers and most
|
||
recently used files (MRU Files) are available.
|
||
|
||
<c-b>, 'backward'
|
||
<c-down>
|
||
Toggle between searching files and searching buffers. Or switch to the
|
||
'previous' search type in the sequence.
|
||
|
||
<tab>
|
||
Toggle the focus between the match window and the prompt.
|
||
|
||
<c-o>
|
||
Force update the match window.
|
||
Use this if |g:ctrlp_live_update| has been set to 0.
|
||
|
||
<c-n>,
|
||
<c-j>,
|
||
<down>
|
||
Move selection down
|
||
|
||
<c-p>,
|
||
<c-k>,
|
||
<up>
|
||
Move selection up
|
||
|
||
<c-a>
|
||
Move the cursor to the 'start' of the prompt
|
||
|
||
<c-e>
|
||
Move the cursor to the 'end' of the prompt
|
||
|
||
<c-h>,
|
||
<left>
|
||
Move the cursor one character to the 'left'
|
||
|
||
<c-l>,
|
||
<right>
|
||
Move the cursor one character to the 'right'
|
||
|
||
<c-w>
|
||
Delete a preceding inner word
|
||
|
||
<c-u>
|
||
Clear the input field
|
||
|
||
<cr>
|
||
Open selected file with the method specified with |g:ctrlp_split_window|
|
||
|
||
<c-t>
|
||
Open selected file in a new 'tab'
|
||
|
||
<c-v>
|
||
Open selected file in a 'vertical' split
|
||
|
||
<c-cr>,
|
||
<c-s>
|
||
Open selected file in a 'horizontal' split
|
||
|
||
<F5>
|
||
Refresh the match window and purge the cache for the current directory.
|
||
|
||
<esc>,
|
||
<c-c>,
|
||
<c-g>
|
||
Exit |CtrlP|. <c-c> can also be used to stop the files scan.
|
||
|
||
Chose your own mappings with |g:ctrlp_prompt_mappings|.
|
||
|
||
When inside the match window (press <tab> to switch):
|
||
|
||
a-z
|
||
0-9
|
||
~^-=;`',.+!@#$%&_(){}[]
|
||
Cycle through the lines with the first letter (of paths or filenames) that
|
||
matches that key.
|
||
|
||
===============================================================================
|
||
5. Input Formats *ctrlp-input-formats*
|
||
|
||
*ctrlp-prompt-input-formats*
|
||
Formats for inputting in the prompt:
|
||
|
||
a) Simple string. e.g. 'abc' is understood internally as 'a[^a]\{-}b[^b]\{-}c'
|
||
|
||
b) Vim |regexp|. If the input string contains '*' or '|', it’ll be treated as
|
||
a Vim’s |regexp| |pattern| without any modification.
|
||
e.g. 'abc\d*efg' will be read as 'abc\d*efg'.
|
||
|
||
See also |ctrlp-fullregexp| and |g:ctrlp_regexp_search|.
|
||
|
||
c) Strings end with a colon ':' followed by an arbitrary number will be read
|
||
as a line number to jump to after opening the file.
|
||
e.g. 'abc:45' will open the selected file and jump to line 45.
|
||
|
||
d) Type exactly two dots (..) at the start of the line and press enter to go
|
||
backward in the directory tree by 1 level. If the parent directory is
|
||
large, this might be slow.
|
||
|
||
===============================================================================
|
||
6. Credits *ctrlp-credits*
|
||
|
||
Developed by Kien Nguyen (github.com/kien), based on the Command-T and the
|
||
LustyExplorer plugins. No code was taken from these plugins, but I did clone
|
||
the majority of their (awesome) interfaces and the way they work.
|
||
|
||
This was originally written as a module for a would-be larger plugin called
|
||
AutoDoc.vim which I’ve stopped developing because of lost of interest. I really
|
||
liked the way Command-T and LustyExplorer deal with user’s input, so I wrote a
|
||
pure Vimscript version of their prompt window, intended to use it for the
|
||
aforementioned plugin.
|
||
|
||
Git repository: https://github.com/kien/ctrlp.vim
|
||
Mercurial repository: https://bitbucket.org/kien/ctrlp.vim
|
||
|
||
===============================================================================
|
||
CHANGELOG
|
||
|
||
+ New command: |ResetCtrlP|
|
||
+ New options: |g:ctrlp_max_files|,
|
||
|g:ctrlp_max_depth|,
|
||
|g:ctrlp_live_update|
|
||
|
||
Before 2011/09/12
|
||
|
||
+ Ability to cycle through matched lines in the match window.
|
||
+ Extended the behavior of |g:ctrlp_persistent_input|
|
||
+ Extended the behavior of |:CtrlP|
|
||
+ New options: |g:ctrlp_dotfiles|,
|
||
|g:ctrlp_clear_cache_on_exit|,
|
||
|g:ctrlp_highlight_match|,
|
||
|g:ctrlp_user_command|
|
||
+ New input format: '..' (section 5.d)
|
||
+ New mapping: <F5>.
|
||
+ New commands: |:CtrlPCurWD|,
|
||
|:CtrlPCurFile|,
|
||
|:CtrlPRoot|
|
||
|
||
+ New feature: search in most recently used (MRU) files
|
||
+ New mapping: <c-b>.
|
||
+ Extended the behavior of <c-f>.
|
||
+ New options: |g:ctrlp_mru_files|,
|
||
|g:ctrlp_mruf_max|,
|
||
|g:ctrlp_mruf_exclude|,
|
||
|g:ctrlp_mruf_include|
|
||
+ New command: |:CtrlPMRUFiles|
|
||
|
||
The updates are shown in reverse chronological order, from newest (top) to
|
||
oldest (bottom).
|
||
|
||
===============================================================================
|
||
vim:nofen:et:ts=2:sw=2:sts=2
|