首页 > 编程语言 > 详细

在ubuntu下使用Vim学习C++

时间:2015-04-06 21:44:33      阅读:283      评论:0      收藏:0      [点我收藏+]

  之前就买过java,c++的书,可是由于懒惰,一直没看,丢在那里5年了。(以上废话)。

  现在linux下还没有好的C++ IDE。网络上的朋友都推荐eclipse和 code::block。粗略的看了下code::block,建工程,管理工程,功能很多,准备以后学习下。 学习C++,目前还是用Vim比较好,轻量。各种丰富的插件支持。

  开发环境:

  系统:ubuntu 14.04LTS。

  工具:Vim7.4

  编译,链接,运行:g++

  现在贴上Vim的配置:(这是这篇随笔的主要内容,也是为了个人保存配置。层次低,希望看官不要笑话。)

  

set nocompatible              " be iMproved
filetype off                  " required!

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required! 
Bundle gmarik/vundle

" My bundles here:
"
" original repos on GitHub
Plugin SirVer/ultisnips
Plugin honza/vim-snippets

Bundle tpope/vim-fugitive
Bundle Lokaltog/vim-easymotion
Bundle rstacruz/sparkup, {rtp: vim/}
Bundle tpope/vim-rails.git
" vim-scripts repos
Bundle L9
Bundle FuzzyFinder
" non-GitHub repos
Bundle git://git.wincent.com/command-t.git
Bundle https://github.com/scrooloose/nerdtree
Bundle https://github.com/majutsushi/tagbar
Bundle https://github.com/tpope/vim-commentary
Bundle https://github.com/scrooloose/syntastic
Bundle https://github.com/altercation/vim-colors-solarized
Bundle https://github.com/kien/ctrlp.vim
Bundle https://github.com/Raimondi/delimitMate
Bundle https://github.com/tpope/vim-surround
Bundle https://github.com/vim-scripts/bufexplorer.zip
Bundle https://github.com/Valloric/YouCompleteMe 
Bundle https://github.com/scrooloose/nerdcommenter


Plugin exvim/ex-tagbar 

" Git repos on your local machine (i.e. when working on your own plugin)
" Bundle ‘file:///Users/gmarik/path/to/plugin‘
" ...

filetype plugin indent on     " required!
"
" Brief help
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install (update) bundles
" :BundleSearch(!) foo - search (or refresh cache first) for foo
" :BundleClean(!)      - confirm (or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle commands are not allowed.



""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" GVIM自身的设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
language messages zh_CN.utf-8   " 解决consle输出乱码
syntax enable
set background=dark
colorscheme solarized
"colorscheme blue              " 灰褐色主题
"colorscheme delek
"colorscheme evening
"colorscheme murphy
"colorscheme slate
"colorscheme darkblue
"colorscheme desert
"colorscheme koehler
"colorscheme pablo
"colorscheme anotherdark
"colorscheme elflord
"colorscheme asmanian2
"colorscheme Dark
"colorscheme peachpuff
"colorscheme torte
"colorscheme bensday
"colorscheme zellner
"colorscheme morning
"colorscheme ron
"colorscheme corn
"colorscheme shine

set guioptions-=T        " 隐躲工具栏
"set guifont=DejaVu\ Sans\ mono\ 11        " 字体 && 字号
if has("gui_gtk2")
    set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
    set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
endif 


set noerrorbells        " 封闭错误提示音
set nobackup            " 不要备份文件
set linespace=0            " 字符间插进的像素行数目
set shortmess=atI        " 启动的时候不显示那个援助索马里儿童的提示
set novisualbell        " 不要闪烁 
set scrolloff=3            " 光标移动到buffer的顶部和底部时保持3行间隔
set mouse=a             " 可以在buffer的任何地方 ->
set selection=exclusive         " 使用鼠标(类似office中 ->
set selectmode=mouse,key        " 在工作区双击鼠标定位)
set cursorline                  " 突出显示当前行
set nu   " 显示行号
set whichwrap+=<,>,h,l        " 答应backspace和光标键跨越行边界 
set completeopt=longest,menu    "按Ctrl+N进行代码补全

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" 文本格式和排版 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
set list                        " 显示Tab符,->
set listchars=tab:\|\ ,         " 使用一高亮竖线代替
set tabstop=4            " 制表符为4
set autoindent            " 自动对齐(继续前一行的缩进方式)
set smartindent            " 智能自动缩进(以c程序的方式)
set softtabstop=4 
set shiftwidth=4        " 换行时行间交错使用4个空格
set noexpandtab            " 不要用空格代替制表符
set cindent            " 使用C样式的缩进
set smarttab            " 在行和段开始处使用制表符
set nowrap            " 不要换行显示一行 

 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 状态行(命令行)的显示
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set cmdheight=2             " 命令行(在状态行下)的高度,默以为1,这里是2
set ruler                 " 右下角显示光标位置的状态行
set laststatus=2         " 开启状态栏信息 
set wildmenu             " 增强模式中的命令行自动完成操纵 


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文件相关
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set fenc=utf-8
set encoding=utf-8        " 设置vim的工作编码为utf-8,假如源文件不是此编码,vim会进行转换后显示
set fileencoding=utf-8        " 让vim新建文件和保存文件使用utf-8编码
set fileencodings=utf-8,gbk,cp936,latin-1
filetype on                     " 侦测文件类型
filetype indent on                 " 针对不同的文件类型采用不同的缩进格式
filetype plugin on                 " 针对不同的文件类型加载对应的插件

syntax on                     " 语法高亮
filetype plugin indent on    " 启用自动补全


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 查找
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set hlsearch                 " 开启高亮显示结果
set nowrapscan               " 搜索到文件两端时不重新搜索
set incsearch                " 开启实时搜索功能

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 实用功能
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 设置NerdTree
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>


"clang-complete
let g:clang_complete_copen=1
let g:clang_periodic_quickfix=1
let g:clang_snippets=1
let g:clang_close_preview=1
let g:clang_use_library=1
let g:clang_user_options=-stdlib=libstdc++ -std=c++11 -I/usr/include
let g:neocomplcache_enable_at_startup = 1

""""""""""""YCM""""""""""""""""""""  
let g:ycm_global_ycm_extra_conf = ~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
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_use_ultisnips_completer=0
let g:ycm_key_invoke_completion = <S-Space>

"设置跳转的快捷键,可以跳转到definition和declaration
nnoremap <leader>gc :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
"nmap <F4> :YcmDiags<CR>


"""""""""""""NERDCommenter""""""""""""""""""
let mapleader = ","
" NERD_commenter.vim
" http://www.vim.org/scripts/script.php?script_id=1218
" Toggle单行注释/“性感”注释/注释到行尾/取消注释
map <leader>cc ,c<space>
map <leader>cs ,cs
map <leader>c$ ,c$
map <leader>cu ,cu
" UltiSnips 的 tab 键与 YCM 冲突,重新设定
let g:UltiSnipsExpandTrigger="<leader><tab>"
let g:UltiSnipsJumpForwardTrigger="<leader><tab>"
let g:UltiSnipsJumpBackwardTrigger="<leader><s-tab>"

""""""""""""""""""tagbar""""""""""""""""""""""""""""
nmap <F4> :TagbarToggle<CR>

"""""""""""""""""""编译和运行""""""""""""""""""""""""""""""""
" <F5> 编译和运行C
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc

"< F6> 编译和运行C++
map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc

"""""""""""""""""""代码块""""""""""""""""""""""""""""""""
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsSnippetsDir = ~/.vim/bundle/vim-snippets/UltiSnips
let g:UltiSnipsSnippetDirectories = [UltiSnips]
let g:UltiSnipsExpandTrigger="<c-j>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
"let g:UltiSnipsEditSplit="vertical"

   开发中,代码补全和快速插入代码块,这两个是必用的。谁也不想把时间花费在敲一些垃圾代码上。配置中使用YCM来补全代码,

UltiSnips来快速插入代码块。以后插件会慢慢加入。
  人人都说Vim是神器。可我用起来非常艰难。经常装了个插件各种问题,处理插件的问题,耗费大量的时间。我经常在怀疑是否自己选对了编辑器。我喜欢Vim的快捷键来编辑代码。可由于年代久远,各种插件多而不全。我觉得Vim只适合用于学习C++的开发,让它来建立工程什么的。。。。还是不要想了。老老实实用Eclipse和CB了。
  插入一段代码,来开始我的C++之路:

技术分享

开发路上,你我同行。。。

在ubuntu下使用Vim学习C++

原文:http://www.cnblogs.com/xclidongbo/p/4396639.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!