linux開(kai)發(fa):vim命令
							時間:2019-03-07      來源:華(hua)清(qing)遠(yuan)見 
							vim使用篇
插入:
i 從光標當前位(wei)置開(kai)始(shi)插入
a 從(cong)光(guang)標當前位置的下一個(ge)字符(fu)開始(shi)插入
o 在(zai)光標位置的下行插(cha)(cha)入一個空行,再進行插(cha)(cha)入
O 在(zai)光(guang)標位置的上一行(xing)插入一個空行(xing),再進行(xing)插入
I 從光標所在行的開頭開始插入正文
A 從光標所在行的末尾開始插入正文
文件保存(cun)與退(tui)出:
:w 保存文件
:w <filename> : 另存為
:w! 強制保存文件
:q 退出
:q! 強制退出
:x = :wq
文件寫(xie)入與打開:
:w filename 保存(cun)文(wen)件(jian)為給出的文(wen)件(jian)名
:w! filename 強制保存文件(jian)為給(gei)出的文件(jian)名
:f filename 將當(dang)前文(wen)件重命(ming)名為filename
:r filename 插(cha)入文件內容到光標指定(ding)的(de)位置(zhi)
:e filename 編輯(ji)新文件(jian)(打開另(ling)一個(ge)文件(jian)進行編輯(ji))
:e! 放棄(qi)對文(wen)件(jian)的(de)修(xiu)改,并加裁原始的(de)文(wen)件(jian)內容
復制粘貼:
[n]x 刪除(chu)從光標(biao)開始的連(lian)續n個字符
[n]dd 刪(shan)除從光標開發的n行
[n]yy 復制從光標開始的n行(xing)
y$ 從(cong)光(guang)標(biao)位(wei)置復制在行尾
p 粘貼
gp 粘貼
u 撤消
U 撤(che)消對(dui)一行的全部(bu)操作
ctrl+r 重做(zuo)(反撤(che)消)
. 重復上次(ci)操(cao)作
yw 復制一個(ge)word
dw 剪(jian)貼(tie)一個word
cw 修改一個word
D 剪(jian)貼光(guang)標到(dao)行尾
C 修改光標到行尾
選擇:
v 按字符選擇
V 按行選擇
ctrl+v 按塊選擇
光標跳轉:
h、j、k、l 左、下、上、右(you)
H、M、L 屏(ping)幕最(zui)上邊(bian)、屏(ping)幕中間位(wei)置(zhi)、屏(ping)幕最(zui)下邊(bian)
gg 跳(tiao)到文件第(di)一行
G 跳到文件最后(hou)一行(xing)
$ 跳到行末
0(數字0)跳到行(xing)首(shou)
[num]gg(或[n]G) 跳(tiao)到文件第n行
[n]H 跳到屏幕第n行
fx   光標(biao)移動到本行之后第一(yi)此出現“x”的位置(zhi);如(ru):fa ,移動到下(xia)一(yi)次a出現的位置(zhi)
Fx 光(guang)標移動(dong)到本行之前一此出(chu)(chu)現(xian)“x”的位置(zhi);如:fa ,移動(dong)到上一次a出(chu)(chu)現(xian)的位置(zhi)
% 在前(qian)后(hou)括號({}() )位(wei)置之(zhi)間(jian)移(yi)動
:n 跳到第(di)n行(同(tong)[n]G)
w 光標向右移動一個字
W 光標移動到下的個空格之(zhi)后
b 光標向左移動一個字
B 光標(biao)移(yi)動(dong)到上一個空格之后
num% 跳(tiao)到文件num%處 , 如50%
編輯模式下按v 進入可視狀態(tai)進行內容選擇
[n]shift + > 所選(xuan)內容向(xiang)右(you)移(yi)動一(yi)個tab
[n]shift + < 所選內容向左移動一個tab
查找替換:
/string 查(cha)找(zhao)字符串 ,配合(he)n(next)使用
* 向后搜索光標所(suo)在(zai)位置的一個word
# 向前(qian)搜索光標所在位置的一個word
/\<xxx 查找以(yi)xxx開(kai)頭(tou)的字(zi)符(fu)串(chuan)
/xxx\> 查找以xxx結尾的字(zi)符(fu)串
/\<xxx\> 完(wan)全匹(pi)配(pei)查找
d/int main  從光標所在位置開始刪除,直到(dao)遇(yu)到(dao)int main
:s/str1/str2 用str2替換(huan)行(xing)中(zhong)首次出現的(de)字符串str1
:s/str1/str2/g 用str2替換行中所有的(de)字符串(chuan)str1
:%s/str1/str2/g 用str2替換(huan)(huan)全文(wen)中所有的字符串(chuan)str1,不詢問,強制替換(huan)(huan)
:%s/str1/str2/gc 用str2替換全(quan)文中所有的字符串str1,詢問
vi:
打開或新建:
vi <filename>   #命(ming)令(ling)行
:ed <filename> #最后一行模式
:fin[d] <path/file> #在(zai)路(lu)徑path中查找文件,然后(hou)編輯它
new <file> # 在新窗口中編(bian)輯文件
窗口操作:
:sp(或ctrl+w+s): 打開一個新窗口,編輯相同的內容。
:new(或(huo)ctrl+W+n): 打開一(yi)個空的北新窗口。
ctrl+w+w: 在多個窗口(kou)間切換(huan)
滾屏:
ctrl+u[p] 向(xiang)下滾(gun)半屏
ctrl+d[own] 向上(shang)滾半屏
ctrl+f[ront] 向下滾一(yi)屏
ctrl+b[ack] 向上滾一屏
ctrl+e 向下滾一(yi)行
ctrl+y 向上滾一行
zz 將光標(biao)所(suo)在的行(xing)放在屏幕中間
zt 將光標所在的行放(fang)在屏幕第一行 top
zb  將光標所在的行放(fang)在屏幕(mu)最后一行 botton
Go 跳(tiao)到(dao)文件尾部去插入
標簽:
:tabe [file] 打開新標簽并在新標簽中編輯(ji)file所指的文(wen)件
:[num] gt 在不同(tong)的(de)標簽(qian)之間切換 num指的(de)是第幾個標簽(qian)
:tabo 關閉所有其它的標簽(qian)頁
:tabs 列出標簽頁(ye)和它們包(bao)含(han)的窗口(kou)
:tabfir[st] 跳轉到(dao)第一(yi)個標簽
:tabl[ast] 跳(tiao)轉到最后(hou)一個(ge)標簽
vim比較文(wen)件內容:
vimdiff main.c main2.c
vim設置:
set number
set nonumber
set ignorecase #忽略(lve)大小寫 (查找字(zi)符串(chuan)時)
set noignorecase
set ruler   #顯示當前光標所在位置
set nuruler
set hlsearch #高(gao)(gao)亮(liang)(liang)顯示 (查找(zhao)字符串是,找(zhao)到后(hou)高(gao)(gao)亮(liang)(liang)顯示)
set nohlsearch
set incsearch   #在輸入字符串時(shi)就開發查找(zhao)
set noincsearch
syn on #高亮顯示
set backspace=2 #backspace可用
編程編:
1. 打開include 的文件:
  (1) 光標放在文件名(ming)上(shang),按(an) ctrl+w f ,在一個水(shui)平分割(ge)的窗口中打開。
(2) 光標放在文件名上,按gf, 在同一個窗口(kou)中打(da)開。
2. 通過find命令打開(kai)文件:
(1)先通過set path設置查找的目錄:
set path=.,./**,/usr/include 表示在當前目(mu)錄(lu),當前目(mu)錄(lu)下(xia)(xia)的所有子目(mu)錄(lu),和(he)/usr/include目(mu)錄(lu)下(xia)(xia)進行查找(zhao)
(2)設(she)置好目(mu)錄后在vi下(xia)用:find filename即可查找并(bing)打開文(wen)件(jian)。
3. ctags
(1).在項(xiang)目(mu)目(mu)錄下用(yong)“ctags -R .”產(chan)生tags文件。 可(ke)將ctags命令(ling)寫入makefile文件中
(2).在(zai)vim中設置tags文(wen)件“set tags=tags”
(3).在vim中通(tong)過tag命令中轉到(dao)函數:tag main
:tag {ident} “中轉到指定(ding)的標簽
:tags "顯(xian)示標簽
:Ctrl+] “跳轉到當前光標下的標簽(函數聲明(ming)處(chu))
:Ctrl+T “跳轉到標簽棧中較早的標簽(函(han)數調用處)
在taglist串口中將(jiang)光(guang)標移動(dong)到某個(ge)tag上,按(an)空格鍵會在狀態(tai)欄上顯示原型
4. taglist
:TlistOpen 打開taglisg
:p "預覽taglist窗口中(zhong)光標所在位(wei)置的(de)tag。
:o "在新窗口中打開光標所在位置的tag
:l "展開tag
:+ "展開tag
:= "展(zhan)開所有tag
:- "折疊tag(不用shift)
:* "折疊所有tag
5. MiniBufExplorer
此插件會使窗口(kou)上顯示一個buff清(qing)單(dan),可以在(zai)該窗口(kou)上來選擇(ze)打(da)開某個buf文件
<Tab> :跳到(dao)下一個buffer名上(shang)
<shift+Tab>:跳(tiao)到上一(yi)個buffer名上
<Enter>:打(da)開光標所(suo)在(zai)buffer
d: 刪(shan)除光(guang)標所在bufferbuffer
6. C編程常(chang)用命令:
* 查找光標所在處的單(dan)詞(ci)
% 括號之間跳() {} #if...#enfif 之(zhi)間
gd 中轉到局部變(bian)量的定義處
gf 跳到光標所在的頭文件處,ctrl+o 跳回來
cw 刪除一個單詞并進入(ru)插入(ru)模式
dw 刪除一個單詞并
[I 查看(kan)函數的(de)聲明:顯(xian)示include文件中匹(pi)配(pei)這個(ge)(ge)函數名的(de)一(yi)個(ge)(ge)清單(dan)
7. 習慣:
1.留意一(yi)下你(ni)經常要重復(fu)進(jin)行的(de)操作是什(shen)(shen)么。或者你(ni)花大部分時間(jian)都在干些(xie)什(shen)(shen)么。想一(yi)想有(you)沒(mei)有(you)一(yi)個編輯命(ming)令(ling)可以替你(ni)做(zuo)最讓(rang)你(ni)頭痛的(de)事。
2.不(bu)要重復(fu)做相同的(de)事。

