ycm 选项

YouCompleteMe, vim/neovim 语义补全利器,按照参见YouCompleteMe github网页。下面看看简单选项和命令,不保证解释准确,只做粗略参考。

命令

"重启Ycm服务器
:YcmRestartServer    

"立马让YCM重新编译你的文件并显示编译诊断信息
"为了方便,通常该命令做映射,如:nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>
:YcmForceCompileAndDiagnostics

"显示YCM探测到的错误或警告
:YcmDiags

"显示光标下面的详细诊断信息
:YcmShowDetailedDiagnostic

"显示当前文件的调试信息
:YcmdDebugInfo

"调用补全专门的命令,如果第一个补全参数是 ft=..
"则使用指定类型的补全插件,否则,使用当前缓存文件类型的补全插件
:YcmCompleter

"跳转到声明 支持的文件类型:C, cpp, objC, objcpp, Python, cs
:YcmCompleter GoToDeclaration 

"跳转到定义 支持的文件类型:C, cpp, objC, objcpp, Python, cs, typescript
:YcmCompleter GoToDefinition 

"盲跳 支持的文件类型:C, cpp, objC, objcpp, Python, cs
:YcmCompleter GoTo 

"同GoTo,快,非精确 支持的文件类型:C, cpp, objC, objcpp, Python, cs
:YcmCompleter GoToImprecise 

"清空YCM编译缓存,支持的文件类型:C, cpp, objC, objcpp
:YcmCompleter ClearCompilationFlagCache 

"显示变量类型 支持的文件类型:C, cpp, objC, objcpp, typescript
:YcmCompleter GetType 

"显示语补全的父类型 支持的文件类型:C, cpp, objC, objcpp
:YcmCompleter GetParent 

"修正YCM诊断的光标附近的错误 支持的文件类型:C, cpp, objC, objcpp, cs
:YcmCompleter FixIt 

"预览窗口展示文档 支持的文件类型:C, cpp, objC, objcpp, cs, Python, typescript
:YcmCompleter GetDoc 

"启动语义引擎服务器, 支持的文件类型:cs
:YcmCompleter StartServer 

"停止语义引擎服务器, 支持的文件类型:cs
:YcmCompleter StopServer 

"重启语义引擎服务器, 支持的文件类型:cs
:YcmCompleter RestartServer 

"重加载文件, 支持的文件类型:cs
:YcmCompleter ReloadSolution 

"跳到实现, 支持的文件类型:cs
:YcmCompleter GoToImplementation 

"跳到实现或声明, 支持的文件类型:cs
:YcmCompleter GoToImplementationElseDeclaration 

配置选项

"开启自动补全输入的最少字符数,默认2
g:ycm_min_num_of_chars_for_completion

"弹出的自动补全最少候选数,默认0,表示不限制
g:ycm_min_num_identifier_candidate_chars

"输入语义字符(如c++的. ->)自动补全是否启动,默认1
g:ycm_auto_trigger

"自动补全白名单,默认{'*' : 1}
g:ycm_filetype_whitelist

"自动补全黑名单,默认:
"{
  \ 'tagbar' : 1,
  \ 'qf' : 1,
  \ 'notes' : 1,
  \ 'markdown' : 1,
  \ 'unite' : 1,
  \ 'text' : 1,
  \ 'vimwiki' : 1,
  \ 'pandoc' : 1,
  \ 'infolog' : 1,
  \ 'mail' : 1
  \}
g:ycm_filetype_blacklist

"自动补全禁止文件,默认{'gitcommit' : 1}
g:ycm_filetype_specific_completion_to_disable

"自动补全诊断UI,默认1
g:ycm_filetype_specific_completion_to_disable

"自动补全诊断出现错误的符号,默认 >>
g:ycm_error_symbol

"自动补全诊断出现警告的符号,默认 >>
g:ycm_error_symbol

"是否允许自动补全诊断符号,默认 1
g:ycm_enable_diagnostic_signs 

"是否自动补全诊断符号高亮,默认 1
g:ycm_enable_diagnostic_highlighting  

"是否显示自动补全诊断,默认 1
g:ycm_echo_current_diagnostic   

"是否显示自动补全诊断location list,默认 0
g:ycm_always_populate_location_list   

"强制编译后,是否显示location list和诊断,默认 1
g:ycm_open_loclist_on_ycm_diags   

"是否允许更新VIM更新时间,默认 1
g:ycm_allow_changing_updatetime    

"是否自动补全注释,默认 0
g:ycm_allow_changing_updatetime  

"是否在变量的值内实现自动补全,默认 1
g:ycm_complete_in_strings   

"是否收集注释和字符变量值作为自动补全信息,默认 0
g:ycm_collect_identifiers_from_comments_and_strings

"是否tags文件作为自动补全信息,默认 0
g:ycm_collect_identifiers_from_tags_files 

"不明白什么意思,默认 0
g:ycm_seed_identifiers_with_syntax  

"与.ycm_extra_conf.py文件中FlagsForFile函数交换的参数,默认 []
g:ycm_extra_conf_vim_data  

"Python解释器的路径,默认 ''
g:ycm_path_to_Python_interpreter   

"ycm日志是否使用stdout,默认 0
g:ycm_server_use_vim_stdout    

"当ycm服务器退出时,是否保存日志,默认 0
g:ycm_server_keep_logfiles     

"ycm服务器日志级别,有debug, info, warning, error, critical,默认 info
g:ycm_server_log_level  

"是否自动启动c#自动补全服务器,默认 1
g:ycm_auto_start_csharp_server    

"是否自动停止c#自动补全服务器,默认 1
g:ycm_auto_start_csharp_server 

"c#自动补全服务器端口,默认 0,即任意端口
g:ycm_csharp_server_port  

"c#自动补全插入命名空间表达式,默认 ''
g:ycm_csharp_insert_namespace_expr   

"是否展示预览窗口,默认 0
g:ycm_add_preview_to_completeopt    

"当补全完成时,是否自动关闭展示的预览窗口,默认 0
g:ycm_autoclose_preview_window_after_completion 

"当补全插入时,是否自动关闭展示的预览窗口,默认 0
g:ycm_autoclose_preview_window_after_insertion 

"诊断信息的条数,默认 30
g:ycm_max_diagnostics_to_display  

"选择自动补全信息的按键,默认 ['<TAB>', '<Down>']
g:ycm_key_list_select_completion   

"选择前一个自动补全信息的按键,默认 ['<S-TAB>', '<Up>']
g:ycm_key_list_previous_completion   

"调用自动补全信息的按键,默认 <C-Space>
g:ycm_key_invoke_completion   

"详细诊断信息的按键,默认 <leader>d
g:ycm_key_detailed_diagnostics   

"全局的ycm_extra_conf文件,默认 ''
g:ycm_global_ycm_extra_conf  

"载入ycm_extra_conf文件,是否提示确认 默认 1
g:ycm_confirm_extra_conf

"ycm_extra_conf文件,通配符 默认 []
g:ycm_extra_conf_globlist

"自动补全是否使用当前工作目录 默认 0
g:ycm_filepath_completion_use_working_dir 

"语义触发的字符 默认
" {
" \   'c' : ['->', '.'],
" \   'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s',
"  \             're!\[.*\]\s'],
"  \   'ocaml' : ['.', '#'],
"  \   'cpp,objcpp' : ['->', '.', '::'],
"  \   'perl' : ['->'],
" \   'php' : ['->', '::'],
"  \   'cs,java,javascript,typescript,d,Python,perl6,scala,vb,elixir,go' : ['.'],
"  \   'ruby' : ['.', '::'],
"  \   'lua' : ['.', ':'],
" \   'erlang' : [':'],
"  \ }
g:ycm_semantic_triggers

"是否缓存,omnifunc 默认 1
g:ycm_cache_omnifunc

"是否缓存omnifunc 默认 1
g:ycm_cache_omnifunc

"是否使用ultisnips 插件自动补全 默认 1
g:ycm_use_ultisnips_completer 

"GoTo*命令的打开方式,可选值为:
"[ 'same-buffer', 'horizontal-split', 'vertical-split', 'new-tab', 'new-or-existing-tab' ]
"默认 'same-buffer'
g:ycm_goto_buffer_command  

"不使用自动补全的文件大小,单位为KB,0表示不检测 默认 1000
g:ycm_disable_for_files_larger_than_kb