707
|
1 *ctrlp.txt* 支持模糊匹配的 文件, 缓冲区, 最近最多使用, 标签, ... 检索. v1.80
|
|
2 *CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'*
|
|
3 ===============================================================================
|
|
4 # #
|
|
5 # :::::::: ::::::::::: ::::::::: ::: ::::::::: #
|
|
6 # :+: :+: :+: :+: :+: :+: :+: :+: #
|
|
7 # +:+ +:+ +:+ +:+ +:+ +:+ +:+ #
|
|
8 # +#+ +#+ +#++:++#: +#+ +#++:++#+ #
|
|
9 # +#+ +#+ +#+ +#+ +#+ +#+ #
|
|
10 # #+# #+# #+# #+# #+# #+# #+# #
|
|
11 # ######## ### ### ### ########## ### #
|
|
12 # #
|
|
13 ===============================================================================
|
|
14 名词对照(译注)
|
|
15
|
|
16 buffer:缓冲区 mapping:按键绑定
|
|
17 mru:最近最多使用 prompt:提示符面板
|
|
18 tag:标签 tab:页签
|
|
19 tab:制表符
|
|
20
|
|
21 ===============================================================================
|
|
22 内容 *ctrlp-content*
|
|
23
|
|
24 1. 介绍.............................................|ctrlp-intro|
|
|
25 2. 选项.............................................|ctrlp-options|
|
|
26 3. 命令.............................................|ctrlp-commands|
|
|
27 4. 按键绑定.........................................|ctrlp-mappings|
|
|
28 5. 输入格式.........................................|ctrlp-input-formats|
|
|
29 6. 扩展.............................................|ctrlp-extensions|
|
|
30
|
|
31 ===============================================================================
|
|
32 介绍 *ctrlp-intro*
|
|
33
|
|
34 带有直观接口的全路径模糊文件, 缓冲区, 最近最多使用, 标签, ... 检索。
|
|
35 使用纯净的Vimscript编写,可以运行在MacVim,gVim和版本号7.0以上的Vim中。
|
|
36 全面支持Vim的正则表达式 |regexp| 作为搜索模式,内建最近最多使用文件监测,
|
|
37 项目根目录定位和更多特性。
|
|
38
|
|
39 开启可选的扩展(标记,目录,rtscript...),参考 |ctrlp-extensions| 。
|
|
40
|
|
41 ===============================================================================
|
|
42 OPTIONS *ctrlp-options*
|
|
43
|
|
44 总览:~
|
|
45
|
|
46 |loaded_ctrlp|................禁用插件。
|
|
47 |ctrlp_map|...................默认按键绑定。
|
|
48 |ctrlp_cmd|...................默认按键绑定调用的命令。
|
|
49 |ctrlp_by_filename|...........是否默认开启文件名模式。
|
|
50 |ctrlp_regexp|................是否默认开启正则表达式模式。
|
|
51 |ctrlp_match_window|..........匹配窗口的显示位置。
|
|
52 |ctrlp_switch_buffer|.........如果文件已在缓冲区中打开,跳转到该打开的缓冲区。
|
|
53 |ctrlp_reuse_window|..........重用特殊窗口(帮助、快速修复 |quickfix| ,等等)。
|
|
54 |ctrlp_tabpage_position|......新标签页出现的位置。
|
|
55 |ctrlp_working_path_mode|.....如何设置CtrlP的本地工作目录。
|
|
56 |ctrlp_root_markers|..........额外的,高优先级的根目录标识。
|
|
57 |ctrlp_use_caching|...........针对每个会话,设置是否开启缓存的。
|
|
58 |ctrlp_clear_cache_on_exit|...退出Vim后是否保留缓存。
|
|
59 |ctrlp_cache_dir|.............缓存目录的位置。
|
|
60 |ctrlp_show_hidden|...........是否显示隐藏文件和隐藏文件夹。
|
|
61 |ctrlp_custom_ignore|.........使用 |globpath()| 时自定义忽略的文件或目录。
|
|
62 |ctrlp_max_files|.............扫描文件的最大数目。
|
|
63 |ctrlp_max_depth|.............扫描目录的最大层数。
|
|
64 |ctrlp_user_command|..........使用外部的扫描工具。
|
|
65 |ctrlp_max_history|...........历史提示符面板中保留的最大条目数。
|
|
66 |ctrlp_open_new_file|.........由<c-y>创建的文件的打开方式。
|
|
67 |ctrlp_open_multiple_files|...由<c-z>选择的文件的打开方式。
|
|
68 |ctrlp_arg_map|...............是否拦截<c-y> 和 <c-o> 命令。
|
|
69 |ctrlp_follow_symlinks|.......是否跟随链接。
|
|
70 |ctrlp_lazy_update|...........停止输入时才更新。
|
|
71 |ctrlp_default_input|.........为提示符面板提供一个初始字符串。
|
|
72 |ctrlp_abbrev|................输入缩写。
|
|
73 |ctrlp_key_loop|..............为多字节输入开启输入事件循环。
|
|
74 |ctrlp_prompt_mappings|.......改变提示符面板内部的按键绑定。
|
|
75 |ctrlp_line_prefix|...........ctrlp 窗口中为每一行添加前缀。
|
|
76 |ctrlp_open_single_match|.....当只有一个候选时自动接受。
|
|
77 |ctrlp_brief_prompt|..........提示符为空的时候使用<bs>退出 CtrlP。
|
|
78 |ctrlp_match_current_file|....在匹配条目中包含当前文件。
|
|
79 |ctrlp_types|.................內建类型的名称。
|
|
80
|
|
81 最近最多使用模式:
|
|
82 |ctrlp_mruf_max|..............记录的最近最多使用的最大数据。
|
|
83 |ctrlp_mruf_exclude|..........需要被排除的文件。
|
|
84 |ctrlp_mruf_include|..........需要被记录的文件。
|
|
85 |ctrlp_mruf_relative|.........只显示在工作目录内的最近最多使用。
|
|
86 |ctrlp_tilde_homedir|.........保存 home 目录中的 MRU 的目录路径为波浪扩展的形式 ~/。
|
|
87 |ctrlp_mruf_default_order|....禁用排序。
|
|
88 |ctrlp_mruf_case_sensitive|...最近最多使用文件是否大小写敏感。
|
|
89 |ctrlp_mruf_save_on_update|...只要有一个新的条目添加,就保存到磁盘。
|
|
90
|
|
91 缓冲模式:
|
|
92 |ctrlp_bufname_mod|...........文件名部分修饰符。
|
|
93 |ctrlp_bufpath_mod|...........文件路径部分修饰符。
|
|
94
|
|
95 缓冲标签模式: (开启此模式,参考 |ctrlp-extensions| )
|
|
96 |g:ctrlp_buftag_ctags_bin|....兼容的ctags二进制程序的位置。
|
|
97 |g:ctrlp_buftag_systemenc|....ctags命令的编码。
|
|
98 |g:ctrlp_buftag_types|........添加新的文件类型和设置命令行参数。
|
|
99
|
|
100 高级选项:
|
|
101 |ctrlp_open_func|.............使用自定义的打开文件的函数。
|
|
102 |ctrlp_status_func|...........改变CtrlP的两个状态栏
|
|
103 |ctrlp_buffer_func|...........在CtrlP的缓冲区内调用自定义的函数。
|
|
104 |ctrlp_match_func|............替换内建的匹配算法。
|
|
105
|
|
106 -------------------------------------------------------------------------------
|
|
107 详细描述和默认值:~
|
|
108
|
|
109 *'g:ctrlp_map'*
|
|
110 使用该选项来改变普通模式 |Normal| 下调用CtrlP的按键绑定: >
|
|
111 let g:ctrlp_map = '<c-p>'
|
|
112 <
|
|
113
|
|
114 *'g:ctrlp_cmd'*
|
|
115
|
|
116 设置当按下上面的按键绑定时,使用的默认打开命令: >
|
|
117 let g:ctrlp_cmd = 'CtrlP'
|
|
118 <
|
|
119
|
|
120 *'g:loaded_ctrlp'*
|
|
121 使用该选项完全禁用插件: >
|
|
122 let g:loaded_ctrlp = 1
|
|
123 <
|
|
124
|
|
125 *'g:ctrlp_by_filename'*
|
|
126 修改该选项为1,设置默认为按文件名搜索(否则为全路径): >
|
|
127 let g:ctrlp_by_filename = 0
|
|
128 <
|
|
129 在提示符面板内可以使用 <c-d> 来切换。
|
|
130
|
|
131 *'g:ctrlp_regexp'*
|
|
132 修改该选项为1,设置默认为使用正则表达式匹配。: >
|
|
133 let g:ctrlp_regexp = 0
|
|
134 <
|
|
135 在提示符面板内可以使用 <c-r> 来切换。
|
|
136
|
|
137 *'g:ctrlp_match_window'*
|
|
138 改变匹配窗口的位置,结果的排列顺序,最小和最大高度: >
|
|
139 let g:ctrlp_match_window = ''
|
|
140 <
|
|
141 例子: >
|
|
142 let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10'
|
|
143 <
|
|
144 位置: (默认:底部)
|
|
145 top - 在屏幕顶部显示匹配窗口。
|
|
146 bottom - 在屏幕底部显示匹配窗口。
|
|
147
|
|
148 结果的排列顺序: (默认: btt)
|
|
149 order:ttb - 从顶部到底部。
|
|
150 order:btt - 从底部到顶部。
|
|
151
|
|
152 最小和最大高度:
|
|
153 min:{n} - 最少显示 {n} 行 (默认: 1).
|
|
154 max:{n} - 最多显示 {n} 行 (默认: 10).
|
|
155
|
|
156 结果集的最大数目:
|
|
157 results:{n} - 列出最多 {n} 条结果 (默认: 和最大高度同步).
|
|
158 0代表没有限制。
|
|
159
|
|
160 注意: 当一个设置项没有被设置时,将会使用默认值。
|
|
161
|
|
162 *'g:ctrlp_switch_buffer'*
|
|
163 当尝试打开一个文件时,如果它已经在某个窗口被打开,CtrlP会尝试跳到那个窗口,而
|
|
164 不是新打开一个实例。: >
|
|
165 let g:ctrlp_switch_buffer = 'Et'
|
|
166 <
|
|
167 e - 当 <cr> 被按下时跳转,但是只跳转到当前页签内的窗口内。
|
|
168 t - 当 <c-t> 被按下时跳转, 但是只跳转到其它标签的窗口内。
|
|
169 v - 类似 "e", 但是当 <c-v> 被按下时跳转。
|
|
170 h - 类似 "e", 但是当 <c-x> 被按下时跳转。
|
|
171 E, T, V, H - 行为类似 "e", "t", "v", and "h", 但是跳转到任何地方的窗口中。
|
|
172 0 或者 <empty> - 禁用这项功能。
|
|
173
|
|
174 *'g:ctrlp_reuse_window'*
|
|
175 当使用 <cr> 打开新文件时,CtrlP避免在插件,帮助,快速修复创建的窗口中打开该文
|
|
176 件。使用该选项来设置一些例外: >
|
|
177 let g:ctrlp_reuse_window = 'netrw'
|
|
178 <
|
|
179 接受的值可以为特殊缓冲区的名字的一部分,文件类型或者缓冲区类型使用正则表达式来
|
|
180 指定匹配模式。
|
|
181 例子: >
|
|
182 let g:ctrlp_reuse_window = 'netrw\|help\|quickfix'
|
|
183 <
|
|
184
|
|
185 *'g:ctrlp_tabpage_position'*
|
|
186 新打开页签的位置: >
|
|
187 let g:ctrlp_tabpage_position = 'ac'
|
|
188 <
|
|
189 a - 后面。
|
|
190 b - 前面。
|
|
191 c - 当前页签。
|
|
192 l - 最后一个页签。
|
|
193 f - 第一个页签。
|
|
194
|
|
195 *'g:ctrlp_working_path_mode'*
|
|
196 当启动时,CtrlP依据这个变量来设置它的工作目录: >
|
|
197 let g:ctrlp_working_path_mode = 'ra'
|
|
198 <
|
|
199 c - 当前文件所在的目录。
|
|
200 a - 当前文件所在的目录,除非这个目录为当前工作目录的子目录
|
|
201 r - 包含下列文件或者目录的最近的祖先目录:
|
|
202 .git .hg .svn .bzr _darcs
|
|
203 w - 用来修饰r:使用当前工作目录而不是当前文件所在目录进行查找
|
|
204 0 或者 <empty> - 禁用这项功能。
|
|
205
|
|
206 注意 #1: 如果 "a" 或者 "c" 和 "r"一起被包含,当无法找到根目录时使用 "a" 或者
|
|
207 "c" 的行为(作为备选)。
|
|
208
|
|
209 注意 #2: 你可以在每个缓冲区内使用 |b:var| 来设置该选项。
|
|
210
|
|
211 *'g:ctrlp_root_markers'*
|
|
212 使用该选项来设置自定义的根目录标记作为对默认标记(.hg, .svn, .bzr, and _darcs)
|
|
213 的补充。自定义的标记具有优先权: >
|
|
214 let g:ctrlp_root_markers = ['']
|
|
215 <
|
|
216 注意: 你可以在每个缓冲区内使用 |b:var| 来设置该选项。
|
|
217
|
|
218 *'g:ctrlp_use_caching'*
|
|
219 启用/禁用每个会话的缓存: >
|
|
220 let g:ctrlp_use_caching = 1
|
|
221 <
|
|
222 0 - 禁用缓存。
|
|
223 1 - 启用缓存。
|
|
224 n - 当大于1时,禁用缓存,使用该数值作为重新启用缓存的限制条件。
|
|
225
|
|
226 注意: 当在CtrlP中时你可以使用 <F5> 来快速的清除缓存。
|
|
227
|
|
228 *'g:ctrlp_clear_cache_on_exit'*
|
|
229 设置该选项为0通过退出Vim时不删除缓存文件来启用跨会话的缓存: >
|
|
230 let g:ctrlp_clear_cache_on_exit = 1
|
|
231 <
|
|
232
|
|
233 *'g:ctrlp_cache_dir'*
|
|
234 设置存储缓存文件的目录: >
|
|
235 let g:ctrlp_cache_dir = $HOME.'/.cache/ctrlp'
|
|
236 <
|
|
237
|
|
238 *'g:ctrlp_show_hidden'*
|
|
239 如果你想CtrlP扫描隐藏文件和目录,设置该选项为1: >
|
|
240 let g:ctrlp_show_hidden = 0
|
|
241 <
|
|
242 注意: 当命令使用 |g:ctrlp_user_command| 定义时该选项无效。
|
|
243
|
|
244 *'g:ctrlp_custom_ignore'*
|
|
245 除了 |g:ctrlp_show_hidden|,你可以用这个选项设置你想在CtrlP中隐藏的文件和目录。使用正
|
|
246 则表达式来指定匹配模式: >
|
|
247 let g:ctrlp_custom_ignore = ''
|
|
248 <
|
|
249 例子: >
|
|
250 let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
|
|
251 let g:ctrlp_custom_ignore = {
|
|
252 \ 'dir': '\v[\/]\.(git|hg|svn)$',
|
|
253 \ 'file': '\v\.(exe|so|dll)$',
|
|
254 \ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
|
|
255 \ }
|
|
256 let g:ctrlp_custom_ignore = {
|
|
257 \ 'file': '\v(\.cpp|\.h|\.hh|\.cxx)@<!$'
|
|
258 \ }
|
|
259 let g:ctrlp_custom_ignore = {
|
|
260 \ 'func': 'some#custom#match_function'
|
|
261 \ }
|
|
262 <
|
|
263 注意 #1: |g:ctrlp_custom_ignore| 在已经使用 |g:ctrlp_user_command| 的时候不会生效。
|
|
264
|
|
265 注意 #2: 当改变选项的变量类型时,记得先 |:unlet| ,或者重启Vim来避免这个错误:
|
|
266 "E706: Variable type mismatch" 。
|
|
267
|
|
268 注意 #3: 当使用函数来忽略类型时,你必须提供CtrlP可以调用的函数的全名。建议使用
|
|
269 自动加载的函数。函数必须接受两个参数,要匹配的条目和接受的类型,类型可以是目
|
|
270 录、文件和链接。如果条目被忽略,函数需要返回1,反之,返回0。
|
|
271
|
|
272 注意 #4: 如果设置 |g:ctrlp_use_readdir| 为0,你可以使用 Vim 的 |'wildignore'|
|
|
273 来将文件和目录排除出搜索结果。
|
|
274
|
|
275 *'g:ctrlp_max_files'*
|
|
276 扫描文件的最大数量,设置为0时不进行限制: >
|
|
277 let g:ctrlp_max_files = 10000
|
|
278 <
|
|
279 注意: 当命令使用 |g:ctrlp_user_command| 定义时该选项无效。
|
|
280
|
|
281 *'g:ctrlp_max_depth'*
|
|
282 目录树递归的最大层数: >
|
|
283 let g:ctrlp_max_depth = 40
|
|
284 <
|
|
285 注意: 当命令使用 |g:ctrlp_user_command| 定义时该选项无效。
|
|
286
|
|
287 *'g:ctrlp_user_command'*
|
|
288 指定用来代替Vim的 |globpath()| 的外部工具来列出文件,使用 %s 代表目标目录: >
|
|
289 let g:ctrlp_user_command = ''
|
|
290 <
|
|
291 例子: >
|
|
292 let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux
|
|
293 let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows
|
|
294 <
|
|
295 你也可以使用 'grep', 'findstr' 或者其它东西来过滤结果集。
|
|
296 例子: >
|
|
297 let g:ctrlp_user_command =
|
|
298 \ 'find %s -type f | grep -v -P "\.jpg$|/tmp/"' " MacOSX/Linux
|
|
299 let g:ctrlp_user_command =
|
|
300 \ 'dir %s /-n /b /s /a-d | findstr /v /l ".jpg \\tmp\\"' " Windows
|
|
301 <
|
|
302 在扫描一个大型项目时,在仓库目录中使用版本控制系统的列出命令会加快扫描速度: >
|
|
303 let g:ctrlp_user_command = [root_marker, listing_command, fallback_command]
|
|
304 let g:ctrlp_user_command = {
|
|
305 \ 'types': {
|
|
306 \ 1: [root_marker_1, listing_command_1],
|
|
307 \ n: [root_marker_n, listing_command_n],
|
|
308 \ },
|
|
309 \ 'fallback': fallback_command,
|
|
310 \ 'ignore': 0 or 1
|
|
311 \ }
|
|
312 <
|
|
313 一些例子: >
|
|
314 " 单个版本控制系统,列出命令不会列出没有被追踪的文件:
|
|
315 let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']
|
|
316 let g:ctrlp_user_command = ['.hg', 'hg --cwd %s locate -I .']
|
|
317
|
|
318 " 多个版本控制系统:
|
|
319 let g:ctrlp_user_command = {
|
|
320 \ 'types': {
|
|
321 \ 1: ['.git', 'cd %s && git ls-files'],
|
|
322 \ 2: ['.hg', 'hg --cwd %s locate -I .'],
|
|
323 \ },
|
|
324 \ 'fallback': 'find %s -type f'
|
|
325 \ }
|
|
326
|
|
327 " 单个版本控制系统,列出命令列出没有被追踪的文件(较慢):
|
|
328 let g:ctrlp_user_command =
|
|
329 \ ['.git', 'cd %s && git ls-files -co --exclude-standard']
|
|
330
|
|
331 let g:ctrlp_user_command =
|
|
332 \ ['.hg', 'hg --cwd %s status -numac -I . $(hg root)'] " MacOSX/Linux
|
|
333
|
|
334 let g:ctrlp_user_command = ['.hg', 'for /f "tokens=1" %%a in (''hg root'') '
|
|
335 \ . 'do hg --cwd %s status -numac -I . %%a'] " Windows
|
|
336 <
|
|
337 注意 #1: 在 |Dictionary| 格式, 'fallback' 和 'ignore' 是可选的,在 |List| 格式,
|
|
338 备选命令是可选的。
|
|
339
|
|
340 注意 #2: 如果备选命令是空的或者属性 'fallback' 没有定义,当扫描仓库之外目录时,
|
|
341 |globpath()| 会被使用。
|
|
342
|
|
343 注意 #3: 除非使用了 |Dictionary| 格式并且 'ignore' 被定义并且设置为1,当这些自
|
|
344 定义的命令被使用时 |wildignore| 和 |g:ctrlp_custom_ignore| 选项不会生效。没有出现
|
|
345 时,'ignore' 被默认设置为0来保留使用外部命令的性能优势。
|
|
346
|
|
347 注意 #4: 当改变了选项的变量类型时,记得先 |:unlet| ,或者重启Vim来避免这个错误:
|
|
348 "E706: Variable type mismatch" 。
|
|
349
|
|
350 注意 #5: 你可以在每个缓冲区内使用 |b:var| 来设置该选项。
|
|
351
|
|
352 *'g:ctrlp_max_history'*
|
|
353 你希望CtrlP记录的用户输入历史的最大数目。默认值是Vim的全局选项 |'history'| : >
|
|
354 let g:ctrlp_max_history = &history
|
|
355 <
|
|
356 设置为0来禁用提示符面板的历史。使用 <c-n> 和 <c-p> 来浏览历史。
|
|
357
|
|
358 *'g:ctrlp_open_new_file'*
|
|
359 使用该选项指定当使用 <c-y> 打开新建的文件时,文件的打开方式: >
|
|
360 let g:ctrlp_open_new_file = 'v'
|
|
361 <
|
|
362 t - 在新页签中。
|
|
363 h - 在新的水平分割窗口。
|
|
364 v - 在新的竖直分割窗口。
|
|
365 r - 在当前窗口。
|
|
366
|
|
367 *'g:ctrlp_open_multiple_files'*
|
|
368 如果非0, 会启用使用 <c-z> 和 <c-o> 打开多个文件: >
|
|
369 let g:ctrlp_open_multiple_files = 'v'
|
|
370 <
|
|
371 例子: >
|
|
372 let g:ctrlp_open_multiple_files = '2vjr'
|
|
373 <
|
|
374 对于数字:
|
|
375 - 如果指定,会被用来作为打开文件时创建的窗口或者页签的最大数量(剩余的会在隐
|
|
376 藏的缓冲区中打开)。
|
|
377 - 如果没有指定,<c-o> 会打开所有文件,每个在一个新的窗口或者页签中。
|
|
378
|
|
379 对于字母:
|
|
380 t - 每个文件在一个新页签中。
|
|
381 h - 每个文件在一个新的水平分割窗口中。
|
|
382 v - 每个文件在一个新的竖直分割窗口中。
|
|
383 i - 所有的文件在隐藏的缓冲区中。
|
|
384 j - 打开以后,跳转到第一个打开的页签或者窗口。
|
|
385 r - 在当前窗口打开第一个文件,其他文件根据同时出现的"h","v"和"t"中的一个,
|
|
386 在新的分割窗口或者页签中打开。
|
|
387
|
|
388 *'g:ctrlp_arg_map'*
|
|
389 当设置为1时, <c-o> 和 <c-y> 会接收一个额外的键值作为参数,来覆盖默认行为: >
|
|
390 let g:ctrlp_arg_map = 0
|
|
391 <
|
|
392 按下 <c-o> 或者 <c-y> 会提示一次按键。按键可以是:
|
|
393 t - 在新标签页中打开。
|
|
394 h - 每个文件在一个新的水平分割窗口中。
|
|
395 v - 每个文件在一个新的竖直分割窗口中。
|
|
396 i - 所有的文件在隐藏的缓冲区中(只有 <c-o> 生效)。
|
|
397 c - 清楚标记的文件(只有 <c-o> 生效)。
|
|
398 r - 在当前窗口中打开(只有 <c-y> 生效)。
|
|
399 <esc>, <c-c>, <c-u> - 取消并且回到提示符面板。
|
|
400 <cr> - 使用 |g:ctrlp_open_new_file| 和 |g:ctrlp_open_multiple_files| 指定的默
|
|
401 认行为。
|
|
402
|
|
403
|
|
404 *'g:ctrlp_follow_symlinks'*
|
|
405 如果非0,当列出文件时CtrlP会跟随链接: >
|
|
406 let g:ctrlp_follow_symlinks = 0
|
|
407 <
|
|
408 0 - 不要跟随链接。
|
|
409 1 - 跟随但是忽略内部循环的链接,避免重复。
|
|
410 2 - 无差别的跟随所有链接。
|
|
411
|
|
412 注意: 当命令使用 |g:ctrlp_user_command| 定义时该选项无效。
|
|
413
|
|
414 *'g:ctrlp_lazy_update'*
|
|
415 设置为1将或更大可开启延迟更新特性:只在输入停止一个确定的时间后才更新匹配窗口:
|
|
416 >
|
|
417 let g:ctrlp_lazy_update = 0
|
|
418 <
|
|
419 如果设置为1,在250毫秒后更新該值作為默認值。如果大于1,数字会被作为延迟时间使
|
|
420 用。
|
|
421
|
|
422 *'g:ctrlp_default_input'*
|
|
423 设置为1将为提示符面板提供当前文件的相对路径作为种子: >
|
|
424 let g:ctrlp_default_input = 0
|
|
425 <
|
|
426 如果不指定1或0,如果选项的值是字符串,会被用来作为默认输入: >
|
|
427 let g:ctrlp_default_input = 'anystring'
|
|
428 <
|
|
429 这个选项可以和 |g:ctrlp_open_single_match| 配合使用。
|
|
430
|
|
431
|
|
432 *'g:ctrlp_match_current_file'*
|
|
433 在匹配条目中包含当前文件: >
|
|
434 let g:ctrlp_match_current_file = 1
|
|
435
|
|
436 默认情况下,当前文件不包含在列表中。
|
|
437
|
|
438 注意: 当使用 |g:ctrlp_match_func| 时不会应用这个选项。
|
|
439
|
|
440 *'g:ctrlp_types'*
|
|
441 通过设置这个列表变量的值来定制核心类型: >
|
|
442 let g:ctrlp_types = ['mru', 'fil']
|
|
443
|
|
444 类型默认为: >
|
|
445 let g:ctrlp_types = ['fil', 'buf', 'mru'].
|
|
446
|
|
447 *'g:ctrlp_abbrev'*
|
|
448 定义可以在提示面包内被扩展(内部的或者可见的)的输入缩写: >
|
|
449 let g:ctrlp_abbrev = {}
|
|
450 <
|
|
451 例子: >
|
|
452 let g:ctrlp_abbrev = {
|
|
453 \ 'gmode': 'i',
|
|
454 \ 'abbrevs': [
|
|
455 \ {
|
|
456 \ 'pattern': '^cd b',
|
|
457 \ 'expanded': '@cd ~/.vim/bundle',
|
|
458 \ 'mode': 'pfrz',
|
|
459 \ },
|
|
460 \ {
|
|
461 \ 'pattern': '\(^@.\+\|\\\@<!:.\+\)\@<! ',
|
|
462 \ 'expanded': '.\{-}',
|
|
463 \ 'mode': 'pfr',
|
|
464 \ },
|
|
465 \ {
|
|
466 \ 'pattern': '\\\@<!:.\+\zs\\\@<! ',
|
|
467 \ 'expanded': '\ ',
|
|
468 \ 'mode': 'pfz',
|
|
469 \ },
|
|
470 \ ]
|
|
471 \ }
|
|
472 <
|
|
473 字符串 'pattern' 是使用正则表达式来匹配输入的匹配模式。扩展后就像扩展后的字符串
|
|
474 在提示符面板中被输入了一样。
|
|
475
|
|
476 对于 'gmode' (可选的):
|
|
477 i - 内部扩展(默认)。
|
|
478 t - 插入扩展结果到提示符面板,就像你自己输入的一样。
|
|
479 k - 当非关键字的字符被输入时,插入扩展结果到提示符面板。只在"t"也出现时生效。
|
|
480
|
|
481 对于 'mode' (对于每个条目,可选的):
|
|
482 f - 只应用于文件名模式。
|
|
483 p - 只应用于全路径模式。
|
|
484 r - 只应用于正则表达式模式。
|
|
485 z - 只应用于模糊模式。
|
|
486 n - 只应用于使用 <c-y> 创建新文件时(使用扩展后的字符串作为文件名)。
|
|
487 c - 当使用 <tab> 自动补全目录名时(在自动补全之前立即扩展模式)。
|
|
488 <empty> 或者未定义 - 总是启用。
|
|
489
|
|
490 注意: 缩写条目按顺序求值,后求值的条目会覆盖先求值的条目;当 'gmode' 为"t"时,
|
|
491 包括他自己。
|
|
492
|
|
493 *'g:ctrlp_key_loop'*
|
|
494 一个实验性的特性。设置该选项为1将为多字节字符开启输入事件循环: >
|
|
495 let g:ctrlp_key_loop = 0
|
|
496 <
|
|
497 注意 #1: 当设置时,该选项会重置 |g:ctrlp_lazy_update| 选项。
|
|
498
|
|
499 注意 #2: 你可以在提示符面板使用自定义的按键绑定切换这个特性: >
|
|
500 let g:ctrlp_prompt_mappings = { 'ToggleKeyLoop()': ['<F3>'] }
|
|
501 <
|
|
502
|
|
503 *'g:ctrlp_prompt_mappings'*
|
|
504 使用该选项来自定义CtrlP的提示窗口内的按键绑定为你喜欢的方式。你只需要保留你改
|
|
505 变值(在[]内部)的行: >
|
|
506 let g:ctrlp_prompt_mappings = {
|
|
507 \ 'PrtBS()': ['<bs>', '<c-]>'],
|
|
508 \ 'PrtDelete()': ['<del>'],
|
|
509 \ 'PrtDeleteWord()': ['<c-w>'],
|
|
510 \ 'PrtClear()': ['<c-u>'],
|
|
511 \ 'PrtSelectMove("j")': ['<c-j>', '<down>'],
|
|
512 \ 'PrtSelectMove("k")': ['<c-k>', '<up>'],
|
|
513 \ 'PrtSelectMove("t")': ['<Home>', '<kHome>'],
|
|
514 \ 'PrtSelectMove("b")': ['<End>', '<kEnd>'],
|
|
515 \ 'PrtSelectMove("u")': ['<PageUp>', '<kPageUp>'],
|
|
516 \ 'PrtSelectMove("d")': ['<PageDown>', '<kPageDown>'],
|
|
517 \ 'PrtHistory(-1)': ['<c-n>'],
|
|
518 \ 'PrtHistory(1)': ['<c-p>'],
|
|
519 \ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'],
|
|
520 \ 'AcceptSelection("h")': ['<c-x>', '<c-cr>', '<c-s>'],
|
|
521 \ 'AcceptSelection("t")': ['<c-t>'],
|
|
522 \ 'AcceptSelection("v")': ['<c-v>', '<RightMouse>'],
|
|
523 \ 'ToggleFocus()': ['<s-tab>'],
|
|
524 \ 'ToggleRegex()': ['<c-r>'],
|
|
525 \ 'ToggleByFname()': ['<c-d>'],
|
|
526 \ 'ToggleType(1)': ['<c-f>', '<c-up>'],
|
|
527 \ 'ToggleType(-1)': ['<c-b>', '<c-down>'],
|
|
528 \ 'PrtExpandDir()': ['<tab>'],
|
|
529 \ 'PrtInsert("c")': ['<MiddleMouse>', '<insert>'],
|
|
530 \ 'PrtInsert()': ['<c-\>'],
|
|
531 \ 'PrtCurStart()': ['<c-a>'],
|
|
532 \ 'PrtCurEnd()': ['<c-e>'],
|
|
533 \ 'PrtCurLeft()': ['<c-h>', '<left>', '<c-^>'],
|
|
534 \ 'PrtCurRight()': ['<c-l>', '<right>'],
|
|
535 \ 'PrtClearCache()': ['<F5>'],
|
|
536 \ 'PrtDeleteEnt()': ['<F7>'],
|
|
537 \ 'CreateNewFile()': ['<c-y>'],
|
|
538 \ 'MarkToOpen()': ['<c-z>'],
|
|
539 \ 'OpenMulti()': ['<c-o>'],
|
|
540 \ 'PrtExit()': ['<esc>', '<c-c>', '<c-g>'],
|
|
541 \ }
|
|
542 <
|
|
543 注意: 如果按 <bs> 后光标向左移动一个字符而不是删除一个字符,在你的.vimrc中添加
|
|
544 下面的设置来禁用插件默认的 <c-h> 绑定: >
|
|
545 let g:ctrlp_prompt_mappings = { 'PrtCurLeft()': ['<left>', '<c-^>'] }
|
|
546 <
|
|
547
|
|
548 *'g:ctrlp_line_prefix'*
|
|
549 这个前缀会被加到ctrlp的条目列表中每一行的前面。
|
|
550 默认值: >
|
|
551 let g:ctrlp_line_prefix = '> '
|
|
552 <
|
|
553
|
|
554 *'g:ctrlp_open_single_match'*
|
|
555 当CtrlP处于列表中配置的模式中时,如果只有一个候选条目,CtrlP会直接接受该条目。
|
|
556 例子: >
|
|
557 let g:ctrlp_open_single_match = ['buffer tags', 'buffer']
|
|
558 <
|
|
559 目前这个选项的作用是和 |g:ctrlp_default_input| 一起,使用类似下面的函数,在使用
|
|
560 前设置,使用完后还原: >
|
|
561 fu! <SID>tagsUnderCursor()
|
|
562 try
|
|
563 let default_input_save = get(g:, 'ctrlp_default_input', '')
|
|
564 let g:ctrlp_default_input = expand('<cword>')
|
|
565 CtrlPBufTagAll
|
|
566 finally
|
|
567 if exists('default_input_save')
|
|
568 let g:ctrlp_default_input = default_input_save
|
|
569 endif
|
|
570 endtry
|
|
571 endfu
|
|
572 >
|
|
573 <
|
|
574 ----------------------------------------
|
|
575 MRU mode options:~
|
|
576
|
|
577 *'g:ctrlp_mruf_max'*
|
|
578 指定你希望CtrlP记录的最近打开的文件历史的数目: >
|
|
579 let g:ctrlp_mruf_max = 250
|
|
580 <
|
|
581
|
|
582 *'g:ctrlp_mruf_exclude'*
|
|
583 你不希望CtrlP记录的文件。使用正则表达式来指定模式: >
|
|
584 let g:ctrlp_mruf_exclude = ''
|
|
585 <
|
|
586 例子: >
|
|
587 let g:ctrlp_mruf_exclude = '/tmp/.*\|/temp/.*' " MacOSX/Linux
|
|
588 let g:ctrlp_mruf_exclude = '^C:\\dev\\tmp\\.*' " Windows
|
|
589 <
|
|
590
|
|
591 *'g:ctrlp_mruf_include'*
|
|
592 如果你想让CtrlP只记录某些文件,在这里指定: >
|
|
593 let g:ctrlp_mruf_include = ''
|
|
594 <
|
|
595 例子: >
|
|
596 let g:ctrlp_mruf_include = '\.py$\|\.rb$'
|
|
597 <
|
|
598 *'g:ctrlp_tilde_homedir'*
|
|
599 将这个选项设置为1来把所有的 MRU 文件路径中 $HOME 目录下的 $HOME/$filepath 保存
|
|
600 为 ~/$filepath ,而不是 $HOME/$filepath : >
|
|
601 let g:ctrlp_tilde_homedir = 0
|
|
602 <
|
|
603 注意: 对所有通过 :CtrlPBookmarkDirAdd! 保存的也有效
|
|
604
|
|
605 *'g:ctrlp_mruf_relative'*
|
|
606 设置该选项为1将只显示在当前工作目录内的最近最多使用文件: >
|
|
607 let g:ctrlp_mruf_relative = 0
|
|
608 <
|
|
609 注意: 你可以在提示符面板使用自定义的按键绑定切换这个特性: >
|
|
610 let g:ctrlp_prompt_mappings = { 'ToggleMRURelative()': ['<F2>'] }
|
|
611 <
|
|
612
|
|
613 *'g:ctrlp_mruf_default_order'*
|
|
614 设置该选项为1将在最近最多使用模式搜索时禁用排序: >
|
|
615 let g:ctrlp_mruf_default_order = 0
|
|
616 <
|
|
617
|
|
618 *'g:ctrlp_mruf_case_sensitive'*
|
|
619 将该选项和你的文件系统大小写敏感性保持一致来避免重复的最近最多使用条目: >
|
|
620 let g:ctrlp_mruf_case_sensitive = 1
|
|
621 <
|
|
622
|
|
623 *'g:ctrlp_mruf_save_on_update'*
|
|
624 设置该选项为 0 禁止 CtrlP 每当有一个新条目增加就把最近最多使用列表保存到磁盘
|
|
625 文件,而是在退出Vim时才保存: >
|
|
626 let g:ctrlp_mruf_save_on_update = 1
|
|
627 <
|
|
628 *'g:ctrlp_bufname_mod'*
|
|
629 根据修饰符修改文件名部分。参见 |filename-modifiers| 。 >
|
|
630 let g:ctrlp_bufname_mod = ':t'
|
|
631 <
|
|
632 *'g:ctrlp_bufpath_mod'*
|
|
633 根据修饰符修改文件路径部分。参见 |filename-modifiers| 。 >
|
|
634 let g:ctrlp_bufpath_mod = ':~:.:h'
|
|
635 <
|
|
636 ----------------------------------------
|
|
637 高级选项:~
|
|
638
|
|
639 *'g:ctrlp_open_func'*
|
|
640 使用一个自定义函数来打开选定的文件: >
|
|
641 let g:ctrlp_open_func = {}
|
|
642 <
|
|
643 例子: >
|
|
644 let g:ctrlp_open_func = {
|
|
645 \ 'files' : 'Function_Name_1',
|
|
646 \ 'buffers' : 'Function_Name_2',
|
|
647 \ 'mru files' : 'Function_Name_3',
|
|
648 \ }
|
|
649 <
|
|
650 函数结构: >
|
|
651 function! Function_Name(action, line)
|
|
652 " 参数:
|
|
653 " |
|
|
654 " +- a:action : 打开的动作:
|
|
655 " | + 'e' : 用户按下 <cr> (默认)
|
|
656 " | + 'h' : 用户按下 <c-x> (默认)
|
|
657 " | + 'v' : 用户按下 <c-v> (默认)
|
|
658 " | + 't' : 用户按下 <c-t> (默认)
|
|
659 " | + 'x' : 用户使用 <c-o> 终端对话框 (默认) 选择"e[x]ternal"。
|
|
660 " |
|
|
661 " +- a:line : 选择的文件。
|
|
662
|
|
663 endfunction
|
|
664 <
|
|
665 注意: 当使用<c-z> 和 <c-o>打开多个文件时无效。
|
|
666
|
|
667 例子: 当 <c-t> 被按下时在默认浏览器中打开HTML文件,否则在Vim中打开 >
|
|
668 function! HTMLOpenFunc(action, line)
|
|
669 if a:action =~ '^[tx]$' && fnamemodify(a:line, ':e') =~? '^html\?$'
|
|
670
|
|
671 " 获取文件名
|
|
672 let filename = fnameescape(fnamemodify(a:line, ':p'))
|
|
673
|
|
674 " 关闭CtrlP
|
|
675 call ctrlp#exit()
|
|
676
|
|
677 " 打开文件
|
|
678 silent! execute '!xdg-open' filename
|
|
679
|
|
680 elseif a:action == 'x' && fnamemodify(a:line, ':e') !~? '^html\?$'
|
|
681
|
|
682 " 不是HTML文件,再次模拟 <c-o> 按键并且等待新的输入
|
|
683 call feedkeys("\<c-o>")
|
|
684
|
|
685 else
|
|
686
|
|
687 " 使用CtrlP的默认的打开文件的函数
|
|
688 call call('ctrlp#acceptfile', [a:action, a:line])
|
|
689
|
|
690 endif
|
|
691 endfunction
|
|
692
|
|
693 let g:ctrlp_open_func = { 'files': 'HTMLOpenFunc' }
|
|
694 <
|
|
695
|
|
696 *'g:ctrlp_status_func'*
|
|
697 为CtrlP窗口使用自定义的状态栏: >
|
|
698 let g:ctrlp_status_func = {}
|
|
699 <
|
|
700 例子: >
|
|
701 let g:ctrlp_status_func = {
|
|
702 \ 'main': 'Function_Name_1',
|
|
703 \ 'prog': 'Function_Name_2',
|
|
704 \ }
|
|
705 <
|
|
706 函数结构: >
|
|
707 " 主状态栏
|
|
708 function! Function_Name_1(focus, byfname, regex, prev, item, next, marked)
|
|
709 " 参数:
|
|
710 " |
|
|
711 " +- a:focus : 提示符面板的焦点: "prt" 或者 "win"。
|
|
712 " |
|
|
713 " +- a:byfname : 在文件名模式还是全路径模式: "file" 或者 "path"。
|
|
714 " |
|
|
715 " +- a:regex : 是否在正则表达式模式: 1 or 0。
|
|
716 " |
|
|
717 " +- a:prev : 前一个搜索模式。
|
|
718 " |
|
|
719 " +- a:item : 当前的搜索模式。
|
|
720 " |
|
|
721 " +- a:next : 下一个搜索模式。
|
|
722 " |
|
|
723 " +- a:marked : 被标记文件的数目,或者一个逗号分隔的被标记的文件名列表。
|
|
724
|
|
725 return full_statusline
|
|
726 endfunction
|
|
727
|
|
728 " 状态栏进度条
|
|
729 function! Function_Name_2(str)
|
|
730 " a:str : 一个当前已扫描的文件数,或者一个当前扫描目录和用户命令的字符串。
|
|
731
|
|
732 return full_statusline
|
|
733 endfunction
|
|
734 <
|
|
735 一个可用的例子,参见 https://gist.github.com/1610859 。
|
|
736
|
|
737 *'g:ctrlp_buffer_func'*
|
|
738 指定一个会在启动或者退出CtrlP缓冲区时被调用的函数: >
|
|
739 let g:ctrlp_buffer_func = {}
|
|
740 <
|
|
741 例子: >
|
|
742 let g:ctrlp_buffer_func = {
|
|
743 \ 'enter': 'Function_Name_1',
|
|
744 \ 'exit': 'Function_Name_2',
|
|
745 \ }
|
|
746 <
|
|
747
|
|
748 *'g:ctrlp_match_func'*
|
|
749 为CtrlP设置一个额外的模糊匹配函数: >
|
|
750 let g:ctrlp_match_func = {}
|
|
751 <
|
|
752 例子: >
|
|
753 let g:ctrlp_match_func = { 'match': 'Function_Name' }
|
|
754 <
|
|
755 函数结构: >
|
|
756 function! Function_Name(items, str, limit, mmode, ispath, crfile, regex)
|
|
757 " 参数:
|
|
758 " |
|
|
759 " +- a:items : 搜索条目的全列表。
|
|
760 " |
|
|
761 " +- a:str : 用户输入的字符串。
|
|
762 " |
|
|
763 " +- a:limit : 匹配窗口的最大高度。可以用来限制返回的条目数量。
|
|
764 " |
|
|
765 " +- a:mmode : 在匹配模式。可以是下列字符串之一:
|
|
766 " | + "full-line": 匹配整行。
|
|
767 " | + "filename-only": 只匹配文件名。
|
|
768 " | + "first-non-tab": 匹配到第一个制表符。
|
|
769 " | + "until-last-tab": 匹配到最后一个制表符。
|
|
770 " |
|
|
771 " +- a:ispath : 搜索文件,缓冲区,最近最多使用,混合,目录和rtscript模.
|
|
772 " | 式时为1。其它为0。
|
|
773 " |
|
|
774 " +- a:crfile : 当前窗口中的文件。当a:ispath为1时应该被搜索结果排除在外
|
|
775 " |
|
|
776 " +- a:regex : 是否在正则表达式模式: 1 or 0.
|
|
777
|
|
778 return list_of_matched_items
|
|
779 endfunction
|
|
780 <
|
|
781
|
|
782 注意: 你可以通过 { 'arg_type': 'dict' } 扩展上面的任何选项,这样就可以通过
|
|
783 一个字典类型的参数来传递所有的函数参数。使用参数名作为字典的键值。
|
|
784
|
|
785 例子: >
|
|
786 let g:ctrlp_status_func = {
|
|
787 \ 'arg_type' : 'dict',
|
|
788 \ 'enter': 'Function_Name_1',
|
|
789 \ 'exit': 'Function_Name_2',
|
|
790 \ }
|
|
791
|
|
792 function! Function_Name_1(dict)
|
|
793 " where dict == {
|
|
794 " \ 'focus': value,
|
|
795 " \ 'byfname': value,
|
|
796 " \ 'regex': value,
|
|
797 " \ ...
|
|
798 " }
|
|
799 endfunction
|
|
800 <
|
|
801 *'g:ctrlp_brief_prompt'*
|
|
802 当设置为 1 时, 提示符后为空时按 <bs> 会退出 CtrlP 。
|
|
803
|
|
804 *ctrlp-default-value*
|
|
805 另外,你可以使用下面的方式来改变默认值。
|
|
806 例子: >
|
|
807 let g:ctrlp_path_nolim = 1
|
|
808
|
|
809 这样可以让无限制模式匹配“路径”类型。
|
|
810 ===============================================================================
|
|
811 命令 *ctrlp-commands*
|
|
812
|
|
813 *:CtrlP*
|
|
814 :CtrlP [起始目录]
|
|
815 用文件搜索模式打开CtrlP。
|
|
816
|
|
817 如果没有给定参数,|g:ctrlp_working_path_mode| 会被用来决定起始目录。临时覆盖
|
|
818 这个参数 的方法见 |:CtrlPCurFile| 和 |:CtrlPCurWD| 。
|
|
819
|
|
820 在输入时你可以使用 <tab> 自动补全[起始目录]。
|
|
821
|
|
822 *:CtrlPBuffer*
|
|
823 :CtrlPBuffer
|
|
824 用缓冲区搜索模式打开CtrlP。
|
|
825
|
|
826 *:CtrlPCurFile*
|
|
827 :CtrlPCurFile
|
|
828 行为类似变量 |g:ctrlp_working_path_mode| = '' 时执行 |:CtrlP| ,忽略这个变量
|
|
829 现在的值。
|
|
830
|
|
831 *:CtrlPCurWD*
|
|
832 :CtrlPCurWD
|
|
833 行为类似变量 |g:ctrlp_working_path_mode| = '' 时执行 |:CtrlP| ,忽略这个变量
|
|
834 现在的值。
|
|
835
|
|
836 *:CtrlPMRU*
|
|
837 :CtrlPMRU
|
|
838 用最近最多使用模式打开CtrlP。
|
|
839
|
|
840 *:CtrlPLastMode*
|
|
841 :CtrlPLastMode [--dir]
|
|
842 用上一次使用的模式打开CtrlP。当提供了"--dir"参数,也重用上一次的工作目录。
|
|
843
|
|
844 *:CtrlPRoot*
|
|
845 :CtrlPRoot
|
|
846 行为类似使用了 |g:ctrlp_working_path_mode| = 'r' 并且忽略了该变量的当前值的
|
|
847 |:CtrlP| 命令。
|
|
848
|
|
849 *:CtrlPClearCache*
|
|
850 :CtrlPClearCache
|
|
851 清除当前工作目录的缓存。和在CtrlP内按 <F5> 效果一样。
|
|
852 使用 |g:ctrlp_use_caching| 来启用或禁用缓存。
|
|
853
|
|
854 *:CtrlPClearAllCaches*
|
|
855 :CtrlPClearAllCaches
|
|
856 删除在 |g:ctrlp_cache_dir| 中定义的缓存目录中的所有缓存文件。
|
|
857
|
|
858 -------------------------------------------------------------------------------
|
|
859 由扩展提供的命令参见 |ctrlp-extensions| 。
|
|
860
|
|
861 ===============================================================================
|
|
862 按键绑定 *ctrlp-mappings*
|
|
863
|
|
864 *'ctrlp-<c-p>'*
|
|
865 <c-p>
|
|
866 普通模式 |Normal| 下默认以文件搜索模式打开CtrlP提示符面板。
|
|
867
|
|
868 ----------------------------------------
|
|
869 已经在提示符面板中:~
|
|
870
|
|
871 <c-d>
|
|
872 在全路径搜索和文件名搜索间切换。
|
|
873 注意: 在文件名搜索模式,提示符面板的提示符是'>d>',而不是'>>>'
|
|
874
|
|
875 <c-r> *'ctrlp-fullregexp'*
|
|
876 在字符串搜索模式和正则表达式模式之间切换。
|
|
877 注意: 在全正则表达式模式,提示符面板的提示符是'r>>',而不是'>>>'
|
|
878
|
|
879 详细参见: |input-formats| (指引)和 |g:ctrlp_regexp_search| 选项。
|
|
880
|
|
881 <c-f>, 'forward' 前进
|
|
882 <c-up>
|
|
883 切换到序列里面的 'next' 后一个搜索模式。
|
|
884
|
|
885 <c-b>, 'backward' 后退
|
|
886 <c-down>
|
|
887 切换到序列里面的 'previous' 前一个搜索模式。
|
|
888
|
|
889 <tab> *'ctrlp-autocompletion'*
|
|
890 自动补全在提示符面板的当前工作路径中的目录名。
|
|
891
|
|
892 <s-tab>
|
|
893 在匹配窗口和提示符面板之间切换焦点。
|
|
894
|
|
895 <esc>,
|
|
896 <c-c>,
|
|
897 <c-g>
|
|
898 退出CtrlP。
|
|
899
|
|
900 移动:~
|
|
901
|
|
902 <c-j>,
|
|
903 <down>
|
|
904 向下移动。
|
|
905
|
|
906 <c-k>,
|
|
907 <up>
|
|
908 向上移动。
|
|
909
|
|
910 <c-a>
|
|
911 移动光标到提示符面板的 'start' 开头。
|
|
912
|
|
913 <c-e>
|
|
914 移动光标到提示符面板的 'end' 末尾。
|
|
915
|
|
916 <c-h>,
|
|
917 <left>,
|
|
918 <c-^>
|
|
919 向左 'left' 移动一个字符。
|
|
920
|
|
921 <c-l>,
|
|
922 <right>
|
|
923 向右 'right' 移动一个字符。
|
|
924
|
|
925 编辑:~
|
|
926
|
|
927 <c-]>,
|
|
928 <bs>
|
|
929 删除前一个字符。
|
|
930
|
|
931 <del>
|
|
932 删除当前字符。
|
|
933
|
|
934 <c-w>
|
|
935 删除前一个单词。
|
|
936
|
|
937 <c-u>
|
|
938 清除输入。
|
|
939
|
|
940 浏览输入历史:~
|
|
941
|
|
942 <c-n>
|
|
943 提示符面板历史里的下一个字符串。
|
|
944
|
|
945 <c-p>
|
|
946 提示符面板历史里的上一个字符串。
|
|
947
|
|
948 打开/创建文件:~
|
|
949
|
|
950 <cr>
|
|
951 如果可能的话在 'current' 当前窗口打开选择的文件。
|
|
952
|
|
953 <c-t>
|
|
954 在 'tab' 新标签打开选择的文件。
|
|
955 Open the selected file in a new 'tab'.
|
|
956
|
|
957 <c-v>
|
|
958 在 'vertical' 竖直分割窗口打开选择的文件。
|
|
959
|
|
960 <c-x>,
|
|
961 <c-cr>,
|
|
962 <c-s>
|
|
963 在 'horizontal' 水平分割窗口打开选择的文件。
|
|
964
|
|
965 <c-y>
|
|
966 创建一个新文件和它的父目录。
|
|
967
|
|
968 打开多个文件:~
|
|
969
|
|
970 <c-z>
|
|
971 - 标记/取消标记一个被 <c-o> 打开的文件。
|
|
972 - 标记/取消标记一个被 <c-y> 在它的目录被创建的文件。
|
|
973
|
|
974 <c-o>
|
|
975 - 打开被 <c-z> 标记的文件。
|
|
976 - 当没有文件被 <c-z> 标记时,使用下列选项打开一个终端对话框:
|
|
977
|
|
978 打开被选择的文件:
|
|
979 t - 在新标签页中打开。
|
|
980 v - 在一个竖直分割窗口中。
|
|
981 h - 在一个水平分割窗口中。
|
|
982 r - 在当前窗口中打开。
|
|
983 i - 在隐藏的缓冲区中。
|
|
984 x - (可选的)使用 |g:ctrlp_open_func| 中定义的函数。
|
|
985
|
|
986 其它选项 (未显示):
|
|
987 a - 标记匹配窗口中的所有文件。
|
|
988 d - 改变CtrlP的工作目录到被选择的文件的目录并切换到文件搜索模式。
|
|
989
|
|
990 功能按键绑定:~
|
|
991
|
|
992 <F5>
|
|
993 - 刷新匹配窗口并且清除当前目录的缓存。
|
|
994 - 从最近最多使用中移除被删除的文件。
|
|
995
|
|
996 <F7>
|
|
997 最近最多使用模式:
|
|
998 - 清除最近最多使用列表。
|
|
999 - 删除被 <c-z> 标记的最近最多使用条目。
|
|
1000 缓冲区模式:
|
|
1001 - 删除光标下的条目或者删除被 <c-z> 标记的多个条目。
|
|
1002
|
|
1003 粘贴:~
|
|
1004
|
|
1005 <Insert>, *'ctrlp-pasting'*
|
|
1006 <MiddleMouse>
|
|
1007 将剪贴板中的文本粘贴到提示符窗口中。
|
|
1008
|
|
1009 <c-\>
|
|
1010 打开一个终端对话框来粘贴 <cword>, <cfile>,搜索寄存器的文本,上一次可视
|
|
1011 化模式的选择,剪贴板或者任何寄存器到提示符面板中。
|
|
1012
|
|
1013 使用 |g:ctrlp_prompt_mappings| 选择你自己的绑定。
|
|
1014
|
|
1015 ----------------------------------------
|
|
1016 当焦点在匹配窗口中时(使用 <s-tab> 来切换):~
|
|
1017
|
|
1018 a-z
|
|
1019 0-9
|
|
1020 ~^-=;`',.+!@#$%&_(){}[]
|
|
1021 在匹配第一个字符的行中循环。
|
|
1022
|
|
1023 ===============================================================================
|
|
1024 输入格式 *ctrlp-input-formats*
|
|
1025
|
|
1026 提示符面板的输入格式:~
|
|
1027
|
|
1028 a) 字符串。
|
|
1029
|
|
1030 例如: 'abc' 被内部理解为 'a[^a]\{-}b[^b]\{-}c'
|
|
1031
|
|
1032 b) 在正则表达式模式,输入字符串被按照Vim的正则表达式模式 |pattern| 来对待,不
|
|
1033 进行任何修改。
|
|
1034
|
|
1035 例如: 'abc\d*efg' 会被解读为 'abc\d*efg'。
|
|
1036
|
|
1037 如何启用正则表达式模式参见 |ctrlp-fullregexp| (按键绑定)和
|
|
1038 |g:ctrlp_regexp_search| (选项)。
|
|
1039
|
|
1040 c) 字符串末尾使用一个冒号':'跟随一个Vim命令来在打开那个文件后执行该命令。如果
|
|
1041 你需要使用':'的字面意思,使用反斜杠转义'\:'。但打开多个文件时,命令会在每
|
|
1042 个打开文件上执行。
|
|
1043
|
|
1044 例如: 使用':45'跳转到第45行。
|
|
1045
|
|
1046 使用':/any\:string'跳转到'any:string'第一次出现的地方。
|
|
1047
|
|
1048 使用':+setf\ myfiletype|50'来设置文件类型为 'myfiletype',然后跳转
|
|
1049 到第50行。
|
|
1050
|
|
1051 使用':diffthis'当打开多个文件时在前四个文件上调用 |:diffthis| 。
|
|
1052
|
|
1053 参见: Vim的 |++opt| 和 |+cmd|.
|
|
1054
|
|
1055 d) 提交两个点号 '..' 来进入上级目录。如果想进入向上多级目录,每多一级使用一个
|
|
1056 额外的点号:
|
|
1057 >
|
|
1058 输入 解释为
|
|
1059 .. ../
|
|
1060 ... ../../
|
|
1061 .... ../../../
|
|
1062 <
|
|
1063 注意: 如果父目录很大并且没有被缓存,可能会很慢。
|
|
1064
|
|
1065 你可以使用'@cd path/'来改变CtrlP的工作目录为path/。使用'@cd %:h'来改变为当
|
|
1066 前文件的目录。
|
|
1067
|
|
1068 e) 类似的,提交'/'或者'\'来查找或者跳转到项目的根目录。
|
|
1069
|
|
1070 如果项目很大,使用版本控制系统的列出命令来寻找文件可能会加速初始化扫描。(
|
|
1071 更多细节参见 |g:ctrlp_user_command| )。
|
|
1072
|
|
1073 注意: d) 和 e) 只在文件,目录和混合模式生效。
|
|
1074
|
|
1075 f) 输入一个不存在的文件名并且按下 <c-y> 来创建文件。如果使用 <c-z> 标记了一个
|
|
1076 文件,将会在被标记的文件的目录下创建这个新文件。
|
|
1077
|
|
1078 例如: 使用 'newdir/newfile.txt' 会创建一个名为'newdir'的目录和一个名为
|
|
1079 'newfile.txt'的文件。
|
|
1080
|
|
1081 如果一个条目'some/old/dirs/oldfile.txt'被 <c-z> 标记,然后 'newdir'
|
|
1082 和'newfile.txt'会在'some/old/dirs'下被创建。最终的路径会像下面这样
|
|
1083 'some/old/dirs/newdir/newfile.txt'.
|
|
1084
|
|
1085 注意: 在Windows下使用 '\' 代替 '/' (如果 |'shellslash'| 选项没有设置)。
|
|
1086
|
|
1087 g) 在文件名模式(使用 <c-d> 切换)下,你可以使用被逗号分隔的一个主要的模式和
|
|
1088 一个改善的模式。两个模式在正则表达式模式下像(a)或(b)那样工作。
|
|
1089
|
|
1090 h) 使用?打开帮助文件。
|
|
1091
|
|
1092 ===============================================================================
|
|
1093 扩展 *ctrlp-extensions*
|
|
1094
|
|
1095 扩展是可选的。把它的名字添加到变量g:ctrlp_extensions中来开启扩展: >
|
|
1096 let g:ctrlp_extensions = ['tag', 'buffertag', 'quickfix', 'dir', 'rtscript',
|
|
1097 \ 'undo', 'line', 'changes', 'mixed', 'bookmarkdir']
|
|
1098 <
|
|
1099 扩展的名字在变量中出现的顺序会是在使用命令 <c-f>, <c-b> 切换时扩展在状态栏中出
|
|
1100 现的顺序。
|
|
1101
|
|
1102 可用的扩展:~
|
|
1103
|
|
1104 *:CtrlPTag*
|
|
1105 * 标记模式:~
|
|
1106 - 名称: 'tag'
|
|
1107 - 命令: ":CtrlPTag"
|
|
1108 - 在一个生成的标记文件中搜索标签,跳转到标签定义。使用Vim的 |'tags'| 来指定
|
|
1109 标签文件的位置和名称。
|
|
1110 例如: set tags+=doc/tags
|
|
1111
|
|
1112 *:CtrlPBufTag*
|
|
1113 *:CtrlPBufTagAll*
|
|
1114 * 缓冲区标签模式:~
|
|
1115 - 名称: 'buffertag'
|
|
1116 - 命令: ":CtrlPBufTag [缓冲区]",
|
|
1117 ":CtrlPBufTagAll"。
|
|
1118 - 在当前缓冲区或者所有列出的缓冲区中搜索标签并且跳转到定义。需要
|
|
1119 |exuberant_ctags| 或者兼容的程序。
|
|
1120
|
|
1121 *:CtrlPQuickfix*
|
|
1122 * 快速修复模式:~
|
|
1123 - 名称: 'quickfix'
|
|
1124 - 命令: ":CtrlPQuickfix"
|
|
1125 - 在当前的快速修复错误列表中搜索条目并且跳转过去。
|
|
1126
|
|
1127 *:CtrlPDir*
|
|
1128 * 目录模式:~
|
|
1129 - 名称: 'dir'
|
|
1130 - 命令: ":CtrlPDir [起始muu]"
|
|
1131 - 搜索目录并且将其作为工作目录。
|
|
1132 - 按键绑定:
|
|
1133 + <cr> 为CtrlP修改工作目录并且保持打开状态。
|
|
1134 + <c-t> 修改全局的工作目录(退出)。
|
|
1135 + <c-v> 为当前窗口修改工作目录(退出)。
|
|
1136 + <c-x> 修改全局工作目录为CtrlP的当前工作目录(退出)。
|
|
1137
|
|
1138 *:CtrlPRTS*
|
|
1139 * 运行时脚本模式:~
|
|
1140 - 名称: 'rtscript'
|
|
1141 - 命令: ":CtrlPRTS"
|
|
1142 - 在运行时路径中寻找文件(vimscripts, docs, snippets...)。
|
|
1143
|
|
1144 *:CtrlPUndo*
|
|
1145 * 撤销模式:~
|
|
1146 - 名称: 'undo'
|
|
1147 - 命令: ":CtrlPUndo"
|
|
1148 - 浏览撤销历史。
|
|
1149
|
|
1150 *:CtrlPLine*
|
|
1151 * 行模式:~
|
|
1152 - 名称: 'line'
|
|
1153 - 命令: ":CtrlPLine [缓冲区]"
|
|
1154 - 在所有列出的缓冲区或者在指定的 [buffer] 缓冲区内搜索一行内容。
|
|
1155
|
|
1156 *:CtrlPChange*
|
|
1157 *:CtrlPChangeAll*
|
|
1158 * 修改列表模式:~
|
|
1159 - 名称: 'changes'
|
|
1160 - 命令: ":CtrlPChange [缓冲区]",
|
|
1161 ":CtrlPChangeAll".
|
|
1162 - 在当前缓冲区或者在所有列出的缓冲区内搜索最近的修改并跳转。
|
|
1163
|
|
1164 *:CtrlPMixed*
|
|
1165 * 混合模式:~
|
|
1166 - 名称: 'mixed'
|
|
1167 - 命令: ":CtrlPMixed"
|
|
1168 - 同时在文件,缓冲区和最近最多修改中搜索。
|
|
1169
|
|
1170 *:CtrlPBookmarkDir*
|
|
1171 *:CtrlPBookmarkDirAdd*
|
|
1172 * 书签目录模式:~
|
|
1173 - 名称: 'bookmarkdir'
|
|
1174 - 命令: ":CtrlPBookmarkDir",
|
|
1175 ":CtrlPBookmarkDirAdd [目录] [标题]".
|
|
1176 ":CtrlPBookmarkDirAdd! [目录] [标题]".
|
|
1177 - 搜索一个被书签标记的目录并将其作为工作目录。
|
|
1178 - 以指定的[标题]添加[目录]到 CtrlPBookmarkDir 中,如果没有给出[标题]或
|
|
1179 者[目录],会请求用户输入。
|
|
1180 - 以指定的[标题]添加[目录]到 CtrlPBookmarkDir 中,如果没有给出目录,则
|
|
1181 默认为当前目录( [CWD] ),如果没有给出[标题] ,会请求用户输入。
|
|
1182
|
|
1183 最新的用来添加所有最近使用过的目录到 CtrlPBookmarkDir 列表中的自动命令
|
|
1184 如下
|
|
1185 >
|
|
1186 augroup CtrlPDirMRU
|
|
1187 autocmd!
|
|
1188 autocmd FileType * if &modifiable | execute 'silent CtrlPBookmarkDirAdd! %:p:h' | endif
|
|
1189 augroup END
|
|
1190 <
|
|
1191
|
|
1192 - 按键绑定:
|
|
1193 + <cr> 为CtrlP修改工作目录并且保持打开状态,并且切换到文件搜索模式。
|
|
1194 + <c-x> 修改全局的工作目录(退出)。
|
|
1195 + <c-v> 为当前窗口修改工作目录(退出)。
|
|
1196 + <F7>
|
|
1197 - 清除书签列表。
|
|
1198 - 删除被 <c-z> 标记的书签条目。
|
|
1199
|
|
1200 *ctrlp-autoignore-extension*
|
|
1201 * 自动忽略模式:~
|
|
1202 - 名称: 'autoignore'
|
|
1203
|
|
1204 - 这个扩展并不会添加新命令。它支持通过项目根目录中的 `.ctrlpignore` 文件为
|
|
1205 每个项目设置忽略模式 (就像属于单个项目的 |ctrlp_custom_ignore|)。基本
|
|
1206 上就像 CtrlP 的 `.gitignore` 或者 `.hgignore`。
|
|
1207
|
|
1208 注意: 当使用 |g:ctrlp_user_command| 自动忽略模式不起作用。
|
|
1209
|
|
1210 注意: `.ctrlpignore` 会被当做根目录的标识(参见 |g:ctrlp_root_markers|).
|
|
1211
|
|
1212 - 忽略文件的语法:
|
|
1213 空行,以 `#` (注释)开头的行会被忽略。
|
|
1214
|
|
1215 其他行会被当做正则表达式。 匹配模式如何被使用参见 *string-match* 。
|
|
1216 任意条目,只要匹配到任意匹配模式,就会从 CtrlP 中搜索结果中忽略。
|
|
1217
|
|
1218 例子:
|
|
1219
|
|
1220 \.tmp$
|
|
1221 ^generated/
|
|
1222 local\.cfg
|
|
1223
|
|
1224 注意: 即使在 Windows 上模式也应该使用反斜线。
|
|
1225
|
|
1226 你也可以像下面那样使用 glob 命令风格的语法:
|
|
1227
|
|
1228 syntax:wildignore
|
|
1229 *.tar.gz
|
|
1230 *.tmp
|
|
1231
|
|
1232 这样会在搜索文件时临时的把每一个匹配模式添加到 |'wildignore'|
|
|
1233 中,结束时移除。
|
|
1234
|
|
1235 你也可以通过下面的方式切换回默认的正则表达式为基础的模式:
|
|
1236
|
|
1237 syntax:regexp
|
|
1238
|
|
1239 你也可以只为某一条目类型(文件、目录...)设置匹配模式:
|
|
1240
|
|
1241 dir:build
|
|
1242 file:foo\.txt
|
|
1243
|
|
1244 这样只会忽略包含 "build" 的目录和包含 "foo.txt" 的文件。不会忽略带
|
|
1245 有 "build" 的文件或者反过来。
|
|
1246
|
|
1247 注意: 如果为了忽略名为 "build" 的目录,而不是『任何』包含 "build"
|
|
1248 的目录,你可以使用下面的正则: ^build$
|
|
1249
|
|
1250 - 常见问题:
|
|
1251 问: 为什么 CtrlP 不能直接支持原生的 `.gitignore` or `.hgignore` ?
|
|
1252
|
|
1253 答: 这些文件初看起来好像已经包含了所有你想从 CtrlP 中排除的文件。但是
|
|
1254 通常情况下,这些文件和你想在 CtrlP 中的配置会有一些不同。这些配置文件
|
|
1255 列出了不能被包含到版本控制中的文件。这些不能被包含到版本控制中的文件
|
|
1256 包括了你想忽略的,但是同时可能也包含了你不想忽略的:本地设置,外部包
|
|
1257 和依赖,等等。作者觉得支持多种语法与只是简单的复制/粘贴几行忽略规则比
|
|
1258 起来比较麻烦。如果你不这么觉得可以随时提交补丁 :)
|
|
1259
|
|
1260 问: 我开启了 |ctrlp-autoignore-extension|, 或者编辑了 `.ctrlpignore`
|
|
1261 但是这些新模式并没有起作用。我哪里做错了?
|
|
1262
|
|
1263 答: 可能什么都没做错!CtrlP 可以为了快速的响应缓存搜索结果。你可以按
|
|
1264 <F5> 强制刷新。如果 `.ctrlpignore` 改动过,这样也会使用新的匹配模式。
|
|
1265
|
|
1266 ----------------------------------------
|
|
1267 缓冲标签模式选项:~
|
|
1268
|
|
1269 *'g:ctrlp_buftag_ctags_bin'*
|
|
1270 如果ctags没有在环境变量中配置,或者一个二进制ctags文件存在于
|
|
1271 /opt/local/bin 或 /usr/local/bin,使用该选项来指定它的位置: >
|
|
1272 let g:ctrlp_buftag_ctags_bin = ''
|
|
1273 <
|
|
1274
|
|
1275 *'g:ctrlp_buftag_systemenc'*
|
|
1276 将该选项与你的操作系统的编码(非Vim的)保持一致。默认值使用Vim的全局
|
|
1277 |'encoding'| 选项: >
|
|
1278 let g:ctrlp_buftag_systemenc = &encoding
|
|
1279 <
|
|
1280
|
|
1281 *'g:ctrlp_buftag_types'*
|
|
1282 使用该选项来在ctags, jsctags...中为指定的文件格式设置参数: >
|
|
1283 let g:ctrlp_buftag_types = ''
|
|
1284 <
|
|
1285 例子: >
|
|
1286 let g:ctrlp_buftag_types = {
|
|
1287 \ 'erlang' : '--language-force=erlang --erlang-types=drmf',
|
|
1288 \ 'javascript' : {
|
|
1289 \ 'bin': 'jsctags',
|
|
1290 \ 'args': '-f -',
|
|
1291 \ },
|
|
1292 \ }
|
|
1293 <
|
|
1294
|
|
1295 ===============================================================================
|
|
1296 自定义 *ctrlp-customization*
|
|
1297
|
|
1298 高亮:~
|
|
1299 * CtrlP缓冲区的设置:
|
|
1300 CtrlPNoEntries : 当没有匹配被发现时的消息(错误)。
|
|
1301 CtrlPMatch : 匹配模式(标识)。
|
|
1302 CtrlPLinePre : 匹配窗口的行前缀'>'。
|
|
1303 CtrlPPrtBase : 提示符窗口的基础(注释)。
|
|
1304 CtrlPPrtText : 提示符窗口的文本 (|hl-Normal|)。
|
|
1305 CtrlPPrtCursor : 提示符窗口的光标在文本上移动时(常量)。
|
|
1306
|
|
1307 * 缓冲区浏览模式:
|
|
1308 CtrlPBufferNr : 缓冲区编号
|
|
1309 CtrlPBufferInd : '+', '-', '=' 和 '#' 指示符 (参见 |:buffers|)
|
|
1310 CtrlPBufferHid : 隐藏缓冲区
|
|
1311 CtrlPBufferHidMod : 隐藏和被编辑过的缓冲区
|
|
1312 CtrlPBufferVis : 可见的缓冲区
|
|
1313 CtrlPBufferVisMod : 可见的和被编辑过的缓冲区
|
|
1314 CtrlPBufferCur : 当前缓冲区
|
|
1315 CtrlPBufferCurMod : 当前和被编辑过的缓冲区
|
|
1316 CtrlPBufferPath : 缓冲区路径
|
|
1317
|
|
1318 * 在扩展中:
|
|
1319 CtrlPTabExtra : 每一行中不匹配的部分(注释)。
|
|
1320 CtrlPBufName : 条目所属的缓冲区名称(|hl-Directory|)。
|
|
1321 CtrlPTagKind : 缓冲区标签模式中标签的类型(|hl-Title|)。
|
|
1322 CtrlPqfLineCol : 快速修复模式中行和列的序号(注释)。
|
|
1323 CtrlPUndoT : 撤销模式的流逝时间(|hl-Directory|)。
|
|
1324 CtrlPUndoBr : 撤销模式的方括号(注释)。
|
|
1325 CtrlPUndoNr : 撤销模式的方括号中的数字(字符串)。
|
|
1326 CtrlPUndoSv : 文件被保存的点(注释)。
|
|
1327 CtrlPUndoPo : 撤销树中的当前位置(|hl-Title|)。
|
|
1328 CtrlPBookmark : 书签的名称(标识)。
|
|
1329
|
|
1330 状态栏:~
|
|
1331 * 高亮组:
|
|
1332 CtrlPMode1 : 'file' 或 'path' 或 'line',和当前模式(字符)。
|
|
1333 CtrlPMode2 : 'prt' 或 'win', 'regex',工作目录 |hl-LineNr| 。
|
|
1334 CtrlPStats : 扫描状态(函数)。
|
|
1335
|
|
1336 重新构建状态栏,参见 |g:ctrlp_status_func| 。
|
|
1337
|
|
1338 ===============================================================================
|
|
1339 其它选项 *ctrlp-miscellaneous-configs*
|
|
1340
|
|
1341 * 为 |g:ctrlp_user_command| 使用 |wildignore| :
|
|
1342 >
|
|
1343 function! s:wig2cmd()
|
|
1344 " 修改wildignore为空格或者|分隔的组
|
|
1345 " 例如: .aux .out .toc .jpg .bmp .gif
|
|
1346 " 或者 .aux$\|.out$\|.toc$\|.jpg$\|.bmp$\|.gif$
|
|
1347 let pats = ['[*\/]*\([?_.0-9A-Za-z]\+\)\([*\/]*\)\(\\\@<!,\|$\)','\\\@<!,']
|
|
1348 let subs = has('win32') || has('win64') ? ['\1\3', ' '] : ['\1\2\3', '\\|']
|
|
1349 let expr = substitute(&wig, pats[0], subs[0], 'g')
|
|
1350 let expr = substitute(expr, pats[1], subs[1], 'g')
|
|
1351 let expr = substitute(expr, '\\,', ',', 'g')
|
|
1352
|
|
1353 " 设置用户命令选项
|
|
1354 let g:ctrlp_user_command = has('win32') || has('win64')
|
|
1355 \ ? 'dir %s /-n /b /s /a-d | findstr /V /l "'.expr.'"'
|
|
1356 \ : 'find %s -type f | grep -v "'.expr .'"'
|
|
1357 endfunction
|
|
1358
|
|
1359 call s:wig2cmd()
|
|
1360 <
|
|
1361 (由 Rich Alesi <github.com/ralesi> 提交)
|
|
1362
|
|
1363 * 一个独立的函数,设置项目的根目录为工作目录,如果没有找到根目录的话使用当前文
|
|
1364 * 件的父目录。
|
|
1365 >
|
|
1366 function! s:setcwd()
|
|
1367 let cph = expand('%:p:h', 1)
|
|
1368 if cph =~ '^.\+://' | retu | en
|
|
1369 for mkr in ['.git/', '.hg/', '.svn/', '.bzr/', '_darcs/', '.vimprojects']
|
|
1370 let wd = call('find'.(mkr =~ '/$' ? 'dir' : 'file'), [mkr, cph.';'])
|
|
1371 if wd != '' | let &acd = 0 | brea | en
|
|
1372 endfo
|
|
1373 exe 'lc!' fnameescape(wd == '' ? cph : substitute(wd, mkr.'$', '.', ''))
|
|
1374 endfunction
|
|
1375
|
|
1376 autocmd BufEnter * call s:setcwd()
|
|
1377 <
|
|
1378 (需要 Vim 7.1.299+)
|
|
1379
|
|
1380 * 使用 |count| 来使用同样的按键绑定调用不同的命令:
|
|
1381 >
|
|
1382 let g:ctrlp_cmd = 'exe "CtrlP".get(["", "Buffer", "MRU"], v:count)'
|
|
1383 <
|
|
1384
|
|
1385 ===============================================================================
|
|
1386 开发人员 *ctrlp-credits*
|
|
1387
|
|
1388 最初由 Kien Nguyen <github.com/kien>开发。现在由 Github 上 ctrlpvim 组织的成员
|
|
1389 维护(https://github.com/orgs/ctrlpvim/people) 。在Vim的 |license| 下发行。
|
|
1390
|
|
1391 项目主页: http://ctrlpvim.github.com/ctrlp.vim
|
|
1392 Git 仓库: https://github.com/ctrlpvim/ctrlp.vim
|
|
1393
|
|
1394 -------------------------------------------------------------------------------
|
|
1395 感谢所有通过github,bitbucket或电子邮件提供想法,报告bug或者帮助debugging的人。
|
|
1396
|
|
1397 特别感谢:~
|
|
1398
|
|
1399 * Woojong Koh <github.com/wjkoh>
|
|
1400 * Simon Ruderich
|
|
1401 * Yasuhiro Matsumoto <github.com/mattn>
|
|
1402 * Ken Earley <github.com/kenearley>
|
|
1403 * Kyo Nagashima <github.com/hail2u>
|
|
1404 * Zak Johnson <github.com/zakj>
|
|
1405 * Diego Viola <github.com/diegoviola>
|
|
1406 * Piet Delport <github.com/pjdelport>
|
|
1407 * Thibault Duplessis <github.com/ornicar>
|
|
1408 * Kent Sibilev <github.com/datanoise>
|
|
1409 * Tacahiroy <github.com/tacahiroy>
|
|
1410 * Luca Pette <github.com/lucapette>
|
|
1411 * Seth Fowler <github.com/sfowler>
|
|
1412 * Lowe Thiderman <github.com/thiderman>
|
|
1413 * Christopher Fredén <github.com/icetan>
|
|
1414 * Zahary Karadjov <github.com/zah>
|
|
1415 * Jo De Boeck <github.com/grimpy>
|
|
1416 * Rudi Grinberg <github.com/rgrinberg>
|
|
1417 * Timothy Mellor <github.com/mellort>
|
|
1418 * Sergey Vlasov <github.com/noscript>
|
|
1419
|
|
1420 ===============================================================================
|
|
1421 更新日志 *ctrlp-changelog*
|
|
1422
|
|
1423 * 新选项 |g:ctrlp_custom_tag_files| 用来指定自定义的标签文件。
|
|
1424 * 设置 g:ctrlp_match_window 为0来不限制窗口大小
|
|
1425
|
|
1426 Before 2016/11/28~
|
|
1427
|
|
1428 + 新命令: |YankLine()| 来复制整个文件。
|
|
1429 + 新选项: |g:ctrlp_types| 来选择內建类型。
|
|
1430 + 新特性: 异步在新线程中调用 |g:ctrlp_user_command| 。 设置
|
|
1431 |g:ctrlp_user_command_async| 为1来启用。
|
|
1432 + 为 delphi, rust 和 golang提供buffertag支持。
|
|
1433 + 新选项: |g:ctrlp_brief_prompt|,
|
|
1434 |g:match_current_file|,
|
|
1435 |g:ctrlp_compare_lim|.
|
|
1436 + 新功能: 自动忽略扩展。
|
|
1437 + 为 ant, tex, dosbatch, matlab 和 vhdl提供buffertag支持。
|
|
1438 + 新选项 |g:ctrlp_line_prefix| 来结合第三方插件。
|
|
1439 + 新选项 |g:open_single_match| 在 matches 中打开单个文件。
|
|
1440 + 添加启动方式 <plug>(ctrlp) 。
|
|
1441 + 接受 bang for CtrlPBookmarkDirAdd 来避免确认。
|
|
1442 + 处理像 "g:ctrlp_TYPE_MODE" 大小写混合的变量名。
|
|
1443 例如: let g:ctrlp_path_sort
|
|
1444 + 新选项: |g:ctrlp_custom_ancestors|
|
|
1445
|
|
1446 在2014/08/08之前~
|
|
1447
|
|
1448 + 新的支持高亮的缓冲区浏览模式 (建议 |+conceal|)
|
|
1449 + 新选项: |g:ctrlp_bufname_mod|,
|
|
1450 |g:ctrlp_bufpath_mod|
|
|
1451 + 结合 *g:ctrlp_match_window_bottom* *g:ctrlp_match_window_reversed* 和
|
|
1452 *g:ctrlp_max_height* 到 |g:ctrlp_match_window| 。
|
|
1453 + 新选项: |g:ctrlp_match_window| 。
|
|
1454
|
|
1455 在2012/11/30之前~
|
|
1456
|
|
1457 + 新选项: |g:ctrlp_abbrev|,
|
|
1458 |g:ctrlp_key_loop|,
|
|
1459 |g:ctrlp_open_func|,
|
|
1460 |g:ctrlp_tabpage_position|,
|
|
1461 |g:ctrlp_mruf_save_on_update|
|
|
1462 + 重命名:
|
|
1463 *g:ctrlp_dotfiles* -> |g:ctrlp_show_hidden| 。
|
|
1464 + 修改 |g:ctrlp_switch_buffer| 和 |g:ctrlp_working_path_mode|的类型
|
|
1465 (旧值仍然工作)。
|
|
1466 + 当 |g:ctrlp_user_command| 是一个字典时,为其增加一个新的键: 'ignore'。
|
|
1467
|
|
1468 在2012/06/15之前~
|
|
1469
|
|
1470 + |g:ctrlp_follow_symlinks| 的新值: 2。
|
|
1471 + |g:ctrlp_open_multiple_files| 的新值: 'j'。
|
|
1472 + 允许使用 <c-t>, <c-x>, <c-v> 打开被 <c-z> 标记的文件。
|
|
1473 + 扩展 '..' (|ctrlp-input-formats| (d))
|
|
1474 + 新的输入格式: '@cd' (|ctrlp-input-formats| (d))
|
|
1475
|
|
1476 在2012/04/30之前~
|
|
1477
|
|
1478 + 新选项: |g:ctrlp_mruf_default_order|
|
|
1479 + 新特性: 被书签标记的目录的扩展。
|
|
1480 + 新命令: |:CtrlPBookmarkDir|
|
|
1481 |:CtrlPBookmarkDirAdd|
|
|
1482
|
|
1483 在2012/04/15之前~
|
|
1484
|
|
1485 + 新选项: |g:ctrlp_buffer_func|,CtrlP缓冲区的回调函数。
|
|
1486 + 移除 : g:ctrlp_mruf_last_entered,使其作为最近最多使用的默认行为。
|
|
1487 + 新命令: |:CtrlPLastMode|,以上一次使用的模式打开CtrlP。
|
|
1488 |:CtrlPMixed|,在文件,缓冲区和最近最多使用中搜索。
|
|
1489
|
|
1490 在2012/03/31之前~
|
|
1491
|
|
1492 + 新选项: |g:ctrlp_default_input|, 进入CtrlP后的默认输入。
|
|
1493 |g:ctrlp_match_func|,允许使用自定义的模糊查找工具。
|
|
1494 + 重命名:
|
|
1495 *ClearCtrlPCache* -> |CtrlPClearCache|
|
|
1496 *ClearAllCtrlPCaches* -> |CtrlPClearAllCaches|
|
|
1497 *ResetCtrlP* -> |CtrlPReload|
|
|
1498
|
|
1499 在2012/03/02之前~
|
|
1500
|
|
1501 + 重命名:
|
|
1502 *g:ctrlp_regexp_search* -> |g:ctrlp_regexp|,
|
|
1503 *g:ctrlp_dont_split* -> |g:ctrlp_reuse_window|,
|
|
1504 *g:ctrlp_jump_to_buffer* -> |g:ctrlp_switch_buffer|。
|
|
1505 + 重命名和微调:
|
|
1506 *g:ctrlp_open_multi* -> |g:ctrlp_open_multiple_files|。
|
|
1507 + 过时 *g:ctrlp_highlight_match*
|
|
1508 + 扩展 |g:ctrlp_user_command| 支持多个命令。
|
|
1509 + 新选项: |g:ctrlp_mruf_last_entered| 修改最近最多使用为最近进入。
|
|
1510
|
|
1511 在2012/01/15之前~
|
|
1512
|
|
1513 + 新按键绑定: 交换 <tab> 和 <s-tab>. <tab> 现在用来补全在当前工作目录内的目
|
|
1514 录名。
|
|
1515 + 新选项: |g:ctrlp_arg_map| 使 <c-y>, <c-o> 可以接收一个参数。
|
|
1516 |g:ctrlp_status_func| 自定义状态栏。
|
|
1517 |g:ctrlp_mruf_relative| 在当前工作目录内显示最近最多使用。
|
|
1518 + 扩展 g:ctrlp_open_multi 增加新选项值: tr, hr, vr。
|
|
1519 + 扩展 |g:ctrlp_custom_ignore| 指定过滤目录,文件和链接。
|
|
1520
|
|
1521 在2012/01/05之前~
|
|
1522
|
|
1523 + 新特性: 缓冲区标记扩展。
|
|
1524 + 新命令: |:CtrlPBufTag|, |:CtrlPBufTagAll|。
|
|
1525 + 新选项: |g:ctrlp_cmd|,
|
|
1526 |g:ctrlp_custom_ignore|
|
|
1527
|
|
1528 在2011/11/30之前~
|
|
1529
|
|
1530 + 新特性: 标签,快速修复和目录扩展。
|
|
1531 + 新命令: |:CtrlPTag|, |:CtrlPQuickfix|, |:CtrlPDir|。
|
|
1532 + 新选项: |g:ctrlp_use_migemo|,
|
|
1533 |g:ctrlp_lazy_update|,
|
|
1534 |g:ctrlp_follow_symlinks|
|
|
1535
|
|
1536 在2011/11/13之前~
|
|
1537
|
|
1538 + 新的特殊输入: '/' 和 '\' 查找根目录 (|ctrlp-input-formats| (e))
|
|
1539 + 移除 ctrlp#SetWorkingPath()。
|
|
1540 + 移除 *g:ctrlp_mru_files* ,使最近最多使用模式变为永久的。
|
|
1541 + 扩展 g:ctrlp_open_multi,添加打开文件的新方式。
|
|
1542 + 新选项: g:ctrlp_dont_split,
|
|
1543 |g:ctrlp_mruf_case_sensitive|
|
|
1544
|
|
1545 在2011/10/30之前~
|
|
1546
|
|
1547 + 新特性: 支持自定义扩展。
|
|
1548 <F5> 也会从最近最多使用列表中移除不存在的文件。
|
|
1549 + 新选项: g:ctrlp_jump_to_buffer
|
|
1550
|
|
1551 在2011/10/12之前~
|
|
1552
|
|
1553 + 新特性: 打开多个文件。
|
|
1554 传递Vim的 |++opt| 和 |+cmd| 到新打开的文件
|
|
1555 (|ctrlp-input-formats| (c))
|
|
1556 为 |:CtrlP| [起始目录]自动补全每个目录
|
|
1557 + 新按键绑定: <c-z> 标记/取消标记一个被 <c-o> 打开的文件。
|
|
1558 <c-o> 打开所有被标记的文件。
|
|
1559 + 新选项: g:ctrlp_open_multi
|
|
1560 + 移除 *g:ctrlp_persistent_input* *g:ctrlp_live_update* and <c-^>。
|
|
1561
|
|
1562 在2011/09/29之前~
|
|
1563
|
|
1564 + 新按键绑定: <c-n>, <c-p> 输入历史中的前一个/后一个字符串。
|
|
1565 <c-y> 创建一个新的文件和它的父目录。
|
|
1566 + 新选项: |g:ctrlp_open_new_file|,
|
|
1567 |g:ctrlp_max_history|
|
|
1568 + 添加一个新的在横向分割窗口打开的绑定:<c-x>
|
|
1569
|
|
1570 在2011/09/19之前~
|
|
1571
|
|
1572 + 新命令: ResetCtrlP
|
|
1573 + 新选项: |g:ctrlp_max_files|,
|
|
1574 |g:ctrlp_max_depth|,
|
|
1575 g:ctrlp_live_update
|
|
1576 + 新按键绑定: <c-^>
|
|
1577
|
|
1578 在2011/09/12之前~
|
|
1579
|
|
1580 + 添加在匹配窗口内循环匹配行的功能。
|
|
1581 + 扩展 g:ctrlp_persistent_input的行为
|
|
1582 + 扩展 |:CtrlP| 的行为
|
|
1583 + 新选项: |g:ctrlp_dotfiles|,
|
|
1584 |g:ctrlp_clear_cache_on_exit|,
|
|
1585 g:ctrlp_highlight_match,
|
|
1586 |g:ctrlp_user_command|
|
|
1587 + 新的特殊输入: '..' (|ctrlp-input-formats| (d))
|
|
1588 + 新按键绑定: <F5>。
|
|
1589 + 新命令: |:CtrlPCurWD|,
|
|
1590 |:CtrlPCurFile|,
|
|
1591 |:CtrlPRoot|
|
|
1592
|
|
1593 + 新特性: 在最近最常使用的文件列表中搜索
|
|
1594 + 新按键绑定: <c-b>。
|
|
1595 + 扩展 <c-f> 的行为。
|
|
1596 + 新选项: g:ctrlp_mru_files,
|
|
1597 |g:ctrlp_mruf_max|,
|
|
1598 |g:ctrlp_mruf_exclude|,
|
|
1599 |g:ctrlp_mruf_include|
|
|
1600 + 新命令: |:CtrlPMRU|
|
|
1601
|
|
1602 第一版发布于: 2011/09/06~
|
|
1603
|
|
1604 ===============================================================================
|
|
1605 vim:ft=help:et:ts=2:sw=2:sts=2:norl
|