(圖片顯示越界的話,請刷新)html
裝好Ubuntu15.04系統以後呢,玩了玩 Ubuntu,感受仍是很不錯的。比windows快,一開機就能夠打開你想要的程序,可是在windows下你要等他啓動一些必須項才能夠正常啓用。感受 Linux 和 MacOs 有得一比。只是在linux下軟件會少不少。java
以前寫過一篇博文是關於Vim的簡單使用,也是從零開始去接觸和使用Vim,瞭解了那篇博文裏的命令後,就可使用vim來高效地完成你的編輯工做了,固然,若是須要到格式的控制,使用vim仍是不夠的,須要到 markdown 了,若是Vim能加上Markdown的話,那編輯起來堪稱完美了吧,哈哈。python
Vim 不只是「編輯器之神」,並且Vim的插件豐富,徹底能夠打形成開發環境IDE,接下來就記錄一下個人vim,整個過程下來,感受就像是本身搭建了一個IDE,不錯哦。linux
本博文能夠完成的效果包括:(左側目錄,分割窗口,代碼補全,C/C++/Java/Python 的編譯運行/語法補全/Tagbar[右側大鋼導航])c++
Vim做爲IDE,能夠達到的效果,先來解解饞: git
安裝的話,在 Linux 下是很簡單的,打開終端,輸入幾條命令就能夠完成了。github
sudo apt-get install vimvim
sudo apt-get install gvimwindows
sudo apt-get install git (這個很重要,到後面下載插件的時候要用 git 來下載)markdown
這是第一條命令,這裏說我已經安裝好了,沒必要安裝。裝好之後在終端直接輸入 vim 或 git 或 gvim 就能夠知道有沒有裝好了。
還可一使用 aptitude 來安裝,在使用 aptitude 來安裝以前要先安裝 aptitude
sudo aptitude install vim sudo aptitude install gvim sudo aptitude install git
而後,在用戶的主目錄中創建 .vim 目錄,在 .vim 目錄中創建 bundle 目錄,之後Vundle自動下載的插件都保存在這裏。
vundle能夠自動下載和安裝插件,只須要在「My Bundles Here」註釋後面使用 Bundle 命令把所須要的插件列出來,每一個插件一行,而後運行 :BundleInstall 命令便可。Vundle支持 github.com 和Vim的官網 vim.org 。
mkdir .vim/bundle
而後,進入 Bundle 目錄,使用 git clone 命令下載vundle。
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
執行下載完成的話就能夠在 bundle 下看到 vundle 目錄了。
能夠在終端輸入 vim 而後輸入 :echo $VIM 看到本身的 vim 目錄,而後在該目錄下看看有沒有 .vimrc 文件,沒有的話就本身建立。
個人 .vimrc 文件是在 /usr/share/vim 目錄下(不知道你們的.vimrc是否是也是在這個目錄下),沒有的話就本身用命令建立:touch .vimrc
先來基本的配置,不要插件,映射那些比較高級的東西先吧。能夠完成:代碼配色,tab縮進,自動保存,特別顯示當前編輯行,括號匹配,查找搜索,與系統公用剪貼板,代碼摺疊等。以下:
注:更改.vimrc文件須要 sudo vim vimrc使用vim來修改,也可使用 sudo gedit vimrc
個人基本配置:
"-----------------------------------基本------------------------------------ "處理未保存或只讀文件時,彈出確認 set confirm "自動保存 set autowrite "歷史記錄數 set history=1000 "編碼設置 set fenc=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2313,cp936 "語法高亮 if has("syntax") syntax on endif "設置配色方案 colorscheme ron "設置行號 set nu "設置縮進 set tabstop=4 set sts=4 set smartindent set expandtab set softtabstop=4 set shiftwidth=4 "設置自動格式化,解決複製代碼過來的時候出現格式混亂
"格式化全文: gg=G
"自動縮進當前行: ==
set formatoptions=tcrqn
"設置括號配對狀況 set showmatch set matchtime=2 "設置沒有自動備份 set noswapfile set nobackup "設置縱向虛線對齊 "底部顯示光標的位置的狀態行 set ruler "設置查找 "搜索模式忽略大小寫 set ignorecase "若是搜索模式包含大小寫則不適用ignorecase set smartcase "禁止搜索到文件兩端時從新搜索 set nowrapscan "高亮顯示搜索到的文本 set hlsearch "逐字符高亮 set incsearch "使用鼠標 "按住 shift 才由鼠標右鍵處理操做 set mouse=a "和系統共用剪貼板 set clipboard+=unnamed
「在vim中把代碼複製到系統剪貼板:
」選擇須要複製的代碼後:
定位到某一行:4H 定位到第四行
複製某幾行
4H
shift +v
6H
"突出顯示當前編輯行 set cursorline "開啓摺疊,並設置空格來開關摺疊 set foldenable set foldmethod=syntax set foldcolumn=0 setlocal foldlevel=1 set foldclose=all nnoremap <space> @=((foldclosed(line('.'))<0)?'zc':'zo')<CR> "搜索和undo時不展開設置好的摺疊 set foldopen-=search set foldopen-=undo
完成到這裏,就能夠去敲代碼了,可是還不夠啊,做爲IDE還不夠啊,怎麼沒有樹狀目錄?沒有一鍵編譯,運行?沒有語法補全?
分割窗口很簡單,這樣用vim打開文件就能夠: vim -o file_path_name1 file_path_name2 (-o時橫向切割,-O是縱向切割)
要有左側目錄的話,這裏就須要用到插件了。以前講到,用Vundle能夠很方便地下載和管理插件,如今就要用到了。
先來配置一下 .vimrc ,在 .vimrc 文件後添加:
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
在vimrc文件中添加如下插件配置:
Bundle 'The-NERD-tree'
Bundle 'The-NERD-Commenter'
按下esc,輸入:wq 保存退出
再次進入vim後使用:BundleInstall 進行安裝
如今弄好了,並且也已經把打開和關閉目錄映射成 CTRL+N 。
map <key_you want> :NERDTreeTogggle<CR>
要知道 ctrl+w+l是切換到右邊窗口,ctrl+w+h是切換到左邊窗口,目錄欄的控制是:Enter進入目錄,光標的上下移動和vim同樣
和編輯文件同樣,經過h j k l移動光標定位 o 打開關閉文件或者目錄,若是是文件的話,光標出如今打開的文件中 go 效果同上,不過光標保持在文件目錄裏,相似預覽文件內容的功能 i和s 能夠水平分割或縱向分割窗口打開文件,前面加g相似go的功能 t 在標籤頁中打開 T 在後臺標籤頁中打開 p 到上層目錄 P 到根目錄 K 到同目錄第一個節點 J 到同目錄最後一個節點 m 顯示文件系統菜單(添加、刪除、移動操做) ? 幫助 q 關閉
說到這個,確定要說到YouCompleteMe,能夠補全C/C++/Java/Python然而,我卻並不能安裝成功,唉。先說怎麼安裝,再說我碰到的問題。
安裝:像安裝 目錄的那個插件同樣,直接在 .vimrc 下加上:
Bundle 'Valloric/YouCompleteMe'
而後保存退出,再進入 vim 輸入:BundleInstall來安裝。安裝的話確定會遇到這個提示:
到 .vim/bundle/YouCompleteMe 下打開終端
輸入:./install.sh --clang-completer
參數是爲了支持c/c++ 的補全。
而後就去編譯YouCompleteMe:而後我就出現錯誤了:
Some folders in /home/sky-tm/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party are empty; you probably forgot to run: git submodule update --init --recursive
解決:
按照提示輸入:git submodule update --init --recursive
結束後輸入: ./install.sh --clang-completer
然而,個人卻並無起到做用。
推薦幾篇安裝YouCompleteMe 的博文吧!
雖然沒有裝YouCompleteMe,可是我發現,在編寫代碼的時候,有些關鍵字仍是能夠用 CTRL+N來進行補全的,還會自動添加你敲過的關鍵字進入備選項。期待效果:
沒有YouCompleteMe也不要緊,我裝了 Python 的自動補全插件
來自:http://www.linuxidc.com/Linux/2014-04/99669.htm
1.下載:git clone https://github.com/vim-scripts/Pydiction ~/下載目錄
包括三個文件
python_pydiction.vim #vim插件
complete-dict #python關鍵字和模塊列表,
pydiction.py #python腳本,能夠添加更多的模塊
2.配置
#1.查看家目錄下是否有.vim目錄,若沒有則建立。
mkdir -p ~/.vim/after/ftplugin/pydiction
#2.把上面下載的三個文件放到指定的位置
mv python_pydiction.vim ~/.vim/after/ftplugin/
mv complete-dict pydiction.py ~/.vim/after/ftplugin/pydiction/
#3.修改 ~/.vimrc文件,若沒有則建立,在該文件中添加下面兩行。
filetype plugin on
let g:pydiction_location='~/.vim/after/ftplugin/pydiction/complete-dict'
每次敲好想要調試一下都要退vim確定是不怎麼友好的,因此就去查了怎麼在寫完後能夠 一鍵編譯運行 。
很少說了,直接貼上個人 .vimrc 配置吧:
個人編譯與運行(C/C++/JAVA/PYTHON)
我試過把全部的編譯與運行都映射到F5,可是在實際使用的時候卻沒法奏效,因而把不一樣語言的快捷鍵分開映射了,我想,應該是有方法自動偵測文件類型而後選擇編譯的吧,這樣就不用映射那麼多鍵了。
"--------------------------------編譯與運行--------------------------------- "-------------Java--------------- func! CompileJava() exec "!javac %" endfunc func! CompileCode() exec "w" if $filetype == "java" exec "call CompileJava()" endif endfunc func! RunResult() exec "w" if &filetype =="java" exec "!java %<" endif endfunc map <F4> :call CompileCode()<CR> map <F5> :call RunResult()<CR> "-------------Python------------- map <F6> :w<cr>:!python %<cr> "--------------C++--------------- map <F3> :call CompileRunGpp()<CR> func! CompileRunGpp() exec "w" exec "!g++ % -o %<" exec "! ./%<" endfunc "---------------C---------------- map <F2> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" exec "!gcc % -o %<" exec "! ./%<" endfunc
特別說明一下,java的運行須要先按下 F5而後F6才行,第一次編譯嘛!
最後再貼個人 .vimrc(未完成 YouCompleteMe)
"-----------------------------------基本------------------------------------ "處理未保存或只讀文件時,彈出確認 set confirm "自動保存 set autowrite "歷史記錄數 set history=1000 "編碼設置 set fenc=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2313,cp936 "語法高亮 if has("syntax") syntax on endif "設置配色方案 colorscheme ron "設置行號 set nu "設置縮進 set tabstop=4 set sts=4 set smartindent set expandtab set softtabstop=4 set shiftwidth=4 "設置自動格式化 解決複製代碼過來的時候出現格式混亂 "shift +v 開頭 "shift +g 結尾 "== "格式化全文: gg=G "自動縮進當前行: == "set formatoptions=tcrqn "設置括號配對狀況 set showmatch set matchtime=2 "設置沒有自動備份 set noswapfile set nobackup "設置縱向虛線對齊 "底部顯示光標的位置的狀態行 set ruler "設置查找 "搜索模式忽略大小寫 set ignorecase "若是搜索模式包含大小寫則不適用ignorecase set smartcase "禁止搜索到文件兩端時從新搜索 set nowrapscan "高亮顯示搜索到的文本 set hlsearch "逐字符高亮 set incsearch "使用鼠標 "按住 shift 才由鼠標右鍵處理操做 set mouse=a "和系統共用剪貼板 set clipboard+=unnamed "突出顯示當前行 set cursorline "開啓摺疊,並設置空格來開關摺疊 set foldenable set foldmethod=syntax set foldcolumn=0 setlocal foldlevel=1 set foldclose=all nnoremap <space> @=((foldclosed(line('.'))<0)?'zc':'zo')<CR> "搜索和undo時不展開設置好的摺疊 set foldopen-=search set foldopen-=undo "----------------------------------插件------------------------------------- "偵測文件類型 filetype on "載入插件 filetype plugin on "爲特定文件類型載入相關縮進文件 filetype indent on "------------Pyghon---------------- let g:pydiction_location='~/.vim/after/ftplugin/pydiction/complete-dict' "配置vundle set nocompatible "filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() "安裝插件 "Bundle 'Valloric/YouCompleteMe' Bundle 'The-NERD-tree' Bundle 'The-NERD-Commenter' map <C-n> :NERDTreeToggle<CR> "命令 "BundleList "BundleInstall "BundleClean "--------------------------------編譯與運行--------------------------------- "-------------Java--------------- func! CompileJava() exec "!javac %" endfunc func! CompileCode() exec "w" if &filetype == "java" exec "call CompileJava()" endif endfunc func! RunResult() exec "w" if &filetype =="java" exec "!java %<" endif endfunc map <F4> :call CompileCode()<CR> map <F5> :call RunResult()<CR> "-------------Python------------- map <F7> :w<cr>:!python %<cr> "--------------C++--------------- map <F6> :call CompileRunGpp()<CR> func! CompileRunGpp() exec "w" exec "!g++ % -o %<" exec "! ./%<" endfunc "---------------C---------------- map <F3> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" exec "!gcc % -o %<" exec "! ./%<" endfunc "-------------------------------------------------------------------------- "set ignorecase " Do case insensitive matching "set smartcase " Do smart case matching "set incsearch " Incremental search "set autowrite " Automatically save before commands like :next and :make "set hidden " Hide buffers when they are abandoned "set mouse=a " Enable mouse usage (all modes) " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif
能夠像IDE同樣顯示類的結構 變量等
既然是作IDE,那要是能把類視圖,右側能夠顯示tagbar就更好啦,這樣就能夠更清晰地瞭解程序的架構,在插件彷彿的vim裏,的確存在這樣一個插件,能夠實現咱們想要的功能,接下來就來安裝這個插件:
先安裝依賴庫:sudo apt-get install ctags
仍然使用vundle來安裝插件:
參照上面的方法,在.vimrc里加上 Bundle 'majutsushi/tagbar'
保存退出後再次進入vim,輸入:BundleInstall來安裝,裝完後輸入:BundleList就能夠看到已經安裝的插件了。
順便映射一個快捷鍵吧,在剛纔的代碼下添加:
map <F9> :TagbarToggle<CR>
" 啓動自動focus
let g:tagbar_autofocus = 1
折騰了幾天,雖然最終也基本達到了想要的效果,可是卻浪費了很多時間,建議仍是用現成的IDE吧,功能齊全,安裝方便簡單,至少不費心費力啊!!!
我如今的vim圖:
期待各位的交流和指導!
個人vimrc:http://files.cnblogs.com/files/tianjintou/vimrc.zip
博文參考:
http://vim.wikia.com/wiki/Use_Vim_like_an_IDE
http://www.wklken.me/archives.html
http://www.open-open.com/lib/view/open1429884437588.html
http://blog.chinaunix.net/uid-24567872-id-3425929.html
https://github.com/wklken/k-vim
http://www.wklken.me/posts/2013/06/11/linux-my-vim.html#_6
易水博客:
http://easwy.com/blog/archives/advanced-vim-skills-catalog/
Vimer的程序世界
vimrc配置文件