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

命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"重启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 

配置选项

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
"开启自动补全输入的最少字符数,默认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