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

Hello World!

程序員那點事兒

首頁 新隨筆 聯(lián)系 聚合 管理
  20 Posts :: 6 Stories :: 0 Comments :: 0 Trackbacks

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

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

 

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里面安裝一下,執(zhí)行

:PluginInstall 

看到有DONE!顯示就好了

  • 編譯youcomplete

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

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

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

接下來就是編譯的重頭戲

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    " 語法關(guān)鍵字補全   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修改一下,以下是該文件內(nèi)容,復制之前,友情提示,在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的結(jié)尾添加:
let mapleader=","
nnoremap <leader>gc :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gd :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>

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

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

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

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

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



(2)找到配置文件 .ycm_extra_conf.py 
網(wǎng)上大多說這個文件在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/中創(chuàng)建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配置文件 
將下面的內(nèi)容添加到.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-;>'
" 設(shè)置轉(zhuǎn)到定義處的快捷鍵為ALT+G,未測出效果
"nmap <M-g> :YcmCompleter GoToDefinitionElseDeclaration <C-R>=expand("<cword>")<CR><CR> 
"關(guān)鍵字補全
"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提供的代碼模板補全,如果需要,設(shè)置成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

上面的內(nèi)容中,除了第一句尋找全局配置文件,其他的語句可以根據(jù)自己的需要更改、刪除或添加。 
注:如果沒有在第(3)步中自己創(chuàng)建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行的參數(shù)改為0就可以了。 
(2)YcmDiags插件可以顯示錯誤或警告信息,可以設(shè)置F9為打開窗口的快捷鍵,在.vimrc中添加語句: 
這里寫圖片描述 
顯示效果: 
這里寫圖片描述

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

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

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




posted on 2017-05-08 09:47 hello wold! 閱讀(4508) 評論(0)  編輯 收藏 引用 所屬分類: 編程相關(guān)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            激情综合视频| 9色精品在线| 久久国产精品第一页| 毛片一区二区三区| 性欧美xxxx视频在线观看| 亚洲一区二区三区四区在线观看| 亚洲福利国产| 一区二区三区**美女毛片| 99v久久综合狠狠综合久久| 亚洲精选国产| 亚洲欧美日韩国产一区| 久久精品国亚洲| 欧美成人综合在线| 欧美午夜在线观看| 国产色视频一区| 亚洲精品中文字幕在线| 亚洲一区3d动漫同人无遮挡| 亚洲女女做受ⅹxx高潮| 久久久蜜桃一区二区人| 欧美高清视频一区二区| 99视频一区二区| 久久久青草婷婷精品综合日韩| 欧美日韩国产综合视频在线| 国产一区二区中文| 夜夜嗨av一区二区三区网站四季av | 欧美韩日一区| 一本色道久久综合亚洲精品小说 | 91久久精品久久国产性色也91 | 亚洲高清在线| 欧美岛国激情| 亚洲综合色在线| 欧美黄在线观看| 国产视频精品免费播放| 99综合精品| 欧美黑人一区二区三区| 在线综合欧美| 欧美高清视频一区二区三区在线观看| 国产精品入口66mio| 亚洲人成人一区二区在线观看| 欧美一级二区| 99国内精品久久| 蜜桃av噜噜一区| 国产在线一区二区三区四区| 亚洲午夜久久久| 亚洲国语精品自产拍在线观看| 久久激情五月激情| 国产欧美一区二区精品忘忧草| 一区二区三区www| 亚洲风情亚aⅴ在线发布| 性欧美在线看片a免费观看| 国产精品theporn| 一区二区三区四区五区精品| 亚洲国产成人在线| 久热re这里精品视频在线6| 国内精品一区二区三区| 久久国产精品一区二区三区| 亚洲一区三区电影在线观看| 欧美日韩一区二区三区四区在线观看| 久久久99爱| 国语自产精品视频在线看| 亚洲综合视频1区| 一区二区精品在线| 国产精品高潮呻吟久久| 亚洲一区三区电影在线观看| 99亚洲一区二区| 国产精品jvid在线观看蜜臀| 亚洲一区网站| 亚洲一区二区三区免费在线观看 | 国产精品久久精品日日| 一区二区三区精品国产| 亚洲精品在线一区二区| 欧美伦理a级免费电影| 夜夜嗨av一区二区三区四季av| 亚洲人永久免费| 欧美视频福利| 午夜国产精品影院在线观看| 亚洲性感美女99在线| 国产一区二区三区成人欧美日韩在线观看 | 国产日韩欧美日韩大片| 久久久久久日产精品| 久久久综合激的五月天| 亚洲精品日韩在线观看| 夜久久久久久| 国产精品视频不卡| 久久久久久一区二区| 另类酷文…触手系列精品集v1小说| 亚洲欧洲日本一区二区三区| 日韩一区二区精品葵司在线| 国产美女精品视频免费观看| 六月天综合网| 免费不卡中文字幕视频| 在线午夜精品| 久久九九精品99国产精品| **网站欧美大片在线观看| 欧美成人午夜视频| 国产精品国产三级国产专播品爱网| 久久国产黑丝| 欧美国产日本在线| 亚洲欧美日韩中文在线制服| 久久久人成影片一区二区三区观看| 亚洲二区视频| 中文在线资源观看视频网站免费不卡| 国产小视频国产精品| 亚洲国产精品成人精品| 国产精品对白刺激久久久| 久久久久久久综合| 欧美日韩国产一区二区三区| 久久九九国产精品怡红院| 欧美成在线观看| 久久这里只有精品视频首页| 国产精品久久一级| 亚洲国产日韩欧美在线99| 国产欧美日韩另类一区| 亚洲精美视频| 亚洲大片av| 久久9热精品视频| 亚洲性xxxx| 欧美精品麻豆| 亚洲国产欧美一区| 亚洲影院在线| 99精品福利视频| 老巨人导航500精品| 欧美在线播放一区二区| 欧美午夜a级限制福利片| 亚洲国产成人av| 亚洲国产精品一区二区三区| 欧美伊人影院| 久久久久久电影| 国产日韩欧美电影在线观看| 中文国产成人精品久久一| 一本色道久久综合亚洲精品不 | 日韩视频专区| 蜜臀久久99精品久久久画质超高清 | 尤物yw午夜国产精品视频明星| 亚洲无限乱码一二三四麻| 中文精品一区二区三区| 欧美日本免费| 亚洲麻豆av| 一本色道久久加勒比88综合| 欧美日韩国产另类不卡| 亚洲日本中文字幕| 一区二区三区不卡视频在线观看| 欧美精品免费播放| 亚洲精品男同| 亚洲天堂久久| 国产精品女主播一区二区三区| 一区二区免费在线播放| 亚洲女ⅴideoshd黑人| 国产精品亚洲一区| 亚洲综合大片69999| 欧美永久精品| 黄色成人精品网站| 蜜臀a∨国产成人精品| 日韩亚洲精品电影| 亚洲欧美另类久久久精品2019| 国产精品日本| 久久精品夜夜夜夜久久| 欧美国产另类| 一区二区三区高清在线 | 国产精品久久久久毛片软件| 亚洲一区二区免费视频| 久久久天天操| 亚洲久久一区二区| 国产精品久久国产愉拍| 久久国产毛片| 亚洲精品婷婷| 久久精品亚洲精品| 亚洲日本激情| 国产欧美精品在线| 久久亚洲高清| 亚洲视频电影在线| 欧美不卡视频一区发布| 亚洲午夜伦理| 一区在线免费观看| 国产精品成人一区二区三区吃奶| 久久精品系列| 一个人看的www久久| 久久亚洲私人国产精品va| 一本色道久久综合狠狠躁篇的优点 | 欧美日韩国产区一| 午夜宅男欧美| 亚洲人久久久| 麻豆精品视频在线观看| 一区二区日韩欧美| 亚洲欧洲精品天堂一级| 国产日韩欧美在线一区| 欧美日韩国产另类不卡| 老司机精品导航| 欧美一区成人| 一区二区三区精品国产| 欧美福利在线| 久久久久久久久综合| 午夜精品在线看| 日韩天天综合| 最新成人av在线| 激情成人综合| 国产色综合天天综合网| 国产精品日韩| 欧美日韩在线观看视频| 欧美+亚洲+精品+三区|