真是不知不覺過了一年,前段時間忙着考試什么的,沒再寫筆記寫博客,考完又懶懶地玩了幾天。這幾天其實都在讀別人的博客,感受一下大神的工作和生活感悟,感受一下過來人的經歷和經驗,對自己總是很有幫助的。
今天想寫下一下vim的筆記。
Vim,程序員必備的高效編輯器,不用多介紹的了,代碼補全、編譯和跳轉等方便的編輯都是非常豐富完整的。
其實現在不少公司指定員工后台開發要用這個編輯器,ubuntu+vim的開發形式其實挺常見的。Vim確實是非常強大的編輯器,很多IDE可以做的vim都可以做到,想自行增加一些編輯增強或者編譯功能的話裝對應插件即可。
本篇筆記涉及到的軟件有vim7.3版本,python3.0 , clang3.0。
目錄:
一、常識:
1、按Tab鍵可以補全命令;
2、下面提到的凡是“:set XXXX”之類的設置命令均可直接在vim配置文件vimrc中加入,這樣的話不用每次都重新配置;
3、vim的配置文件路徑一般是:/etc/vim/vimrc,如果你想針對某個特定用戶配置一個特定的配置文件,那么在該用戶文件夾下創建~/.vimrc文件,並輸入配置內容即可;
4、幫助文檔的使用,比如說我想知道怎么開啟語法高亮(一般默認是已經開啟的),那么在vim中鍵入命令:”:help syntax”,即可查看相關幫助信息:
如果要進一步查看相關文檔,比如文檔usr_06.txt,那么繼續鍵入”:help usr_06.txt”即可跳轉,查看完畢之后,按ZZ或者鍵入”:q!”(不保存的退出方式)即可退出幫助文檔。
二、vim基礎筆記:
2.1 基本文本輸入:
1、鍵入文本:按i(其實a,s等沒有其他功能的普通按鍵亦可)
2、退出輸入狀態:<Esc>鍵。
3、復制:在非輸入狀態下(按Esc退出輸入狀態),按yy(復制整行),yw(復制當前單詞),y$(復制到行尾),鼠標選中按y(復制選中部分)。
4、粘貼:<Esc> 。按p。
5、移動:按逐個詞向后:<Esc>,w;逐個詞往回:<Esc>,b。移動到指定行,比如移動到33行:<Esc> , 33G。(注意是大寫)。
6、刪除:<Esc> 。單個字符,按x;一行,dd;刪除一個換行符,J(大寫)。
7、撤銷:<Esc> , u。
8、保存和退出:應用更改,命令”:write”;。不保存即退出,命令”:q!”。保存並退出,ZZ。
關閉當前編輯窗口,命令”:close”。對全部文件應用更改,”:wall”。全部文件退出,命令”:qall”,使用該命令前需先進行全部文件寫入”:wall”。
9、命令補全:Tab鍵可補全命令。Ctrl+D可查看可以補全的命令表,比如:
10、掛起編輯和繼續:和大部分Unix程序一樣,ctrl+Z可將vim掛起,回到terminal或console中,不管你做了什么工作,在terminal或者console中輸入fg即可回到編輯狀態。
2.2 vim實用基礎配置:
配置出了可以通過命令實現外,也可以將set內容添加到vim配置文件/etc/vim/vimrc中,當然,添加到vimrc就不需要在set前面加”:”了。
1、設置顯示行號可以使用命令 ”:set number”
2、文件自動保存,”:set autowrite”
3、使鼠標可用,”:set mouse=a”。這個命令鍵入后在可視化界面是生效的,但是我在tty1控制台鍵入該命令卻沒有任何變化,通過”:help mouse”查找相關幫助內容后看到:
看到其中一個使用條件是:”Linux console with gpm”,那我想應該是缺少了這個東西,所以嘗試安裝一下:
sudo apt-get install gpm
安裝完成后發現沒問題了,”:set mouse=a”設置成功。
4、實用配置列表:
因為這些配置實在太多,就不一一列舉了,總結和摘錄了一個常用的配置表,可以直接復制粘貼到vimrc配置文件中(“符號后面的都會被識別為注釋):
syntax on " 自動語法高亮,其實vim7.3版本語法默認是高亮的
colorscheme evening" 一種好看的配色方案
set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度為 4個字符
set tabstop=4 " 設定 tab 長度為 4個字符
filetype plugin indent on " 開啟插件
set ignorecase " 搜索時忽略大小寫
set incsearch " 即刻顯示當前輸入的搜索結果
set hlsearch " 高亮搜索結果
set noerrorbells " 關閉錯誤信息響鈴
set autochdir " 自動切換當前目錄為當前文件所在目錄
filetype indent on “自動縮進
set autoindent shiftwidth=n “修正縮進,ctrl+T或ctrl+D或者>>、<<均對應n個字符縮進
三、vim實用功能:
3.1、查找功能:
1、最基礎的查找:
<Esc>狀態,直接按 / 鍵。然后輸入要查找的內容。下一個查找結果按n。如果查找的內容帶有符號‘.*[]^%/n?~$ ,則添加轉義字符方式“ \ ”再進行查找即可。
2、精確查找:
比如說我要確切地找到一個單詞“top”。則按 / 鍵,然后輸入如下內容:
/\<top\>
其實它的意思是,搜索以top開頭,並以top結尾的單詞。所以如果我們希望查找以top開頭的所有單詞:
/\<top
以top結尾的單詞:
/top\>
3、跨文件查找字符:
比如,在進行某個文件的編輯時,我希望找到當前工作目錄中所有含有”include”字符串的cpp文件:
“:grep include *.cpp”
編輯器會暫時彈出terminal或console中,顯示查找結果:
3.2 分割窗口編輯多個文件:
打開的時候直接打開多個文件進行編輯:
vim -o file1 file2 file3
比如,同時打開名為game.cpp和test.cpp的文件進行編輯:
vim -o test.cpp game.cpp
在不同的文件之后進行切換:
<Esc>狀態下,ctrl+ww。
如果啟用了鼠標可用模式的話(:set mouse=a),直接用鼠標點擊即可切換。
當然,如果先編輯game.cpp,想同時編輯test.cpp,則鍵入如下命令:
:split test.cpp
當然如果想垂直分割編輯器框的話,可以用vsplit命令:
:vsplit test.cpp
如果記不清我們到底要打開哪個文件進行編輯,可以使用如下命令:
:browse split
將光標移至需要編輯的文件按<Enter>鍵即可打開進行編輯:
3.3 代碼折疊:
所有折疊命令都以z開頭。
zf "F-old creation (創建折疊)
zo "O-pen a fold (打開當前折疊)
zc "C-lose a fold (關閉當前折疊)
zR "打開所有折疊
zM "關閉所有折疊
要記住這些實在是略顯蛋疼,如果可以用鼠標點擊折疊和關閉豈不是很好?
可以通過下列命令實現。
首先,鼠標可用配置為”:set mouse=a”,可以自行指定鼠標模式:”:behave mswin”或者”:behave xterm”(默認)。
然后,結合使用”:set foldcolumn=4”和”:set foldmethod=indent”,即可按照縮進折疊並且顯示折疊標志(在此設置空位為4個字符),可用鼠標點擊。
3.4 代碼間跳轉:
代碼間跳轉也算是比較常用的功能——使用一個函數的時候想跳到函數聲明或者定義的位置,尤其是它們處於不同文件中時。使用IDE當然很方便,而vim也是自帶這個功能的,不過需要配合ctags命令工具的使用:
ctags官網http://ctags.sourceforge.net/
1、安裝ctags:sudo apt-get install exuberant-ctags
2、使用ctags生成鏈接文件:
ctags -f [輸出目錄] -R [需鏈接的文件所在目錄的列表]
比如(只是舉個java例子,c,c++,obj-c等類似):
ctags -f ~/.tags -R $JAVA_HOME/src ~/workspace/
3、然后在/etc/vim/vimrc中加入
set tags=~/.tags
即可自動加載生成的tag。
4、跳轉:
Ctrl+]前進,ctrl+T后退。
注意,也可以不按上述4步指定輸出目錄,直接轉到指定工作目錄輸入命令:
ctags *
這樣所有文件都會被注上標簽,並且當前工作目錄中會自動生成tags文件,示例如下:
3.5 vim代碼自動補全插件clang_complete的安裝:
Vim中的c和c++補全插件不少,比較有名的有OmniComplete,不過它們都要通過ctags命令創建的標簽來對字符串進行匹配,比較蛋疼。
在此選了clang_complete,也很有名,比前者更實用高效,不多介紹了。
折騰了一會兒才把clang_complete插件的安裝搞定。為了避免其他一些不必要的問題,在這里我給出一個保險的安裝方案——雖然看起來比較冗長:
首先,你的vim不能安裝過諸如:OmniComplete之類的插件,如果安裝過不妨先刪除這個插件。
接着,先確保安裝了python3:
sudo apt-get install python3
下面確保安裝了clang:
sudo apt-get install clang
當然,還要確保自己的vim版本在7.3或以上。
下面安裝clang_complete插件:可以點擊如下鏈接進行下載:
http://www.vim.org/scripts/download_script.php?src_id=19588
然后將工作目錄轉到插件所在目錄輸入如下安裝命令:
vim clang_complete.vmb -c 'so %' -c 'q'
或者直接從github獲取安裝:
git clone https://github.com/Rip-Rip/clang_complete.git
make
vim clang_complete.vmb -c 'so %' -c 'q'
安裝完成后可以在插件文件夾~/.vim/plugin/中找到該插件。不需要了可以刪除這些文件。
如果在上述文件無法找到插件文件夾,你可以在vim打開的狀態下輸入如下命令:
:set runtimepath?
即可獲得所有可能的插件保存位置。
接下來應該即可正常使用。
示例: