vim配置轻量级IDE

Wesley13
• 阅读 978

安装VIM

安装YouCompleteMe的时候, 需要VIM的版本比较高, 一般一些Linux长期支持版的Vim包就比较老, 所以可能需要编译安装.

卸载之前系统中安装的版本:

CentOS/Fedora
    sudo yum remove vim -y

Debian/Ubuntu
    sudo apt autoremove vim -y

Vim ftp, 查找需要的版本, 一般选择最新版本就行了.

下载, 解压后, 进入目录中的src目录. 如果使用默认的配置的话, 那么直接运行:

make
sudo make install

想自定义的话, 需要使用./configure重新编译. ./configure --with-features=huge --enable-pythoninterp

  • --with-features=huge: 最大的特性支持.
  • --enable-pythoninterp: 启用VimPython的支持, 默认Vim是不支持Python的.

然后重新执行:

make
sudo make install

卸载安装的Vim, 在src目录中执行sudo make uninstall. 如果想要重新编译的话, 那么需要清除之前编译的文件make distclean.

将VIM配置为轻量级IDE

YouCompleteMe需要系统安装ctags, gcc, gcc-c++, python-devel, cmake

YouCompleteMe如果报错The ycmd server SHUT DOWN..., 那么进入~/.vim/bundle/YouCompleteMe目录下, 执行./install.py

克隆VundleVim~/.vim/bundle, 会自动创建目录. git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

首先在vim的配置文件~/.vimrc中关闭兼容模式和文件类型检测, 直接在文件中追加:

set nocompatible
filetype off
  • VundleVim 管理插件
  • YouCompleteMe 代码自动补全
  • vim-airline 增强状态栏和标签栏
  • Tagbar 查看函数和变量的定义
  • NERDTree 文件目录树
  • identline 显示缩进的对齐线
  • delimitMate 自动补全括号和引号
  • Cscope 代码阅读

还支持两种插件类型:

" 非 github 仓库的插件
Plugin 'git://git.wincent.com/command-t.git'

" 本地仓库的插件
Plugin 'file:///home/lei/plugin'

VundleVim的简单命令, 在vim的命令模式中执行, 例如(:PluginInstall):

  • PluginList: 列出安装的插件
  • PluginInstall: 根据配置文件安装插件
  • PluginUpdate: 更新插件
  • PluginSearch [name]: 查找名为 [name] 的插件
  • PluginClean: 清除无用的插件

保存.vimrc, 在命令模式中输入:PluginInstall, 安装配置的需要安装的插件。

VIM配置文件

如果不安装插件那么直接复制基本的配置内容就行了.

如果想全局生效, 那么在/etc/vimrc中进入插入模式, 在文件最后面追加配置。

配置vim

" =======================
" vimrc配置
" =======================

" -----------------------
" => 基本
" -----------------------

" 显示行号
set nu

" 高亮关键字
syntax on

" 使用鼠标
set mouse=a

" 搜索结果高亮显示
set hlsearch

" 一个tab等于4个空格
set tabstop=4
set shiftwidth=4

" 表示Tab自动转换成空格
set expandtab

" 智能对齐
set autoindent
set smartindent

" 解决删除键不生效
set backspace=indent,eol,start

" 行尾结束符, 设置为unix
set fileformat=unix

" 文件编码
" fenc=utf-8

" 配置粘贴不自动换行的快捷键
set pastetoggle=<F9>

" 允许折叠
set foldenable

" 手动折叠
set foldmethod=manual

" 自动保存
set autowrite

" 记录历史的行数
set history=10000

" 设置搜索时忽略大小写
set ignorecase

" 高亮显示光标所在的行和列
" 显示颜色
set t_Co=256
set bg=dark
set cursorline
set cursorcolumn

" 自定义光标样式
highlight CursorLine cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONE
highlight CursorColumn cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONE

" 显示tab和空格
set list

" 设置tab和空格样式
set lcs=tab:\|\ ,nbsp:%,trail:·

" 设定行首tab为灰色
highlight LeaderTab guifg=#666666

" 匹配行首tab
match LeaderTab /^\t/

" 输入的命令显示出来
set showcmd

" 启动显示状态行(1),总是显示状态行(2)
set laststatus=2

" -----------------------
" => 安装插件
" -----------------------

" 关闭vi兼容模式
set nocompatible

" 关闭文件类型检测
filetype off

" 运行时路径, 插件
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" 插件管理器
Plugin 'VundleVim/Vundle.vim'

" -----------------------
" => github 仓库中的插件
" -----------------------
" 自动补全
Plugin 'Valloric/YouCompleteMe'
" 底栏和顶栏
Plugin 'vim-airline/vim-airline'
" 侧边栏显示git修改
Plugin 'airblade/vim-gitgutter'
" 目录树显示文件的git修改
Plugin 'Xuyuanp/nerdtree-git-plugin'

" -----------------------
" => vim-scripts 中的插件
" -----------------------
" 显示文件中所有的函数和变量
Plugin 'Tagbar'
" 目录树
Plugin 'The-NERD-tree'
" 显示tab对齐线
Plugin 'indentLine.vim'
" 符号自动补全
Plugin 'delimitMate.vim'
" 标签提取
Plugin 'ctags.vim'
" 颜色主题
Plugin 'desert.vim'
" 显示Python的虚拟环境
Plugin 'virtualenv.vim'

call vundle#end()
filetype plugin indent on


" -----------------------
" => 插件安装完成后的配置
" -----------------------

" -----------------------
" ==> airline 标签栏配置
" -----------------------

" 启用powerline字体
let g:airline_powerline_fonts = 1
" 开启标签栏
let g:airline#extensions#tabline#enabled = 1
" 标签栏路径显示
" let g:airline#extensions#tabline#formatter = "default"
" let g:airline#extensions#tabline#formatter = "jsformatter"
" let g:airline#extensions#tabline#formatter = "unique_tail_improved"
let g:airline#extensions#tabline#formatter = "unique_tail"

" -----------------------
" ==> YouCompleteMe配置
" -----------------------
" 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>']

set completeopt=longest,menu

" 关闭加载.ycm_extra_conf.py提示
let g:ycm_confirm_extra_conf=0

" 在注释输入中也能补全
let g:ycm_complete_in_comments = 1
" 在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
" 直接触发自动补全
let g:ycm_key_invoke_completion = '<C-Space>'

" 显示所有匹配
map <leader>gd :YcmDiags<CR>
" 跳转到申明处
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
" 跳转到定义处
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
" 函数定义跳转, 将光标定位到函数, 输入gd 回车
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>

" -----------------------
" ==> Tagbar配置
" -----------------------
" 函数变量窗口, F3开启和关闭
map <F3> :TagbarToggle<CR>
let tagbar_ctags_bin = 'ctags'
let tagbar_right = 1
let g:tagbar_width = 30
" tagbar一打开, 光标就在tagbar页面内
let g:tagbar_autofocus = 1
" 设置标签不排序,默认排序
let g:tagbar_sort = 0

" -----------------------
" ==> The-NERD-tree配置
" -----------------------
" 目录树, 使用F2开启或关闭
map <F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=30
" 自动开启
" autocmd vimenter * NERDTree
" 是否显示隐藏文件
let NERDTreeShowHidden=1
" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']

" -----------------------
" ==> Xuyuanp/nerdtree-git-plugin配置
" -----------------------
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }

" -----------------------
" ==> vim-gitgutter配置
" -----------------------


" -----------------------
" ==> virtualenv.vim
" -----------------------

" 退出虚拟环境
" :VirtualEnvDeactivate
" 显示所有虚拟环境
" :VirtualEnvList
" 激活虚拟环境
" :VirtualEnvActivate venv
" 可以使用tab选择要激活的虚拟环境
" :VirtualEnvActivate <tab>
" 显示帮助
" :help virtualenv

highlght主要是用来配色的, 包括语法高亮等个性化的配置. 可以通过:h highlight, 查看详细信息.

CursorLineCursorColumn分别表示当前所在的行列.

cterm表示为原生vim设置样式, 设置为NONE表示可以自定义设置.

ctermbg设置终端vim的背景色.

ctermfg设置终端vim的前景色.

guibgguifg分别是设置gvim的背景色和前景色, 本人平时都是使用终端打开vim, 所以只是设置终端下的样式.

推荐使用的颜色包括: black, brown, grey, blue, green, cyan, magenta, yellow, white.

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这