此博客持續更新,有需要的可以點個關注!(2019/12/17筆者注)
0. 目前我的Vim
- 左窗口:基於nerd tree的目錄樹顯示窗口
- 主窗口:代碼窗口
- 右窗口:基於tarbar的文件結構顯示窗口
- 下窗口:基於ctrlp的全局搜索窗口
- 狀態欄:使用vim-airline美化
- 背 景: molokai配色主題
進入正文:
目錄
1. Vim 安裝
2. Vim基本配置
3. Vim使用
4. Vim 安裝插件
4.1 Vim支持插件擴展
4.2 Vundle 插件管理器真香
5. 嘮叨幾句
1. Vim 安裝
Vim的安裝非常方便,在Ubuntu系統中,Vim可以在軟件資源包中找到,這個軟件資源包就像手機中的應用中心,安裝非常方便。如下通過 apt-get 的方式安裝Vim。
sudo apt-get update #可選命令,更新軟件資源包
sudo apt-get install vim-gtk #安裝Vim
這裏可能很多Windows用戶就奇怪了,我也沒選安裝目錄,怎麼知道安裝在哪裏,在Ubuntu中,軟件資源包中的安裝路徑是默認的(或者說他壓根就沒什麼安裝目錄,也就是可執行文件而已),我們無需管理。通過下面命令我們可以查詢是否安裝成功:
vim #查看vim版本
接下來你就可以使用vim啦,成爲一個小 vimer。
2. Vim基本配置
vim的配置文件主要有兩個:
1. /etc/vim/vimrc 修改這個文件需要 root 權限,修改後變化對於整個系統有效(也就是影響其他用戶,對於個人電腦來說只有單用戶,所以沒差別),安裝後就有基本的配置內容(不推薦修改這個文件);
2. /home/xxx(你的用戶名)/.vimrc 這個是家目錄下的 vim 配置文件,修改只對當前用戶有效,通常剛安裝爲空文件或者沒有這個文件,可以自己創建,自動關聯(推薦修改這個文件)。
下面是一些基本配置,只要在配置文件添加對應的 shell 腳本,即可永久配置。(也可以在 vim 命令行模式臨時配置)
- syntax on "設置語法高亮
- set nu "設置行號顯示,或者是set number
- set tabstop=4 "設置一個縮進佔 4 個空格數
- set autoindent "設置自動縮進
- set mouse=a "設置鼠標一直可用,set mouse= (空)取消
- set list lcs=tab:\|\ (here is a space) "tab提示(只要是tab縮進的地方都有提示)
- set cc=10 ''第十列高亮,set cc=0取消
- set cursorline "突出顯示當前行
3. Vim使用
在桌面版的Liunx系統中,提倡釋放鼠標,使用更加高效的命令行操作,但是對於剛剛接觸Linux系統的人來說,一開始還是十分不習慣的,對於Vim的使用,都是通過命令行實現的,所以前期要記得命令比較多,但是當你十分長期使用Vim,熟悉了之後就會覺得效率非常高,共勉吧!(未完待續 ....... )
4. Vim 安裝插件
4.1 Vim支持插件擴展
Vim有許多有用的功能,可以與現代文本編輯器競爭,如Sublime Text,Atom,UltraEdit或jEdit。它們包括支持正則表達式的搜索,輕鬆重複命令的能力,直接記錄和執行宏,自動完成,文件合併,鼠標集成,拼寫檢查,語法突出顯示,分支撤消/重做歷史,支持流行網絡協議和文件存檔格式等。
雖然Vim的功能令人印象深刻,但其真正的優勢在於其可擴展性。 Vim有自己的腳本語言,稱爲Vim腳本(也稱爲vimscript或VimL),用戶可以通過多種方式使用它來增強Vim,例如爲其他編程語言啓用語法高亮,自動化語法檢查或將Vim與其他應用程序和服務。
大多數經驗豐富的Vim用戶很難想象在沒有任何腳本的情況下使用文本編輯器,並且有很多可供選擇。 Vim Awesome是世界上最大的Vim腳本目錄之一,其中包含超過18,000個。一些最值得注意的Vim腳本包括vim-multiple-cursors,它允許您創建多個選擇,NERDTree,它在側面板中顯示交互式文件樹視圖,以及Emmet,一個強大的HTML,CSS和JavaScript完成工具。
除了可擴展性之外,Vim還具有高度可配置性,包含Vim核心全局設置(稱爲vimrc)的文件可以在各個Vim安裝之間共享。如果您不想在閒暇時間搞亂設置和編輯配置文件但仍希望充分發揮Vim的優勢,可以從互聯網上下載許多現成配置文件中的一個,或者使用Vim等工具創建一個配置。---- 百度百科《VIM》
上面是截取百度文庫中對Vim的介紹,總結出一句就是:Vim提供了最原始的文本編輯器功能,你還可以通過配置腳本來配置專屬自身的功能。通常來說,這時候都是拿來主義比較香,可以去各大博客平臺找教程或者github也是一個非常棒的平臺,通常兩種方式:
- 1. 找源碼,一步一步配置;
- 2. 使用Vundle 插件管理器安裝插件。(真香)
4.2 Vundle 插件管理器真香
- 1. 下載源碼
終端輸入該命令,意思是從github中下載源碼到 ~/.vim/bundle/Vundle.vim,注意,電腦需要安裝git工具,方法自行百度。
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- 2. 配置配置文件
推薦修改 ~/vimrc,在任意位置加入如下腳本代碼段:
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() " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required
- 3. 安裝插件(以indentLine爲例)
需要將Plugin 'Yggdroot/indentLine' 置於call vundle#begin()和call vundle#end()之間:
進入vim中執行 PluginInstall:
正在安裝:
安裝完成:
- 4. 刪除插件(以indentLine爲例)
需要編輯 ~/.vimrc 配置文件,刪除或者註釋對應的Plugin (如下以):
這是其實對應的插件已經失效,但是還是存在插件管理器中,會霸佔存儲器空間,如果想真正刪除插件,需要到vim中執行 PluginClean。
彈出操作界面以及信息提示窗口(選擇Y):
插件卸載成功:
4.3 使用nerd tree構建目錄樹
用慣了集成化ide開發的同學都習慣目錄樹,可以更方便的看到整個項目的結構以及切換文件,下面是VScode的目錄樹截圖:
在Vim中,我也想要目錄樹,nerd tree可以很好的滿足你:
nerd tree也很好安裝(通過Vundle安裝),下面是詳細的安裝步驟:
需要將 Plugin 'scrooloose/nerdtree' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'scrooloose/nerdtree'
- 修改配置文件( ~/.vimrc ),添加如下語句:
" nerdtree autocmd vimenter * NERDTree " 打開vim,自動開啓nerd tree map <F3> :NERDTreeMirror<CR> " 通過F3 打開/關閉 nerd tree map <F3> :NERDTreeToggle<CR>
- 進入 vim 中執行 PluginInstall
- 體驗 nerd tree ,使用 ctrl + w,切換窗口
4.4 Tagbar瀏覽文件結構
一個文件中必然會涉及許多函數的定義以及類的定義,快速定位代碼位置和掌握文件結構可以很大程度提高編碼效率,Tagbar 提供一個簡單的方式去瀏覽文件結構,並支持各標籤之間快捷跳轉(右邊爲Tagbar窗口):
Tagbar也很好安裝(通過Vundle安裝),下面是詳細的安裝步驟:
需要將 Plugin 'majutsushi/tagbar' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'majutsushi/tagbar'
- 修改配置文件( ~/.vimrc ),添加如下語句:
" tagbar nmap <F8> :TagbarToggle<CR> " 通過 F8 打開/關閉Tagbar
- 進入 vim 中執行 PluginInstall
- 體驗 Tagbar ,使用 ctrl + w,切換窗口
4.5 vim-airline美化狀態欄
4.5.1 介紹
(???) vim有狀態欄嗎?其實,所說的 vim 狀態欄就是這個:
是不是很 vim~, vim自帶的狀態欄非常簡約,僅僅是模式以及行列號的展示,這樣的狀態雖然簡潔但是卻也浪費了空間,我們可以美化狀態欄同時往狀態欄中塞入更多的信息,方便查看,vim-airline可以很好地滿足你 (我的狀態欄具有git分支信息顯示,這個需要配合fugitive Git 包裝器插件,不安裝也行,將不顯示git分支信息) :
4.5.2 安裝
-
需要將 Plugin 'vim-airline/vim-airline' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'vim-airline/vim-airline'
- 進入 vim 中執行 PluginInstall
- 修改 airline主題(以下可選)
-
需要將 Plugin 'vim-airline/vim-airline-themes' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'vim-airline/vim-airline-themes'
- 進入 vim 中執行 PluginInstall
- 修改配置文件改變主題,在 ~/.vimrc 上添加 (永久配置)
let g:airline_theme="bubblegum"
- 命令行模式下,使用該命令設置 (臨時配置)
:AirlineTheme bubblgum
4.5.3 擴展
- vim-airline項目地址
- vim-airline 主題選擇:
badwolf 和dark差不多
base16 銀,紫
behelit 淺藍
bubblegum 暗綠,粉
dark 亮黃
durant 比dark暗些
hybrid 灰
hybridline 綠,棕
jellybeans 黑灰
kalisi 暗黃,綠
kolor 藍色的
laederon 銀,紅
light 淺亮藍,紅,銀
lucius 灰,銀
luna 藍綠色
molokai 棕,藍,橙
monochrome
murmur 藍,橙
papercolor 銀,淺藍
powerlineish 暗黃,橙
raven 灰
serene 黑
silver 太銀了,深綠
simple 亮藍
sol 銀,深藍
solarized 太多色了
term 綠,藍
tomorrow
ubaryd
understated
wombat 亮黃
zenburn 藍,橙
4.6 ctrlp文本搜索工具
4.6.1 介紹
一個項目通常會有很多子目錄,子目錄下面又有子目錄,這樣一層一層的關係就會導致我們找某個文件很繁瑣,導致效率降低,剛剛使用 vim 的同學可能會遇到不斷地 cd 又cd 又cd 的情況。那麼使用ctrlp之後的這樣 vim 是否吸引了你。(輕鬆找到藏得很深的 lib3.h 和 main.c)
4.6.2 安裝
- 需要將 Plugin 'kien/ctrlp.vim' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'kien/ctrlp.vim'
- 同時在 ~/.vimrc 添加配置信息:
" ctrlp.vim
let g:airline_cmd = 'CtrlP' " ctrl + p 按鍵啓動
- 進入 vim 中執行 PluginInstall
4.6.3 使用
- ctrl + p 啓動ctrlp
- ctrl + c 關閉ctrlp
4.7 molokai配色主題
4.7.1 介紹
很多人對於 vim 自帶的配色主題欣賞不來,大多數碼農喜歡的是黑色背景,這樣子顯得酷一點,打代碼也舒服一點,我推薦molokai 配色主題:
4.7.2 安裝
- 需要將 Plugin 'tomasr/molokai' 置於 call vundle#begin() 和 call vundle#end() 之間:
Plugin 'tomasr/molokai'
- 同時在 ~/.vimrc 添加配置信息:
" molokai
colorscheme molokai " 開啓 molokai 配色主題
- 進入 vim 中執行 PluginInstall
4.7.3 擴展
- molokai 項目地址
- 另外推薦的是 solarized 配色主題:solarized 項目地址
4.8 syntastic語法檢查
4.8.1 介紹
Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器。
----《百度百科》
我十分推崇使用Linux環境去學習編程作爲入門編程的方式,這其中,我也推崇使用Vim去敲代碼,使用編輯器與編譯器分開的方式學習,這樣我們可以很清晰的看到代碼是如何從一段文字變成可執行程序的過程,而不是直接上手高度集成化的IDE。Vim的定位是文本編輯器,自然而然不帶有代碼檢查的功能,但是代碼檢查是十分必要的。
---->(以下過程僅針對博主本人):Vim不帶有代碼檢查功能,那麼檢查代碼你只能後臺掛起或關閉Vim,然後使用編譯器去編譯代碼,通常第一次編譯會跳出一堆信息(error X、warning X),以gcc爲例,會列出詳細的錯誤信息和代碼定位,但是,一個界面,代碼和錯誤信息不可兼得(雖然你也可以打開兩個終端看....(不得扛精!)),這時候你重新打開代碼就忘了錯誤信息,打開錯誤信息就忘了代碼,真是翻書馬冬梅,合書,馬X梅啊!。
接下來是未安裝和安裝的syntastic進行語法檢查的對比:
4.8.2 安裝
4.8.2 使用
5. 嘮叨幾句