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

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>
            国产一区二区三区黄视频| 亚洲中字黄色| 一区二区精品国产| 99在线精品视频| 亚洲网友自拍| 午夜精品久久久久久| 午夜精品福利在线观看| 久久都是精品| 美女脱光内衣内裤视频久久影院 | 欧美中文在线免费| 欧美一区永久视频免费观看| 久久久精品2019中文字幕神马| 麻豆精品国产91久久久久久| 亚洲第一黄网| 99国产精品99久久久久久| 亚洲一区影院| 免费视频一区| 国产精品免费网站| 亚洲福利视频二区| 亚洲免费影视第一页| 美女视频黄 久久| 一区二区av在线| 久久久欧美精品sm网站| 欧美日韩一区精品| 尤物视频一区二区| 日韩一区二区精品| 在线观看一区欧美| 亚洲国产精品一区二区第一页| 亚洲精品欧美日韩专区| 一区二区三区国产在线| 久久中文精品| 亚洲视屏一区| 欧美国产乱视频| 国产欧美另类| 在线视频日本亚洲性| 免费观看亚洲视频大全| 亚洲一区二区伦理| 欧美日本一区| 亚洲国产精品一区二区三区| 欧美诱惑福利视频| 日韩视频在线永久播放| 久久免费国产精品| 国内不卡一区二区三区| 午夜精品一区二区三区四区| 亚洲黄色视屏| 久久亚洲精品伦理| 国内精品国语自产拍在线观看| 亚洲一区二区三区午夜| 最新中文字幕亚洲| 免费h精品视频在线播放| 国产一区二区三区免费在线观看| 亚洲女人天堂av| 99国产麻豆精品| 欧美精品在线观看91| 亚洲人成人一区二区三区| 久久亚洲春色中文字幕久久久| 亚洲欧美日韩一区在线观看| 国产精品试看| 欧美一区二区三区在线看 | 久久gogo国模裸体人体| 国产精品天天看| 性欧美videos另类喷潮| 一区二区三区**美女毛片| 欧美三日本三级三级在线播放| 亚洲视频综合在线| 一区二区三区精品| 国产精品免费一区二区三区在线观看 | 欧美日韩免费在线视频| 亚洲精品中文在线| 亚洲精品久久久久久久久久久久 | 午夜精品一区二区三区四区| 亚洲视频免费| 国产欧美日韩在线播放| 久久久久成人精品免费播放动漫| 小嫩嫩精品导航| 国产女主播一区二区三区| 欧美一进一出视频| 国产精品自拍小视频| 欧美在线视频观看免费网站| 欧美亚洲在线视频| 在线观看亚洲视频| 91久久线看在观草草青青| 欧美日韩1080p| 亚洲欧美视频在线观看| 久久福利电影| 亚洲伦理网站| 亚洲影院高清在线| 一区视频在线播放| 亚洲精品视频在线| 国产精品一级在线| 欧美成人免费观看| 欧美午夜精品久久久久久浪潮| 欧美一区二区视频在线观看| 久久久亚洲人| 一区二区三区波多野结衣在线观看| 一本色道久久99精品综合| 国产亚洲一区精品| 亚洲人永久免费| 国产亚洲精品激情久久| 亚洲国产老妈| 国产精品久久久| 久久九九热免费视频| 欧美成人精品在线观看| 欧美中文字幕不卡| 欧美精品二区| 久久久久久久综合| 欧美视频免费看| 欧美电影在线| 国产伦精品一区二区三区照片91| 亚洲成人在线视频播放 | 欧美精品在线免费观看| 久久电影一区| 欧美三日本三级少妇三2023| 欧美成人日韩| 国产在线精品二区| 一区二区动漫| 99国内精品久久| 久久在线播放| 久久久91精品国产一区二区三区 | 小黄鸭精品密入口导航| 欧美看片网站| 亚洲国产mv| 一区免费在线| 久久本道综合色狠狠五月| 亚洲尤物视频网| 欧美日韩三区| 亚洲精品久久久久久久久久久久| 亚洲福利视频一区| 久久久精品一区二区三区| 久久国产精品一区二区三区四区 | 99在线热播精品免费| 亚洲日本一区二区三区| 久久亚洲一区| 免费在线看成人av| 亚洲激情网址| 一区二区三区亚洲| 亚洲女同性videos| 亚洲男女自偷自拍图片另类| 欧美精品久久99| 亚洲国产精品欧美一二99| 亚洲国产欧美精品| 久久综合国产精品| 麻豆精品精品国产自在97香蕉| 国产美女精品一区二区三区| 亚洲午夜在线| 欧美呦呦网站| 韩国精品在线观看| 久久婷婷av| 亚洲第一色中文字幕| 亚洲国产小视频| 欧美精品乱码久久久久久按摩| 亚洲国产91精品在线观看| 99re6这里只有精品视频在线观看| 欧美另类亚洲| 亚洲在线免费观看| 久久久国产精品亚洲一区 | 亚洲国产成人久久| 免费一级欧美在线大片| 亚洲国产精品久久| 一区二区三区导航| 国产精品看片你懂得| 欧美在线视频免费观看| 欧美激情亚洲自拍| 亚洲一区二区综合| 激情婷婷欧美| 欧美日本不卡视频| 亚洲免费在线| 狂野欧美激情性xxxx欧美| 亚洲精品资源| 国产女人aaa级久久久级| 欧美在现视频| 亚洲欧洲视频在线| 久久精品国产v日韩v亚洲 | 亚洲欧洲日产国产综合网| 亚洲中字在线| 精品51国产黑色丝袜高跟鞋| 欧美精品福利在线| 欧美在线免费一级片| 亚洲精品久久久久久下一站| 久久国产高清| 正在播放欧美视频| 伊人久久大香线蕉综合热线| 欧美日韩福利视频| 久久五月婷婷丁香社区| 亚洲综合成人在线| 亚洲人成在线影院| 久久九九免费视频| 亚洲视频一区| 亚洲国产日韩在线| 国产精品主播| 欧美日韩精品二区| 麻豆av福利av久久av| 亚洲欧美日韩在线不卡| 亚洲精品视频在线| 伊人久久亚洲美女图片| 国产精品视频一二| 欧美精品成人| 欧美成人午夜77777| 欧美怡红院视频| 亚洲综合不卡|