###neocompleteとjedi-vimを併用している時に補完を打ち切るようにしたいです。
Vim8.0でneocompleteとjedi-vimを併用しているのですが、pythonでnumpyを補完する際にオムニ補完がかなり重たいです。
そこで、補完時に一定時間内に候補を返すことができなかったら処理を返すという設定にしたいと思いました。
例えば、np.
と打ってから1秒間内で候補を返せないとき処理だけ返すようにし、np.arra
などと打って候補が絞られ一定時間内に補完候補を返すことができるときだけ補完をするということをしたいです。
また、補完に時間がかかる際も手動での操作(Ctrl-Spaceなど)は常に効くというふうにできたらベストだと考えています。
私はC++とpythonを勉強しており、C++の補完はモタつくということは今のところありません。
ですのでそこの辺もFiletypeによって自動補完を有効にするのかを変えることができればと思っています。
###該当のソースコード
今はこの件について解決策が見つからないので、pythonのときは自動補完をoffにするというふうにしています。
script
1[[plugins]] 2repo = 'Shougo/neocomplete.vim' 3hook_add = ''' 4" Disable AutoComplPop. 5let g:acp_enableAtStartup = 0 6 7" Use neocomplete. 8let g:neocomplete#enable_at_startup = 1 9 10" Use smartcase. 11let g:neocomplete#enable_smart_case = 1 12 13" Set minimum syntax keyword length. 14let g:neocomplete#sources#syntax#min_keyword_length = 3 15 16"If completion time is higher than it, neocomplete will skip auto completion. 17" default = '0.3' 18" let g:neocomplete#skip_auto_completion_time = '0.3' 19 20" Define dictionary. 21let g:neocomplete#sources#dictionary#dictionaries = { 22 \ 'default' : '', 23 \ 'vimshell' : $HOME.'/.vimshell_hist', 24 \ 'scheme' : $HOME.'/.gosh_completions' 25 \ } 26 27" Define keyword. 28if !exists('g:neocomplete#keyword_patterns') 29 let g:neocomplete#keyword_patterns = {} 30endif 31let g:neocomplete#keyword_patterns['default'] = '\h\w*' 32 33" Plugin key-mappings. 34inoremap <expr><C-g> neocomplete#undo_completion() 35inoremap <expr><C-l> neocomplete#complete_common_string() 36 37" Recommended key-mappings. 38" <CR>: close popup and save indent. 39inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> 40function! s:my_cr_function() 41 return (pumvisible() ? "\<C-y>" : "" ) . "\<CR>" 42 " For no inserting <CR> key. 43 "return pumvisible() ? "\<C-y>" : "\<CR>" 44endfunction 45" <TAB>: completion. 46inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" 47" <C-h>, <BS>: close popup and delete backword char. 48inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" 49inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" 50" Close popup by <Space>. 51"inoremap <expr><Space> pumvisible() ? "\<C-y>" : "\<Space>" 52 53" AutoComplPop like behavior. 54"let g:neocomplete#enable_auto_select = 1 55 56" Shell like behavior(not recommended). 57"set completeopt+=longest 58"let g:neocomplete#enable_auto_select = 1 59"let g:neocomplete#disable_auto_complete = 1 60"inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>" 61 62" Enable omni completion. 63autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS 64autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags 65autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS 66" autocmd FileType python setlocal omnifunc=pythoncomplete#Complete 67autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags 68 69" Enable heavy omni completion. 70if !exists('g:neocomplete#sources#omni#input_patterns') 71 let g:neocomplete#sources#omni#input_patterns = {} 72endif 73 74"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' 75let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' 76let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' 77 78" For perlomni.vim setting. 79" https://github.com/c9s/perlomni.vim 80" let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' 81''' 82on_i = 1 83 84[[plugins]] 85repo = 'davidhalter/jedi-vim' 86hook_add = ''' 87autocmd FileType python setlocal completeopt-=preview " Do not display docstring 88autocmd FileType python setlocal omnifunc=jedi#completions 89 90" Invalidate jedi-vim and set completion to neocomplete 91let g:jedi#completions_enabled = 0 92let g:jedi#auto_vim_configuration = 0 93 94" let g:jedi#popup_select_first = 0 95" let g:jedi#completions_command = "<C-k>" 96" let g:jedi#popup_on_dot = 0 97 98" for jedi-vim, python completion settings 99if !exists('g:neocomplete#force_omni_input_patterns') 100 let g:neocomplete#force_omni_input_patterns = {} 101endif 102 103let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*' 104let g:neocomplete#disable_auto_complete = 1 " disable auto complete 105inoremap <expr><C-n> pumvisible() ? "\<down>" : neocomplete#start_manual_complete() 106 107''' 108on_i = 1 109on_ft = ['python']
###試したこと
neocompleteの作者様の紹介スライドを拝見したところ、g:neocomplete#force_omni_input_patterns.
を使用すると
neocompleteの機能は全て無効になるとありました。
g:neocomplete#skip_auto_completion_time
を使用し自動補完を一定時間で打ち切るということをしたかったので、今どうしようもない状況になっています。
どなたかこの件についてご教示いただけますでしょうか。
neocomplete作者様のスライド: https://www.slideshare.net/Shougo/neocompletevim
###補足情報(言語/FW/ツール等のバージョンなど)
[自身の環境]
Ubuntu 14.04.5LTS
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Aug 4 2017 01:55:49)
適用済パッチ: 1-851
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/08 12:24