Mac下安装vim的插件YouCompleteMe及注意事项

本文详细介绍在Mac环境下安装及配置YouCompleteMe的过程,包括安装homebrew、vim、cmake等前置工具,通过vim插件管理器bundle或直接使用git安装YouCompleteMe,以及最后的依赖项安装和.vimrc配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mac下的YouCompleteMe安装还是很麻烦的,所以我安装完之后写下此篇blog,以供诸位一起学习

此篇借鉴了网上一些文章的情况下结合了我自己的一点心得:

1.基本准备(我默认已经安装好了以下软件)

(1).homebrew(mac的包管理软件)   

如果没装,则:百度搜索homebrew,进入homebrew官网,English改为简体中文,如下

然后拷贝下面的命令至终端

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

注意事项:很多网上的blog也是类似这样的一串命令,实际上也是从官网这里copy来的,其实最好还是从官网这里拷贝最新的命令,这样的就肯定不会错了。

安装好之后,终端输入:

brew doctor      (目的是为了检测是否有异常)

没有问题的话,如下Your system is ready to brew.

然后在终端输入:

brew update        (更新一下)

(2).vim(非Macvim)                           

如果没装,使用命令: 

brew install vim

如果你想对你的vim进行配置的话,可以看以下内容:

首先:cd ~  (回到用户的主目录)

然后:ls -a  (目的是查找.vimrc    ,  .vimrc 文件是配置vim的,要注意的是,我这里指的是~/.vimrc

如图:   如果没有.vimrc,则可以自己创建:touch  .vimrc

然后:vim .vimrc    ,配置成如下

set nu     "显示行号

syntax on   "开启语法高亮

set tabstop=4  "设置缩进为4格

set autoindent   "设置自动对齐

set backspace=indent,eol,start   "必须添加!这个是mac上防止退格键失效,

color industry     "设置终端颜色模式为industy,我比较喜欢这个颜色模式,护眼

(3).cmake  (用于之后的ycm包编译)

如果没装,使用命令:

brew install cmake

(4), git  (必备工具)

如果没装,则使用命令:

brew install git

 

2.开始安装YouCompleteMe

我看网上是有两种方式,一种是用vim的插件管理器bundle去安装插件YouCompleteMe,另一种是直接安装插件YouCompleteMe。

我知道有人认为这是一种方式,但是我觉得是两种,我都会一一介绍:

 

(1).使用vim的插件管理器bundle

首先,使用git下载bundle      (这里使用git还是很快的!)

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

注意事项:

网上有两种下载

一种是:末尾为Vundle.vim,这是新版的地址

另一种是:末尾为Vundle    ,这是旧版的地址

我这里使用新版的地址。

然后终端输入 :

cd  ~/.vim    (就可以看见下载好的bundle)

然后,打开刚才的.vimrc文件,加入以下内容(这是为了配置)

set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.

" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

然后保存    :wq     ,并且退出

接下里就是关键部分!!!

在终端输入:

sudo vim   (必须使用sudo,否则权限不够,后面有个地方也是这样!!)

然后底行输入

:PluginInstall

如图:

没问题的话,如下显示:

看见下面显示Done!,则代表bundle插件没有问题,

注意:如果刚刚打开vim的时候没有加上sudo,则会出现如下问题

然后使用bundle插件安装YouCompleteMe

首先,

在~/.vimrc中的  call vundle#begin() 和call vundle#end    的中间 添加    Bundle 'Valloric/YouCompleteMe'

如图:

保存并退出

然后,在终端输入:

:BundleInstall         (进入安装ycm插件,本质上就是使用git下载下来)

如图:

 

注意:这个安装的时候没有进度条,也没有其他表示,就像是卡住了一样,不要急,这不过是正在处理,等很长时间就好了。

会显示:bundle processing。。。。。。之类的

注意⚠️:因为这里实在是太慢了,如果有耐心的人可以继续等下去,但是我没耐心,我使用的是直接用git的方式下载下来,和这个bundle的方式是一样的!!

 

(2).直接使用git下载YouCompleteMe

首先还是回到主目录:cd ~

然后进入以下目录:  cd ~/.vim/bundle/

然后终端输入:(必须sudo)  sudo git clone https://github.com/Valloric/YouCompleteMe.git

然后等待一会。。。。。大概快的话半个小时,主要是外网总是60k/s,慢的很

然后如图所示:

 

3.安装ycm的依赖项和配置  .vimrc  文件

(1).依赖项安装

首先:cd YouCompleteMe  

然后,还需要安装一个依赖项!!!(我看有些文章根本没提这个,难道不会出问题吗???!!)

终端输入:(必须sudo) sudo git submodule update --init --recursive

等一会儿。。。。。。。

然后好了之后,终端输入:./install.py --clang-completer  

 

(2).vimrc里面添加配置内容

至此,YouCompleteMe然后就安装好了,但是接下来还需要在  .vimrc 中添加一下必要的配置 (此时,这里是第三次往.vimrc添加内容了!)

终端输入:  vim ~/.vimrc   

往.vimrc里面添加以下内容

" 自动补全配置
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "回车即选中当前项
"上下左右键的行为 会显示其他信息
inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"

"youcompleteme 默认tab s-tab 和自动补全冲突
"let g:ycm_key_list_select_completion=['<c-n>']
let g:ycm_key_list_select_completion = ['<Down>']
"let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_key_list_previous_completion = ['<Up>']
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示

let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR> "force recomile with syntastic
"nnoremap <leader>lo :lopen<CR> "open locationlist
"nnoremap <leader>lc :lclose<CR> "close locationlist
inoremap <leader><leader> <C-x><C-o>
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0

nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处

 

(3).在.vimrc补上还需的配置 

⚠️注意:如果不做这一步的话,那么打开vim就会在下面显示NoExtraConfDetected: No .ycm_extra_conf.py file detected!!!

所以必须在  .vimrc中添加这一句话:

 let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/cpp/.ycm_extra_conf.py'

如图所示:

在.vimrc里面添上这一句话之后,紧接着前往以下地方

终端输入:

cd ~/.vim/bundle/YouCompleteMe

如下所示:(我这里是已经创建好了cpp文件夹,一般来说,这里是没有cpp这个文件夹的!!)

创建cpp文件夹,终端输入:

mkdir cpp

并且进入:  cd cpp

然后创建一个文件.ycm_extra_conf.py

终端输入:sudo vim .ycm_extra_conf.py    (这个就是缺少的文件)

打开.ycm_extra_conf.py文件之后,往里面添加如下内容:(注意:以下内容是针对c,c++的)

 

import os

import ycm_core

flags = [

'-Wall',

'-Wextra',

'-Werror',

'-Wno-long-long',

'-Wno-variadic-macros',

'-fexceptions',

'-DNDEBUG',

'-std=c++11',

'-x',

'c++',

'-I',

'/usr/include',

'-isystem',

'/usr/lib/gcc/x86_64-linux-gnu/5/include',

'-isystem',

'/usr/include/x86_64-linux-gnu',

'-isystem'

'/usr/include/c++/5',

'-isystem',

'/usr/include/c++/5/bits'

]

 

SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', ]

def FlagsForFile( filename, **kwargs ):

return {

'flags': flags,

'do_cache': True

}

如图所示:

保存,并且,退出

 

至此全部完结!!!!,终于安装好了~~~~,啦啦啦啦啦啦

安装配置好之后的效果图如下:

 

 

哈哈哈,总算搞好了! 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值