默認已經安裝了VIM-tinycss
linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrwxrwx 1 root root 17 12月 9 21:12 /etc/alternatives/vi -> /usr/bin/vim.tiny lrwxrwxrwx 1 root root 20 12月 9 21:13 /usr/bin/vi -> /etc/alternatives/vi -rw-r--r-- 1 root root 59 12月 23 2015 /usr/lib/x86_64-linux-gnu/espeak-data/voices/asia/vi -rw-r--r-- 1 root root 1415 11月 11 2015 /usr/share/bash-completion/completions/ldapvi -rw-r--r-- 1 root root 475 4月 21 2016 /var/lib/dpkg/alternatives/vi
下面咱們以Ubuntu14.04(Unity)安裝完整版VIM(VIM-basic)爲例:linux
在終端輸入如下命令,則會自動安裝:nginx
sudo apt-get install vim
自動安裝完以後,可使用如下命令進行查看:git
已經添加到系統github
update-alternatives --display vi
查看版本sql
vim --version
注:只對各個用戶在本身的當前目錄下的.vimrc修改的話,修改內容只對本用戶有效,要想所有有效,能夠修改/etc/vim/vimrc.django
在終端下使用vim進行編輯時,默認狀況下,編輯的界面上是沒有顯示行號、語法高亮度顯示、智能縮進等功能的。爲了更好的在vim下進行工做,須要手動設置一個配置文件:.vimrc。swift
啓動vim時,當前用戶根目錄下的.vimrc文件會被自動讀取,該文件能夠包含一些設置甚至腳本,因此,通常狀況下把.vimrc文件建立在當前用戶的根目錄下比較方便,即建立的命令爲vim
$vi ~/.vimrc
設置完後 :x或者:x或者wq 進行保存退出便可。ruby
下面給出一個例子,其中列出了常常用到的設置,詳細的設置信息請參照參考資料
"開啓語法高亮 syntax on "依文件類型設置自動縮進 filetype indent plugin on "顯示當前的行號列號: set ruler "在狀態欄顯示正在輸入的命令 set showcmd "關閉/打開配對括號高亮 "NoMatchParen DoMatchParen 行號的顯示與隱藏[3]: "顯示行號: set number "爲方便複製,用<F2>開啓/關閉行號顯示: nnoremap <F2> :set nonumber!<CR>:set foldcolumn=0<CR>
啓用Modeline(即容許被編輯的文件以註釋的形式設置Vim選項,詳見Vim Wiki: Modeline magic)[4]:
set modeline
若是終端使用的是深色背景:
"爲深色背景調整配色
set background=dark
下文的配置不少都依賴於第三方開發的 Vim 插件。爲了方便地安裝和維護這些插件,推薦先安裝一種插件管理工具,目前較爲流行的是 Vundle 和 pathogen。兩者功能相似,但 Vundle 的配置更靈活, pathogen 則相對簡潔。兩者都能很好地與Git結合,安裝插件十分方便。
若是你使用 Git 管理你的配置文件,那麼還能夠將 Pathogen 或 Vundle 與 Git 的 Submodule 功能管理插件結合[5],使得在多臺電腦間同步插件及在本地更新插件變得十分便捷。
# 在存放配置文件的主文件夾下,添加一個 submodule git submodule add https://github.com/gmarik/vundle.git .vim/bundle/vundle # 用相似的辦法添加多個插件後,之後升級插件只需: git submodule update # 若是其它電腦 checkout 出配置文件後,要先: git submodule init
插件管理工具無需經過系統的包管理系統安裝,只要將須要的文件放在 ~/.vim/目錄中便可。這樣,一套配置文件也能夠方便地用在多個不一樣的系統環境中。
Vim 7已經內置了代碼補全功能[6],補全操做可分爲兩種:
即簡單地補全到文檔中已有的詞,快捷鍵爲 Ctrl-N 或 Ctrl-P。
Vim 7中引入 Omni Complete,可根據語義補全,快捷鍵爲 Ctrl-X Ctrl-O。
Vim的補全菜單操做方式與通常IDE的方式不一樣,可加入以下設置[7]:
"讓Vim的補全菜單行爲與通常IDE一致(參考VimTip1228) set completeopt+=longest "離開插入模式後自動關閉預覽窗口 autocmd InsertLeave * if pumvisible() == 0|pclose|endif "回車即選中當前項 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "上下左右鍵的行爲 inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>" inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>" inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>" inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
如需自動補全,可安裝AutoComplPop插件,安裝後如需在補全是顯示文檔(預覽),可加入設置:
let g:acp_completeoptPreview = 1
常常要將一段代碼註釋掉或取消註釋,而尤爲對於某些只支持單行註釋的語言來講,逐行加註釋很麻煩,這時快速註釋(或取消註釋)代碼的插件就顯得頗有用了。
常見的註釋管理插件爲The NERD Commenter,默認支持多種語言,使用方法也很簡單:只需在可視(V)模式中選擇一段代碼,按下\cc加逐行註釋,\cu取消註釋,\cm添加塊註釋。
若有其它需求,也可考慮comments、EnhCommentify等插件。
使用自動縮進可能須要設置,vim中對自動縮進的詳細設置辦法見Vim代碼縮進設置。
在不一樣的模式中調整縮進的方法不一樣:
Ctrl-T增長縮進,Ctrl-D減少縮進。
>> 右縮進, << 左縮進,注意n<< 或 n>>是縮進多行,如4>>
< 、 > 用於左右縮進, n< 、 n> 可作多節縮進,如 2> 。
另外,= 可對選中的部分進行自動縮進;]p能夠實現p的粘貼功能,並自動縮進。
代碼跳轉相似於IDE中的Ctrl+點擊功能。與代碼補全相似,代碼瀏覽工具亦可分爲基於文本分析的和基於代碼理解的兩類。
在命令模式下可直接使用下述指令:[8]
gd到局部變量的定義,gD到全局變量的定義
*, # 可對光標處的詞向前/向後作全詞搜索,g*, g# 作相對應的非全詞匹配搜索
[[, ]] 可跳到當前代碼塊起始或結束的大括號處。
% 可在配對的括號、塊首尾以前跳轉。
Ctrl-O 在歷史記錄中後臺,Ctrl-I 則爲前進。
該功能依賴於ctags工具。[9]安裝好ctags後,在存放代碼的文件夾運行
ctags -R .
便可生成一個描述代碼結構的tags文件。
提示: ctags的功能很強大,更詳細的配置請參考其文檔。
建議在~/.vimrc中添加以下配置以使Vim在父目錄中尋找tags文件[10]:
set tags=tags;/
設置好後,可在Vim中使用以下功能:Ctrl-]轉至最佳匹配的相應Tag,Ctrl-T返回上一個匹配。若是有多個匹配,g Ctrl-]可顯示全部備選的tags。若有須要,可互換Ctrl-]和g Ctrl-] [11]:
"在普通和可視模式中,將<c-]>與g<c-]>互換 nnoremap <c-]> g<c-]> vnoremap <c-]> g<c-]> nnoremap g<c-]> <c-]> vnoremap g<c-]> <c-]>
使用:make可調用make命令編譯程序,配合Vim內置的QuickFix功能,能夠像IDE同樣打開一個窗口展現編譯錯誤和警告,經過它還能夠方便地跳轉到各編譯錯誤的產生位置。
經常使用的命令有:cw[indow](若有錯誤打開quickfix窗口)、:cn(跳到下一個錯誤)、:cp(跳到前一個錯誤)等,具體可:help quickfix。
若是想在有錯時自動打開quickfix窗口[12]:
" 編譯後,若有錯誤則打開quickfix窗口。(光標仍停留在源碼窗口) " " 注意:須要開啓netsting autocmd autocmd QuickFixCmdPost [^l]* nested cwindow autocmd QuickFixCmdPost l* nested lwindow
默認狀況下,:mak[e]會跳轉到第一個錯誤,若是不想啓用這個功能,請使用:make!。
代碼較長時可啓用代碼摺疊功能,如按語法高亮元素摺疊:
set foldmethod=syntax "默認狀況下不折疊 set foldlevel=99
隨後便可使用z系列命令管理代碼摺疊。如za會翻轉當前位置的摺疊狀態,zA會遞歸翻轉當前層全部代碼的摺疊狀態等。固然也能夠把功能鍵映射到za:
map <F3> za
K 鍵可用於查看當前函數的文檔。
近來仍被積極維護的代碼託管在 GitHub 上的插件[13]:
Project
方便管理工程中的文件
snipmate.vim
在編輯中實現模板展開
a.vim
在.cpp/.h等文件對中跳轉
matchit.zip
加強%的功能
winmanager
將文件管理窗口和taglist堆疊起來。
Vim 8.0 釋出 http://www.linuxidc.com/Linux/2016-09/135178.htm
Linux下編譯安裝Vim8.0 http://www.linuxidc.com/Linux/2017-01/139210.htm
Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm
Vim編輯器配置 http://www.linuxidc.com/Linux/2016-09/135460.htm
Vim編輯器使用 http://www.linuxidc.com/Linux/2016-09/135043.htm
快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm
強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm
Linux文本編輯器Vim的通常用法 http://www.linuxidc.com/Linux/2016-11/137263.htm
把Vim打形成優秀的C++ IDE http://www.linuxidc.com/Linux/2016-06/132262.htm
Ubuntu 14.04升級Vim7.4到8.0 http://www.linuxidc.com/Linux/2016-11/136816.htm
Vim安裝youcompleteme自動補全插件 http://www.linuxidc.com/Linux/2016-11/137665.htm
Linux Vim編輯器使用簡單講解 http://www.linuxidc.com/Linux/2016-12/138930.htm