程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 在ubuntu下使用Vim學習C++,ubuntuvim學習c

在ubuntu下使用Vim學習C++,ubuntuvim學習c

編輯:C++入門知識

在ubuntu下使用Vim學習C++,ubuntuvim學習c


  之前就買過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++之路:

開發路上,你我同行。。。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved