vim學習筆記

寫在前面的話:

三年前開始接觸vim覺得很不好用,在開發IDE滿山遍野的時代,傳統vim工具又能有什麼優勢呢?

在公司看到一技術牛人使用vim信手拈來如虎添翼,對vim大愛,三年前已開始學習使用。

------------------------------------------------------------------------------------------

安裝vim包:  

sudo apt-get install vim

普通用戶到超級用戶的切換: 

sudo su

退出超級用戶:

ctrl+d  或者exit

vim有三種常用模式:普通模式(默認)、編輯模式、命令行模式。

普通模式到編輯模式:i   退回普通模式:esc按鍵(escape)

普通模式到命令行模式用:(冒號)   退回普通模式:esc按鍵(escape)

:w  ——內存中的東西寫入到磁盤。相當於保存

:q  ——退出編輯器vim

:wq  ——保存,退出

vim的基本操作

dd  ——刪除一行

cc  ——修改一行

d 2 w  ——從光標所在處開始,刪除兩個單詞

dG  ——從光標所在處,一直刪除到結尾

u  ——撤銷(undo

h  ——vimhelp

bd  ——bufferdelete:刪除緩衝區,關閉幫助內容

h bd  ——查看關於bd的解釋文檔 bdhelp

 

在help文檔裏面,當光標移動到鏈接(如tutor)的地點時,用ctrl+右方括號 打開鏈接;用ctrl+o關閉鏈接。

vimtutor ——bash命令,vim教程

粘貼和複製:

shift+v  ——選中光標所在行

jk選中多行

d  ——剪切

y  ——(yank)複製,原來的文本保留

p  ——(past)粘貼

在一個文件裏打開兩個文件:

vnew  ——豎着打開兩個文件

new  ——橫着打開兩個文件

bd  ——光標光標所在的文件

ctrl+ww  ——光標在窗口間切換

關閉vim的快捷鍵:shift+zz  相當於:wq

在vim中用 / woed  ——查找

n  ——查找下一處

N  ——查找上一處

:3  ——跳轉到第三行

u  ——撤銷undo

ctrl+r ——返回 redo

vim的配置操作:

set nu  ——顯示行號

set nonu  ——取消顯示行號

set ai  ——自動縮進(auto indent

set noai  ——取消自動縮進

map <tab>:bn<cr>  ——按下tab執行:bd的功能:影像

這些設置都可以寫到一個配置文件裏,成爲默認的規則。在/home/shsf/.vimrc  裏面進行配置。在.vimrc(隱藏文件)裏面雙引號表示註釋

關於:bn  ——已經用vim打開了文件a。命令行裏面輸入:e  (編輯)或者:o(打開)另一個文件。這樣用:bn切換緩衝去。用來在兩個文件的切換顯示。:bd只關閉當前緩衝區而:wq是關閉vim

vim的插入模式的快捷鍵

       ctrl+n  ——聯想補齊一個單詞(這個單詞在本文件中已經出現過)

       ctrl+x+l  ——行補齊,輸入行首字母可以補齊一行

       ctrl+x+k  ——字典功能,輸入單詞的前幾個字母,顯示字典裏的相關單詞

字典需要的.vimrc配置內容:

set dictionary+=~/.vim/dict/simple

set dictionary -=/usr/share/dict/words dictionary +=/usr/share/dict/word

後兩個功能的實現需要一些插件。還有象taglist (象目錄一下的顯示在一旁)、snipmate(用簡單的幾個字母顯示一個小的片段,比如輸入fun按下tab後就顯示處函數的結構)

怎樣得到插件?

git clonegit://github.com/happypeter/peter-vim.git 得到所需的插件

然後把peter-vim改名爲.vim(隱藏文件)並移動到自己的HOME即/home/shsf/下

(讀裏面的readme文件)

vim的錄音

normal mode下輸入一個q在輸入任何一個字母就進入recording列入按下qq後面的q表示記錄區。之後對vim的操作都被記錄下來包括進入insert mode 。退回到normal mode以後按q退出recording。還在normalmode下按@+q播放處理。就是把以上做的重複做一遍。

vimdiff a b ——用vim以字母爲單位顯示文件a和文件b的不同(bash命令)

:diffsave  ——在vim中查看文件的更改內容,高亮顯示緩衝區裏跟硬盤文件的不同(同一個文件而言的)

jj as esc ——用map完成配置。這樣方便vim操作。

locate filename  ——定位文件,顯示文件的絕對路徑。

關於make

在工程比較大的時候,調試過程中每次gcc後面的文件都要寫,並且很多。方便起見可以用make。在工程的目錄下執行如下操作

vim makefile 或者vim Makefile  並輸入內容(第二行要tab開頭)

all

       gcc  main.c hello.c  hello.h

clean:

       rm  –rf a.out  hello.h.gch

插入文件名的快捷鍵: ctrl+x+f

這樣以後在bash下執行make就可以執行gcc操作了

執行make clean 就執行rm –rf  a.out  hello.h.gch

在vim中 :make可以執行bash中的make命令對文件進行編譯。如果有錯誤。回車後返回vim。 :cw(或者:cwindou)可以在vim下方開闢一個新的小窗口顯示錯誤信息。

:cn和:cN高亮行在多個錯誤信息上上下移動。回車 光標跳轉到程序裏對應的錯誤位置

:cclose  關閉quickfix(剛纔的錯誤信息顯示窗口)

 

vim中執行bash命令   :!command   回車就可以返回vim

在bash中返回上一次的路徑  cd  -

 

vim常用快捷鍵

 

normal mode

移動光標

h j k l

ctrl+f

forward 向前翻頁

ctrl+b

backward 向後翻頁

ctrl+u

up 向上移動半屏

ctrl+d

down 向下移動半屏

0

the first number  移動到行首字符

$

移動到行尾字符

shift+h

head 移動光標第一行

shift+m

middle 移動到中間行

shift+l

low 移動到最下一行

gg

到首行

G

最後一行

5<cr>

到第5

/word

查找word

n

向下再查找word

N

向上再查找word

x X

後前刪除(del);X向前刪除(backspace)

dd

刪除一行

5dd

刪除光標開始向下的5

d1G

刪除光標以前的

dG

刪除光標以後的

yy

複製(參考刪除)

nyy

y1G

yG

p P

p向下粘貼;P向上粘貼

u

undo

ctrl+r

redo

.

小數點:重複上一步操作

shift+v

行選

ctrl+v

塊選

insert mode

ctrl+n

單詞補齊(以前出現過)

ctrl+x+l

行補齊

ctrl+x+k

字典功能(用ctrl+n/p換詞)

commend mode

:set nu

number

:set nonu

no number

:set ai

auto indent

:set noai

no autoindent

shift+zz

:wq!

:100,200/a/b/g

100200行間的a換成b

:1,$s/a/b/g

全換

:1,$s/a/b/gc

全換有提示等用戶確認

多窗口

sp

不加文件名再代開已打開的文件,也可以加文件名,用:q

ctrl+ww

光標窗口切換

vnew (filename)

豎着再代開一個新窗口,用:bd

e或:o

打開一個文件覆蓋原先的,用:bd,:bn切換

 

 

vim技巧:

如果要講vim裏的一個a字符改成——講光標移到a處,然後按r放開後再按c

註釋一行  ——ctrl+c

註釋一塊:塊選然後 ctrl+c

取消就是一個 u

交換兩個相鄰字母的位置:按x然後按(剪切再粘貼)

taglist ctags  nerdtree  snipmate

1. taglist(標籤列表) :

在vim中執行  :Tlist 會在窗口的左半部分出現一個關於vim里程序的提綱。

用ctrl+ww 把光標在兩個窗口直接切換

在taglist中移動光標到函數名<cr> 在右邊查看函數體;ctrl+o 返回。

再執行 :Tlist 退出。

/home/shsf/.vimrc中的相關配置  map ,t  :Tlist

2. ctags

如果想從程序中的函數名去查看對應的函數體語句:

在bash中執行命令ctags  hello.c  hello.h main.c(自己關心的文件)

如此後生成一個名爲tags的文件。之後

在vim中就可以把光標移動到函數名上ctrl+】跳轉到對應函數體;ctrl+o返回。

3nerdtree

命令 :NERDTreeToggle

/home/shsf/.vimrc中配置  map ,n  :NERDTreeToggle

也是在窗口左半邊上顯示列表。

ctrl+ww光標在兩個窗口間實現切換

在左窗口移動光標到函數或宏定義名字上<cr> ,在右側實現對應顯示

4. snipmate(小片助手)

實現輸入幾個字符後按tab出現一小片對應文字的功能,配置文件位於

/home/shsf/.vim/snippets/c.snippets

格式如下

#incude<...>  註釋行,頂頭的#表示註釋

snippet  inc

              #include<${1:studio.h}>${2}

說明如下:snippet爲固定格式  inc是要輸入的提示字符。當有inc輸入並按下

tab按鍵是就顯示下面的內容  其中$表示下一個tab跳轉的位置,數字1表示tab的順序序號。冒號後面的的內容爲默認內容,如果確認內容就按tab到下一處,否則可以直接修改。

map與imap的區別:

當兩個映射以相同的字符順序開始,它們是含糊的.

例如:

       :imap aa foo

       :imap aaa bar

當 Vim 讀如 "aa", 它將需要取得另外一個字符才能決定是否是 "aa" 或是 "aaa"

應該被映射. 這意味這當輸入 "aa" 以後映射還不會展開, Vim還在等待另一個字符.

如果你輸入一個空格, 那麼 "foo" 將被插入, 而不是空格. 如果你輸入一個"a",

那麼"bar" 將被插入.

vim中全局查找替換

%s /a/b/g  ——把所有的a都換成b

%s/\/home\/shsf\//a/g  ——把/home/shsf/路徑換成a/需轉義)

 

把光標移動到 { 處。按%光標會自動跳到與之成對的 } 上面。反之也可以。

把函數體摺疊起來:

把光標移動到函數開始的 { 處, 然後(normal mode)輸入zf%——創建函數摺疊;

在已經摺疊的加號位置輸入   zc ——打開摺疊的函數。

當要把打開的函數再摺疊就輸入  zx  ——關閉(第二次摺疊)

shift+v塊選以後,輸入 zf  ——實現塊摺疊。

塊選  輸入 >  ——縮進

塊選  輸入  <  ——縮進返回

在insert mode下對齊函數語句:

ctrl+t    往右移動對齊

ctrl+d    往左移動對齊(設置tab爲4個空格,而某行只縮進了3個空格。這時執行ctrl+t可以再縮進一個空格達到對齊的效果)

如果需要對函數進行註釋,可以講光標移動到函數名處,執行Dox 給出註釋格式,方便的添加註釋內容。包括主題變量和返回值。

 

vim常用快捷鍵

 

normal mode

移動光標

h j k l

ctrl+f

forward 向前翻頁

ctrl+b

backward 向後翻頁

ctrl+u

up 向上移動半屏

ctrl+d

down 向下移動半屏

0

the first number  移動到行首字符

$

移動到行尾字符

shift+h

head 移動光標第一行

shift+m

middle 移動到中間行

shift+l

low 移動到最下一行

gg

到首行

G

最後一行

5<cr>

到第5

/word

查找word

n

向下再查找word

N

向上再查找word

x X

後前刪除(del);X向前刪除(backspace)

dd

刪除一行

5dd

刪除光標開始向下的5

d1G

刪除光標以前的

dG

刪除光標以後的

yy

複製(參考刪除)

nyy

y1G

yG

p P

p向下粘貼;P向上粘貼

u

undo

ctrl+r

redo

.

小數點:重複上一步操作

shift+v

行選

ctrl+v

塊選

insert mode

ctrl+n

單詞補齊(以前出現過)

ctrl+x+l

行補齊

ctrl+x+k

字典功能(用ctrl+n/p換詞)

commend mode

:set nu

number

:set nonu

no number

:set ai

auto indent

:set noai

no autoindent

shift+zz

:wq!

:100,200/a/b/g

100200行間的a換成b

:1,$s/a/b/g

全換

:1,$s/a/b/gc

全換有提示等用戶確認

多窗口

sp

不加文件名再代開已打開的文件,也可以加文件名,用:q

ctrl+ww

光標窗口切換

vnew (filename)

豎着再代開一個新窗口,用:bd

e或:o

打開一個文件覆蓋原先的,用:bd,:bn切換

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章