Vim 打造 Linux C++ 編程環境-vimrc 基本設定

打算採用 Vim 作為 Linux C++ 程式開發環境的原因有兩個:

  • CodeLite IDE 工具的專案目錄實在編得蠻糟糕的。
  • Vim 的佔用資源小 (在我的 Chromebook/Ubuntu 就可以命列列模式執行並編譯 C++),可攜性高 (任何一種 Linux 系統下載馬上可以執行),擴展彈性高 (透過 plugin)。

而 Vim 的主要缺點就是 學習曲線高!

不過它比較能如倒吃甘蔗般,當習慣那些鍵盤操作後 (可能要好幾年),撰寫如 C++ 程式可塑性高太多了。

Vim 所有設定資訊均在於 .vimrc 檔案 (位於如 Home目錄下)。該設定檔的設定主要有兩個重點:

  • 編輯器的基本屬性設定。 (如語法高亮、顯示行號、狀態顯示...等。)
  • 外部擴展功能 (透過 3rd party plugin),如 nerdtree/taglist 插件的目錄結構/程式源碼的展現。

關於安裝多種 Plugin 的管理,一般會透過如 Vundle 這類插件管理工具來統籌管理所有插件。

個人目前的初始 .vimrc 設定內容,全係參考對岸所撰寫的文章:
 o Vim改變生活,插件改變Vim (1) — 認識Vim
 o Vim改變生活,插件改變Vim (2) — 認識Vim

執行 Vim 後所呈現的效果如下圖:
.vimrc plugn & 環境建置 版本一


相當滿意!

當然距離可以順暢撰寫 Linux C++ IDE 環境還有許多設定要作,這倒是慢慢來,逐漸熟悉主要對編程插件的操作使用就更能豐富 Vim 編程的功能。

底下先列出個人的 .vimrc 設定內容,同時也把 .vimrc 同步置於 Github 上,方便修改並部署在多部電腦上。

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 'gmarik/Vundle.vim'
 
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Avoid a name conflict with L9
" Plugin 'user/L9', {'name': 'newL9'}
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/nerdcommenter'
Plugin 'vim-scripts/taglist.vim'
Bundle 'altercation/vim-colors-solarized'
" Plugin 'bling/vim-airline'
Plugin 'vim-scripts/winmanager'
Plugin 'vim-scripts/a.vim'
Plugin 'kien/ctrlp.vim'
Plugin 'vim-scripts/OmniCppComplete'
Plugin 'moll/vim-bbye'
 
" 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
 
" 文件類型自動識別, Vundle要求必須為off
" filetype on
filetype plugin on
filetype plugin indent on
 
"--------------
"" Color Scheme
"--------------
syntax enable
set background=dark
let g:solarized_termcolors=256
colorscheme solarized
 
 
"----------------
"" 編輯器基本設定
"----------------
 
" 默認顯示行號
set nu
 
" 設置(軟)製表符寬度為4:
set tabstop=4
set softtabstop=4
 
" 設置自動縮進:即每行的縮進值與上一行相等;使用 noautoindent 取消設置:
set autoindent
 
" 設置(自動)縮進的空格數為4
set shiftwidth=4
 
" 設置 使用 C/C++ 語言的自動縮進方式:
set cindent
 
" 智能縮進
set smartindent
 
"在狀態欄顯示正在輸入的命令
set showcmd
 
"為方便複製,用<F2>開啟/關閉行號顯示:
nnoremap <F2> :set nonumber!<CR>
 
"搜索的時候即時顯示結果
set incsearch
 
" 高亮搜索結果
set hlsearch
 
" 禁止循環查找
set nowrapscan
 
"  設置匹配模式,顯示匹配的括號
set showmatch
 
" 智能補全
set completeopt=longest,menu
 
" 設置歷史記錄為100條
set history=100
 
" 標尺,用於顯示光標位置的行號和列號,逗號分隔。每個窗口都有自己的標尺。如果窗口有狀態行,標尺在那裡顯示。否則,它顯示在屏幕的最後一行上。
set ruler
 
" 括號引號補全
:inoremap ( ()<ESC>i
:inoremap { {<CR>}<ESC>O
:inoremap [ []<ESC>i
 
" 摺疊設置
set foldmethod=syntax " 用語法高亮來定義摺疊
set foldlevel=100     " 啟動vim時不要自動摺疊代碼
 
" WinManager设置
" " NERD_Tree集成到WinManager
let g:NERDTree_title="[NERDTree]" 
function! NERDTree_Start()
    exec 'NERDTree'
endfunction
 
function! NERDTree_IsValid()
    return 1
endfunction
 
" 键盘映射,同时加入防止因winmanager和nerdtree冲突而导致空白页的语句
nmap wm :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif <CR><CR>
" 设置winmanager的宽度,默认为25
let g:winManagerWidth=30 
" 窗口布局
let g:winManagerWindowLayout='NERDTree|TagList'
" 如果所有编辑文件都关闭了,退出vim
let g:persistentBehaviour=0

文章導覽

   

共有 2 則迴響

  1. 如果博主能够把插件的介绍在写写就好了。 毕竟好多插件不知道是做什么的~~ 有点不想安装的说。。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *