工欲善其事必先利其器,无论是做Python还是c++开发,如果有一个好的IDE,那么效率将会得到大大的提升,如果想把vim用于轻量级IDE,那么插件是必不可少的,以下以vim配置Python3为例。
**

安装过程需要访问git等网站,请正确使用相关软件!

**

1.检查vim与python3 版本是否符合

vim --version

在输出的信息检查以下是否有’+python3’字眼,如果没有说明python3版本太低不支持,
同时vim本身的版本最好在大于等于8.0

2.查python3等版本是否符合

Ubuntu 16.04 及以上需要安装

sudo apt install build-essential cmake python3-dev

3. 安装Vundle插件管理器

  1. 首先克隆到指定目录:
 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  1. 其次,在~/.vimrc中输入如下内容:
set nocompatible              " 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 'gmarik/Vundle.vim' "插件管理
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
" 下面的一段空白处是用于添加其他插件
Plugin 'Valloric/YouCompleteMe' "插件" All of your Plugins must be added before the following line
"插件在此处之间结束不可写在之后
call vundle#end()            " required
filetype plugin indent on    " required

保存退出,输入vim重新打开,在命令模式下输入:PluginInstall即可安装,左下角显示Done!即为完成。

4.编译YouCompleteMe

  1. 进入目录插件目录:
cd ~/.vim/bundle
  1. 如若目录下没有YouCompleteMe则需要git进行下载(PluginInstall即可安装安装完成不需要进行下载)命令如下:
git clone https://github.com/Valloric/YouCompleteMe.git
  1. 进入目录执行下面命令
cd YouCompleteMe
git submodule update --init --recursive
  1. 安装(需要一步一步完全执行)

仅安装支持Python的版本:

./install.py

安装支持C语言家族的版本:

./install.py --clang-completer

安装支持go语言的版本:

./install.py --go-completer

安装支持Js、Java、Python、go所有语言的版本:

./install.py --all

5.修改 ~/.vimrc(覆盖上面的配置 不在需要)

set nocompatible
filetype onset rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()" 这里根据自己需要的插件来设置,以下是我的配置 "
"
" YouCompleteMe:语句补全插件
set runtimepath+=~/.vim/bundle/YouCompleteMe
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口"
let g:ycm_collect_identifiers_from_tags_files = 1           " 开启 YCM基于标签引擎
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全
let g:ycm_complete_in_comments = 1
let g:ycm_confirm_extra_conf = 0                            " 关闭加载.ycm_extra_conf.py提示
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 映射按键,没有这个会拦截掉tab, 导致其他插件的tab不能用.
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"             " 回车即选中当前项
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>     " 跳转到定义处
let g:ycm_min_num_of_chars_for_completion=2                 " 从第2个键入字符就开始罗列匹配项
"" github 仓库中的插件 "
Plugin 'VundleVim/Vundle.vim'Plugin 'vim-airline/vim-airline'
"vim-airline配置:优化vim界面"
"let g:airline#extensions#tabline#enabled = 1
" airline设置
" 显示颜色
set t_Co=256
set laststatus=2
" 使用powerline打过补丁的字体
let g:airline_powerline_fonts = 1
" 开启tabline
let g:airline#extensions#tabline#enabled = 1
" tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = ' '
" tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = ' '
" tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1
" 映射切换buffer的键位
nnoremap [b :bp<CR>
nnoremap ]b :bn<CR>
" 映射<leader>num到num buffer
map <leader>1 :b 1<CR>
map <leader>2 :b 2<CR>
map <leader>3 :b 3<CR>
map <leader>4 :b 4<CR>
map <leader>5 :b 5<CR>
map <leader>6 :b 6<CR>
map <leader>7 :b 7<CR>
map <leader>8 :b 8<CR>
map <leader>9 :b 9<CR>" vim-scripts 中的插件 "
Plugin 'taglist.vim'
"ctags 配置:F3快捷键显示程序中的各种tags,包括变量和函数等。
map <F3> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_WinWidt=25Plugin 'The-NERD-tree'
"NERDTree 配置:F2快捷键显示当前目录树
map <F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=25 Plugin 'indentLine.vim'
Plugin 'delimitMate.vim'" 非 github 仓库的插件"
" Plugin 'git://git.wincent.com/command-t.git'
" 本地仓库的插件 "call vundle#end()"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.rb,*.java,*.py exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle() "如果文件类型为.sh文件 if &filetype == 'sh' call setline(1, "##########################################################################") call append(line("."), "# @File Name: ".expand("%")) call append(line(".")+1, "# @Author: song")call append(line(".")+2, "# @Version: 1.0")call append(line(".")+3, "# @mail: wangsongminone@163.com") call append(line(".")+4, "# @Created Time: ".strftime("%c")) call append(line(".")+5, "#########################################################################") call append(line(".")+6, "")call append(line(".")+7, "#!/bin/bash")call append(line(".")+8, "")elseif &filetype == 'python'call setline(1,"#!/usr/bin/env python")call append(line("."),"# coding=utf-8")call append(line(".")+1, "") elseif &filetype == 'ruby'call setline(1,"#!/usr/bin/env ruby")call append(line("."),"# encoding: utf-8")call append(line(".")+1, "")"        elseif &filetype == 'mkd'
"          call setline(1,"<head><meta charset=\"UTF-8\"></head>")else call setline(1, "/*************************************************************************") call append(line("."), "  * @File Name: ".expand("%")) call append(line(".")+1, " * @Author: song") call append(line(".")+2, "      * @Version: 1.0")call append(line(".")+3, "   * @Mail: wangsongminone@163.com ") call append(line(".")+4, "    * @Created Time: ".strftime("%c")) call append(line(".")+5, " ************************************************************************/") call append(line(".")+6, "")endifif expand("%:e") == 'cpp'call append(line(".")+7, "#include <iostream>")call append(line(".")+8, "using namespace std;")call append(line(".")+9, "")endifif &filetype == 'c'call append(line(".")+7, "#include <stdio.h>")call append(line(".")+8, "")endifif expand("%:e") == 'h'call append(line(".")+7, "#ifndef _".toupper(expand("%:r"))."_H_")call append(line(".")+8, "#define _".toupper(expand("%:r"))."_H_")call append(line(".")+9, "")call append(line(".")+10, "")call append(line(".")+11, "")call append(line(".")+12, "#endif")call append(line(".")+13, "")endifif &filetype == 'java'call append(line(".")+7,"public class ".expand("%:r"))call append(line(".")+8,"")endif"新建文件后,自动定位到文件末尾
endfunc
autocmd BufNewFile * normal G """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代码补全
set completeopt=preview,menu
"允许插件
filetype plugin on
"共享剪贴板
set clipboard=unnamed
"从不备份
set nobackup
"make 运行
:set makeprg=g++\ -Wall\ \ %
"自动保存
set autowrite
set ruler                   " 打开状态栏标尺
set cursorline              " 突出显示当前行
set magic                   " 设置魔术
set guioptions-=T           " 隐藏工具栏
set guioptions-=m           " 隐藏菜单栏
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldcolumn=0
set foldmethod=indent
set foldlevel=3
set foldenable              " 开始折叠
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" 语法高亮
set syntax=on
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=4
" 统一缩进为4
set softtabstop=4
set shiftwidth=4
" 不要用空格代替制表符
set noexpandtab
" 在行和段开始处使用制表符
set smarttab
" 显示行号
set number
" 历史记录数
set history=1000
"禁止生成临时文件
set nobackup
set noswapfile
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行内替换
set gdefault
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
set laststatus=2
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(需要txt.vim脚本)au BufRead,BufNewFile *  setfiletype txt
"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {<CR>}<ESC>O
":inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)if getline('.')[col('.') - 1] == a:charreturn "\<Right>"elsereturn a:charendif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

参考资料
https://zhuanlan.zhihu.com/p/54074345
https://zhuanlan.zhihu.com/p/54071071
https://blog.csdn.net/amoscykl/article/details/80616688

ubuntu1804安装YouCompleteMe 配置vim相关推荐

  1. 解决安装YouCompleteMe与Vim版本不兼容问题

    解决安装YouCompleteMe与Vim版本不兼容问题 参考文章: (1)解决安装YouCompleteMe与Vim版本不兼容问题 (2)https://www.cnblogs.com/marsgg ...

  2. ubuntu下安装并配置VIM编辑器

    Ubuntu 16.04 下安装Vim 默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrw ...

  3. windows10下安装、配置vim及YCM安装

    久仰vim编辑器之神的大名,最近出于好奇,在windows10下折腾了一下,在此记录一下历程. 文章目录 1. windows10下的vim安装和配置 1.1 安装vim 1.2. 基础设置 1.3. ...

  4. vim 安装YouCompleteMe 插件

    原文链接:http://www.aisun.org/2017/10/vim+youcompleteme/ 要安装YouCompleteMe ,vim须支持python.可以命令输入vim --vers ...

  5. vim 安装YouCompleteMe 自动补全插件

    原文链接:http://www.zhiliaonote.com/2017/10/vim+youcompleteme/ 要安装YouCompleteMe ,vim须支持python.可以命令输入vim ...

  6. VIM插件离线安装与配置(taglist,airliner,gutentags,LeaderF,gtags,AutoComplPop,omnicppcomplete,fzf,Rg)

    VIM插件离线安装与配置 1.VIM 插件离线安装与配置 1.1 离线包 2.vim8安装 2.1.查看vim版本 2.2.vim下载 2.3 vim安装步骤 3. vimrc通用配置 4.插件管理( ...

  7. Ubuntu虚拟机的安装、配置vm-tools、搜狗输入法的安装、vim配置

    目录 前言 一.虚拟机的安装 二.Ubuntu镜像的下载和安装 1.镜像下载 2.安装教程 三.VMware-tools的安装教程 四.安装搜狗输入法 五.Vim的安装和配置 总结 前言 Ubuntu ...

  8. Archlinux YouCompleteMe+syntastic vim自动补全插件,显示缩进和状态栏美化,爽心悦目的vim

    Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 参考: https://github.com/Valloric/YouCompleteMe https://github ...

  9. vscode 逗号不换行_在VSCode里面配置Vim正确姿势(细节解析)

    一.导论 对于不用vim的人来说,vim简直是个噩梦,复杂的指令.丑陋的界面.令人头痛的配置文件,任何一项都足以劝退一大波人,但是对于已经习惯了使用vim的人来说,vim简直就是马良神笔,似乎vim除 ...

  10. 行号 设置vim_在VSCode里面配置Vim正确姿势(细节解析)

    一.导论 对于不用vim的人来说,vim简直是个噩梦,复杂的指令.丑陋的界面.令人头痛的配置文件,任何一项都足以劝退一大波人,但是对于已经习惯了使用vim的人来说,vim简直就是马良神笔,似乎vim除 ...

最新文章

  1. api接口rsa加密
  2. 小程序开发学习(2)---.wxml详解篇
  3. 什么时候应该避免写代码注释?
  4. C语言小白——数组与字符串
  5. wow修改人物模型_玻璃钢气球狗模型景观雕-东莞气球树脂雕塑
  6. python儿童入门视频-老男孩Python视频教程全套完整版!无偿分享~
  7. HTTP状态码介绍详细
  8. 明日方舟 长夜临光side story
  9. 华为路由器IPv6 over IPv4 GRE隧道配置详解
  10. web - 常见浏览器及内核
  11. 使用freemarker导出word含图片
  12. 【老九】【C语言】CodeBlocks安装文档
  13. 凸优化第三章凸函数 3.3 共轭函数
  14. Shader实现高光反射
  15. SCI-HUB的前世今生以及其他下载论文文献的方法
  16. C/C++去小数位取整、向下取整、向上取整与四舍五入
  17. (三)傅里叶变换:离散时间傅里叶变换DTFT CTFT->DTFT
  18. 收集的几个自定义的404页面的模板
  19. 10款网站后台管理系统模板_bootstrap网站后台模板_html后台模板下载(一)
  20. xfire ---java web服务器引擎

热门文章

  1. ADT下载地址(含各版本),最新ADT-23.0.6
  2. 如何用VB开发游戏外挂
  3. 暗黑破坏神不朽怎么在电脑上玩 暗黑破坏神不朽模拟器教程
  4. AutoCAD 2019 for Mac 汉化安装手册
  5. 雷霄骅《基于 FFmpeg + SDL 的视频播放器的制作》源码在VS2017中编译的兼容性问题
  6. @PostConstruct @DependsOn
  7. 信杂比公式_信噪比怎么计算
  8. 数字图像处理应用---车牌号识别
  9. 有道词典pc离线包打包下载_【超福利】安卓手机上最好用的离线词典
  10. python 网络调试助手