青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Hello World!

程序員那點事兒

首頁 新隨筆 聯系 聚合 管理
  20 Posts :: 6 Stories :: 0 Comments :: 0 Trackbacks

-.YoucompleteMe還有很多強大的功能,有興趣可以繼續探索。我們需要以下幾步

  •  先檢查一下自己的虛擬機中是否有安裝python,用vim試一下1 :echo has('python') 如果得到結果為1 就說明有(其實有沒有都無所謂,再執行一遍安裝命令絕對沒錯)

 

yum install python

  

  • 安裝vundle,vundle是一款vim插件管理工具,使用它安裝youcomplete很簡單

 1 git clone https://github.com/gmarik/Vundle.vim.git~/.vim/bundle/Vundle.vim 

  • 配置vundle

在vimrc中添加這樣的配置語句

set nocompatible   filetype off   set rtp+=~/.vim/bundle/Vundle.vim   call vundle#begin()   Plugin 'gmarik/Vundle.vim'   Plugin 'Valloric/YouCompleteMe'   call vundle#end()   filetype plugin indent on  

 

  • 安裝youcompleteme

去github上clone一下youcompleteme的代碼

git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe

然后在vim里面安裝一下,執行

:PluginInstall 

看到有DONE!顯示就好了

  • 編譯youcomplete

這一步坑了我好久,網上好多抄襲的全是apt命令和dnf命令,不太適合我的centos7,用yum就好了!

yum install automake gcc gcc-c++ kernel-devel cmake yum install python-devel python3-devel

不管安沒安裝python在這兩句命令執行之后你都有了

接下來就是編譯的重頭戲

cd ~/.vim/bundle/YouCompleteMe 
如果需要支持C類的補全,用下面的命令。
.
/install.py --clang-completer
如果需要支持golang的補全,用
./install.py --gocode-completer

其他:

  • C# support: install Mono and add --omnisharp-completer when calling ./install.py.
  • Go support: install Go and add --gocode-completer when calling ./install.py.
  • TypeScript support: install Node.js and npm then install the TypeScript SDK with npm install -g typescript.
  • JavaScript support: install Node.js and npm and add --tern-completer when calling ./install.py.
  • Rust support: install Rust and add --racer-completer when calling ./install.py.


  • 配置vim

修改vimrc文件

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py   let g:ycm_seed_identifiers_with_syntax=1    " 語法關鍵字補全   let g:ycm_confirm_extra_conf=0   " 打開vim時不再詢問是否加載ycm_extra_conf.py配置   inoremap <expr> <CR>  pumvisible() ? "\<C-y>" : "\<CR>"    "回車即選中當前項   set completeopt=longest,menu    "讓Vim的補全菜單行為與一般IDE一致(參考VimTip1228)  


  • (可能會有)附件

有可能.ycm_extra_conf.py這個文件會自動就有,也許會沒有,find一下,沒找到的話就自己vim修改一下,以下是該文件內容,復制之前,友情提示,在vim輸入

set paste

進入復制模式,這樣子復制之后格式就不會亂了~

import os import ycm_core flags = [ '-Wall', '-Wextra', '-Wno-long-long', '-Wno-variadic-macros', '-fexceptions', '-stdlib=libc++', '-std=c++11', '-x', 'c++', '-I', '.', '-isystem', '/usr/include', '-isystem', '/usr/local/include', '-isystem', '/Library/Developer/CommandLineTools/usr/include', '-isystem', '/Library/Developer/CommandLineTools/usr/bin/../lib/c++/v1', ]  compilation_database_folder = ''  if os.path.exists( compilation_database_folder ):   database = ycm_core.CompilationDatabase( compilation_database_folder ) else:   database = None  SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]  def DirectoryOfThisScript():   return os.path.dirname( os.path.abspath( __file__ ) )  def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):   if not working_directory:     return list( flags )   new_flags = []   make_next_absolute = False   path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]   for flag in flags:     new_flag = flag      if make_next_absolute:       make_next_absolute = False       if not flag.startswith( '/' ):         new_flag = os.path.join( working_directory, flag )      for path_flag in path_flags:       if flag == path_flag:         make_next_absolute = True         break        if flag.startswith( path_flag ):         path = flag[ len( path_flag ): ]         new_flag = path_flag + os.path.join( working_directory, path )         break      if new_flag:       new_flags.append( new_flag )   return new_flags  def IsHeaderFile( filename ):   extension = os.path.splitext( filename )[ 1 ]   return extension in [ '.h', '.hxx', '.hpp', '.hh' ]  def GetCompilationInfoForFile( filename ):    if IsHeaderFile( filename ):     basename = os.path.splitext( filename )[ 0 ]     for extension in SOURCE_EXTENSIONS:       replacement_file = basename + extension       if os.path.exists( replacement_file ):         compilation_info = database.GetCompilationInfoForFile(           replacement_file )         if compilation_info.compiler_flags_:           return compilation_info     return None   return database.GetCompilationInfoForFile( filename )  def FlagsForFile( filename, **kwargs ):   if database:       compilation_info = GetCompilationInfoForFile( filename )     if not compilation_info:       return None      final_flags = MakeRelativePathsInFlagsAbsolute(       compilation_info.compiler_flags_,       compilation_info.compiler_working_dir_ )    else:     relative_to = DirectoryOfThisScript()     final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )    return {     'flags': final_flags,     'do_cache': True   }




在你的~/.vimrc的結尾添加:
let mapleader=","
nnoremap <leader>gc :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gd :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>

需要跳轉到函數定義的時候,光標定位到函數,進入普通模式(狂按esc后的模式),輸入,gd
其實直接輸入,gg就可以了。

如果不添加上面這4句話,每次跳轉需要 普通模式下輸入
:YcmCompleter GoToDeclaration才可以,太長了。

其他命令 參考:
https://github.com/Valloric/YouCompleteMe#goto-commands

另外,前跳后跳就是Ctrl+o Ctrl+i

至此,基本上夠用了。記錄下。



(2)找到配置文件 .ycm_extra_conf.py 
網上大多說這個文件在YouCompleteMe/cpp/ycm下面,但是YouCompleteMe下面就沒有cpp文件夾,其實它是在third_party/ycmd/cpp/ycm目錄下。

$ cd  ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/
  • 1
  • 1

ls -a 即可看到。 
(3)自行在YoucompleteMe/中創建cpp/ycm目錄,將 .ycm_extra_conf.py拷貝進去

$ cd  ~/.vim/bundle/YouCompleteMe
  • 1
  • 1
$ mkdir  cpp
  • 1
  • 1
$ mkdir  cpp/ycm
  • 1
  • 1
$ cp third_party/ycmd/cpp/ycm/.ycm_extra_conf.py  cpp/ycm/
  • 1
  • 1

4.修改.vimrc配置文件 
將下面的內容添加到.vimrc里面

" 尋找全局配置文件
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
" 禁用syntastic來對python檢查
let g:syntastic_ignore_files=[".*\.py$"] 
" 使用ctags生成的tags文件
let g:ycm_collect_identifiers_from_tag_files = 1
" 開啟語義補全
" 修改對C語言的補全快捷鍵,默認是CTRL+space,修改為ALT+;未測出效果
"let g:ycm_key_invoke_completion = '<M-;>'
" 設置轉到定義處的快捷鍵為ALT+G,未測出效果
"nmap <M-g> :YcmCompleter GoToDefinitionElseDeclaration <C-R>=expand("<cword>")<CR><CR> 
"關鍵字補全
"let g:ycm_seed_identifiers_with_syntax = 1
" 在接受補全后不分裂出一個窗口顯示接受的項
set completeopt-=preview
" 讓補全行為與一般的IDE一致
set completeopt=longest,menu
" 不顯示開啟vim時檢查ycm_extra_conf文件的信息
let g:ycm_confirm_extra_conf=0
" 每次重新生成匹配項,禁止緩存匹配項
let g:ycm_cache_omnifunc=0
" 在注釋中也可以補全
let g:ycm_complete_in_comments=1
" 輸入第一個字符就開始補全
let g:ycm_min_num_of_chars_for_completion=1
" 錯誤標識符
let g:ycm_error_symbol='>>'
" 警告標識符
let g:ycm_warning_symbol='>*'
" 不查詢ultisnips提供的代碼模板補全,如果需要,設置成1即可
" let g:ycm_use_ultisnips_completer=0
"
  • 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
  • 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

上面的內容中,除了第一句尋找全局配置文件,其他的語句可以根據自己的需要更改、刪除或添加。 
注:如果沒有在第(3)步中自己創建cpp/ycm目錄拷貝.ycm_extra_conf.py文件,則需要將第一句中的路徑改為全局配置文件所在的具體路徑,如下:

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
  • 1
  • 2
  • 1
  • 2

5.保存退出.vimrc ,打開一個C/C++源程序,體驗其自動補全效果。 
這里寫圖片描述 
還可以對C++的STL庫智能補全: 
這里寫圖片描述

6. 
(1)配合上面安裝的syntastic還可以語法檢測 
這里寫圖片描述 
‘>>’指出有語法錯誤,但是檢測速度太慢,沒什么大用。

自我感覺這個語法自動檢測很煩,可以禁用它: 
進入 /bundle/YouCompleteMe/plugin 
修改youcompleteme.vim中的: 
這里寫圖片描述
將如上圖中的第141行的參數改為0就可以了。 
(2)YcmDiags插件可以顯示錯誤或警告信息,可以設置F9為打開窗口的快捷鍵,在.vimrc中添加語句: 
這里寫圖片描述 
顯示效果: 
這里寫圖片描述

7.添加頭文件 
目前在include中,無法補全stdio.h等頭文件,我們需要將/usr/include添加進去。路徑添加到 ~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py 文件中的flags 數組中,每增加一個路徑,前面要寫’-isystem’。 
這里寫圖片描述

以后需要boost庫等其他的補全,也需要將相應的路徑添加進去。

-.YoucompleteMe還有很多強大的功能,有興趣可以繼續探索。




posted on 2017-05-08 09:47 hello wold! 閱讀(4509) 評論(0)  編輯 收藏 引用 所屬分類: 編程相關
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国内精品视频666| 欧美一级网站| 久久久久久久久伊人| 欧美亚洲视频一区二区| 亚洲欧美日韩精品在线| 久久在线免费观看视频| 亚洲成色777777女色窝| 亚洲高清视频的网址| 日韩视频一区二区在线观看 | 亚洲二区在线视频| 亚洲国产视频一区| 亚洲一二三区精品| 久久国产综合精品| 亚洲高清一二三区| 亚洲一区二区三区四区五区午夜| 欧美中文字幕第一页| 欧美日本三区| 在线观看亚洲视频| 在线视频你懂得一区| 久久黄金**| 亚洲乱码国产乱码精品精98午夜| 欧美一区二区三区四区在线| 久久这里有精品视频| 欧美高清免费| 亚洲性感美女99在线| 久久亚裔精品欧美| 国产精品免费一区豆花| 亚洲精品久久久久久久久久久| 在线一区欧美| 欧美激情日韩| 西西人体一区二区| 欧美婷婷久久| 亚洲精品在线观看免费| 久久国产主播| 亚洲一区二区成人在线观看| 欧美激情一区二区三区在线| 一区二区亚洲欧洲国产日韩| 亚洲欧美色一区| 亚洲精品社区| 欧美黄色免费| 亚洲激情啪啪| 欧美成人中文字幕| 久久久精彩视频| 国产日韩欧美另类| 欧美一区二区在线免费播放| 亚洲婷婷在线| 国产精品美女在线观看| 一区二区三区精品在线 | 最新日韩中文字幕| 久久九九免费视频| 国产最新精品精品你懂的| 欧美一区二区三区的| 亚洲视频精选在线| 国产精品久久久久国产a级| 亚洲无吗在线| 这里只有精品在线播放| 欧美视频中文一区二区三区在线观看| 亚洲精品免费一二三区| 亚洲国产综合视频在线观看| 欧美电影在线观看| 一区二区三区波多野结衣在线观看| 亚洲国产日韩一区二区| 欧美激情一区| 亚洲新中文字幕| 亚洲性线免费观看视频成熟| 国产乱理伦片在线观看夜一区| 欧美在线资源| 久久综合九色99| 夜夜嗨一区二区三区| 一区二区三区精品| 国产精品综合| 另类图片综合电影| 欧美黑人国产人伦爽爽爽| 夜色激情一区二区| 亚洲一区精品在线| 韩日成人在线| 亚洲黄网站黄| 国产精品美女一区二区| 久久久亚洲国产天美传媒修理工| 久久婷婷麻豆| 伊人精品在线| 激情欧美国产欧美| 国产偷久久久精品专区| 性欧美激情精品| 久久久999精品视频| 亚洲大片av| 亚洲国产婷婷综合在线精品 | 欧美成人综合| 欧美日韩成人综合| 久久精品99国产精品日本| 久久久另类综合| 中文日韩在线| 久久中文精品| 欧美在线精品免播放器视频| 久久精品女人天堂| 亚洲欧美国产不卡| 葵司免费一区二区三区四区五区| 亚洲视频第一页| 麻豆精品精品国产自在97香蕉| 亚洲一二三区在线观看| 久久久久久91香蕉国产| 亚洲一区二区三区乱码aⅴ| 久久综合网色—综合色88| 午夜精品久久久久久久久久久久久| 久久精品系列| 欧美在线电影| 欧美日韩国产天堂| 美国十次了思思久久精品导航| 欧美日韩欧美一区二区| 另类天堂视频在线观看| 国产精品一区二区久久| 亚洲精品影院| 亚洲精品在线视频观看| 欧美在线播放一区| 亚洲欧美中文字幕| 欧美日韩不卡| 亚洲大片在线| 亚洲大片在线观看| 久久精品成人| 久久久久成人精品免费播放动漫| 欧美日韩在线一区二区三区| 亚洲国产精品999| 亚洲国产精品一区二区第一页| 欧美在线播放高清精品| 久久超碰97中文字幕| 国产精品久久网| 亚洲特黄一级片| 午夜精品久久| 国产精品系列在线播放| 亚洲视频精选在线| 午夜精品久久久久久久久久久| 欧美日韩在线另类| 一本大道久久a久久综合婷婷| 亚洲日本欧美天堂| 免费一区视频| 亚洲激情在线观看| 99精品欧美一区二区三区| 欧美激情一区二区三区在线视频| 欧美激情第3页| 亚洲丁香婷深爱综合| 日韩午夜激情| 日韩视频一区二区三区在线播放免费观看 | 噜噜噜躁狠狠躁狠狠精品视频| 99成人在线| 欧美精品一区二区三| 亚洲第一网站| av72成人在线| 国产精品久久久久久久9999| 亚洲综合色自拍一区| 久久国产主播精品| 亚洲国产精品成人| 欧美日韩国产成人| 亚洲欧美成人精品| 美女视频网站黄色亚洲| 亚洲欧洲精品一区二区三区| 欧美三级电影一区| 午夜精品久久久久久久白皮肤| 久久久久国产精品麻豆ai换脸| 国产一区二区三区精品久久久| 老司机免费视频久久| 亚洲美女诱惑| 久久久蜜桃精品| 日韩天堂av| 国产亚洲观看| 欧美精品一区二区久久婷婷| 亚洲一级二级| 欧美凹凸一区二区三区视频| 中文av字幕一区| 狠狠色狠色综合曰曰| 欧美人在线视频| 欧美一区网站| 夜夜嗨av一区二区三区网站四季av | 国产精品久久久久久久久久免费看| 亚洲国产影院| 午夜在线一区二区| 亚洲国产精品va在线看黑人| 国产精品jizz在线观看美国 | 国产女主播一区| 欧美国产日韩精品| 亚洲欧美综合另类中字| 亚洲欧洲日本在线| 久久综合色播五月| 亚洲欧美成人网| 91久久精品美女高潮| 国产精品视频一二三| 男人的天堂成人在线| 欧美亚洲在线播放| 夜夜嗨av一区二区三区网站四季av| 老司机精品久久| 久久国产精品免费一区| 在线一区免费观看| 亚洲精品久久久久久久久久久久久 | 又紧又大又爽精品一区二区| 欧美a级理论片| 国产视频在线观看一区| 久久综合图片| 久久久99精品免费观看不卡| 亚洲视频网站在线观看| 最新亚洲电影| 欧美高清一区二区|