5863


タイトルのとおりですが、直接設定したあとも補完がされません。  
UnityとVisualStudio2008でプロジェクトを作成して試しましたが、両方とも同じ症状です。  
どうしたら直るのかご教授ください。  
質問の内容が足りない場合、ご指摘ください。  
至らない点あると思いますが、よろしくお願いします。

![not set omnifunc](https://i.stack.imgur.com/yz3sV.png)

## 環境

  * windows7
  * kaoriya-gvim 32bit
  * python 2.7.9 32bit
  * Unity 4.5.5p5

## vimrc(抜粋)

OmniSharp

[code]

    NeoBundleLazy 'nosami/Omnisharp', {
    \   'autoload': {'filetypes': ['cs']},
    \   'build': {
    \     'windows': 'MSBuild.exe server/OmniSharp.sln /p:Platform="Any CPU"',
    \     'mac': 'xbuild server/OmniSharp.sln',
    \     'unix': 'xbuild server/OmniSharp.sln',
    \   }
    \ }
    
[/code]

neocomplete

[code]

    let g:acp_enableAtStartup = 0
    let g:neocomplete#enable_at_startup = 1
    let g:neocomplete#enable_smart_case = 1
    let g:neocomplete#sources#syntax#min_keyword_length = 3
    let g:neocomplete#lock_buffer_name_pattern = '\*ku\*'
    let g:neocomplete#sources#dictionary#dictionaries = {
        \ 'default' : '',
        \ 'vimshell' : $HOME.'/.vimshell_hist',
        \ 'scheme' : $HOME.'/.gosh_completions'
        \ }
    if !exists('g:neocomplete#keyword_patterns')
        let g:neocomplete#keyword_patterns = {}
    endif
    let g:neocomplete#keyword_patterns['default'] = '\h\w*'
    
    autocmd FileType cs setlocal omnifunc=OmniSharp#Complete
    if !exists('g:neocomplete#sources#omni#input_patterns')
      let g:neocomplete#sources#omni#input_patterns = {}
    endif
    let g:neocomplete#sources#omni#input_patterns.cs = '[^.]\.\%(\u\{2,}\)\?'
    
[/code]

vim上で`:set omnifunc=OmniSharp#Complete`とすると下の画像のようになります。

![set omnifunc error](https://i.stack.imgur.com/3h263.png)


CC BY-SA 3.0
2015-02-03T09:53:24.630
5855
2015-02-04T01:17:53.223
2015-02-03T11:15:17.967
3840
3840
question
c# windows vim
gvimでOmniSharpを使おうとすると"'omnifunc' は設定されていません"と出る


現在 omnisharp.vim は `omnifunc`
をデフォルトで設定してくれません。(昔は設定されていたのですが、なぜか削除されてしまったようです)

`omnifunc` を自動で設定するようにするには、`~/vimfiles/after/ftplugin/cs.vim`
と言うファイルを作り、以下のように書きます。

[code]

    setlocal omnifunc=OmniSharp#Complete
    
[/code]

> 直接設定したあとも補完がされません。

Omnisharp を利用するにはサーバを起動する必要があります。  
デフォルトだと C# ファイルを開いた際に自動で起動するはずですが、Unity
だとソリューションファイルが複数あるため、もしかしたらうまく起動してないかもしれません。

[code]

    :OmniSharpStartServerSolution YourProject.sln
    
[/code]

このコマンドを実行してみてください。(`YourProject.sln` はもちろんあなたのプロジェクトにあるファイルの名前に置き換えてください)

追記:

サーバーは立ち上がっているようですね。権限が足りていないのかもしれません。管理者権限のコマンドプロンプトを起動して、以下のようなコマンドを実行してみてください。

[code]

    netsh http add urlacl url=http://+:2000/ user=thinca
    
[/code]

`user=` の部分には、あなたのマシンのログイン時に使っているユーザー名を指定してください。2000 は Omnisharp
がデフォルトで使用するポート番号です。変更したい場合は適時変えてください。


CC BY-SA 3.0
2015-02-03T10:25:26.133
5863
2015-02-04T01:17:53.223
2015-02-04T01:17:53.223
2541
2541
5855
answer