質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2658閲覧

neocompleteとjedi-vimの併用時に補完を打ち切るようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/08/05 03:51

###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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

残念ながら、neocomplete では無理です。
それを実現するにはマルチスレッドかマルチプロセス化しなければいけないからです。
jedi-vim の補完はシングルスレッドなので、もし neocomplete がマルチスレッド化してもやはり止まってしまいます。
neovim をお使いなら deoplete.nvim + deoplete-jedi を使うと状況は多少改善されると思います。deoplete-jedi にはキャッシュ機能や補完のタイムアウトがあります。

投稿2017/08/07 02:39

Shougo

総合スコア183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/08 12:24

ご回答ありがとうございます。 そうなのですか...。 分かりました、一度neovim, deoplete-jediを使ってみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問