當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > linux開發(fā):vim命令
vim使用篇
插入:
i 從光標(biāo)當(dāng)前位置開始插入
a 從光標(biāo)當(dāng)前位置的下一個字符開始插入
o 在光標(biāo)位置的下行插入一個空行,再進行插入
O 在光標(biāo)位置的上一行插入一個空行,再進行插入
I 從光標(biāo)所在行的開頭開始插入正文
A 從光標(biāo)所在行的末尾開始插入正文
文件保存與退出:
:w 保存文件
:w <filename> : 另存為
:w! 強制保存文件
:q 退出
:q! 強制退出
:x = :wq
文件寫入與打開:
:w filename 保存文件為給出的文件名
:w! filename 強制保存文件為給出的文件名
:f filename 將當(dāng)前文件重命名為filename
:r filename 插入文件內(nèi)容到光標(biāo)指定的位置
:e filename 編輯新文件(打開另一個文件進行編輯)
:e! 放棄對文件的修改,并加裁原始的文件內(nèi)容
復(fù)制粘貼:
[n]x 刪除從光標(biāo)開始的連續(xù)n個字符
[n]dd 刪除從光標(biāo)開發(fā)的n行
[n]yy 復(fù)制從光標(biāo)開始的n行
y$ 從光標(biāo)位置復(fù)制在行尾
p 粘貼
gp 粘貼
u 撤消
U 撤消對一行的全部操作
ctrl+r 重做(反撤消)
. 重復(fù)上次操作
yw 復(fù)制一個word
dw 剪貼一個word
cw 修改一個word
D 剪貼光標(biāo)到行尾
C 修改光標(biāo)到行尾
選擇:
v 按字符選擇
V 按行選擇
ctrl+v 按塊選擇
光標(biāo)跳轉(zhuǎn):
h、j、k、l 左、下、上、右
H、M、L 屏幕最上邊、屏幕中間位置、屏幕最下邊
gg 跳到文件第一行
G 跳到文件最后一行
$ 跳到行末
0(數(shù)字0)跳到行首
[num]gg(或[n]G) 跳到文件第n行
[n]H 跳到屏幕第n行
fx 光標(biāo)移動到本行之后第一此出現(xiàn)“x”的位置;如:fa ,移動到下一次a出現(xiàn)的位置
Fx 光標(biāo)移動到本行之前一此出現(xiàn)“x”的位置;如:fa ,移動到上一次a出現(xiàn)的位置
% 在前后括號({}() )位置之間移動
:n 跳到第n行(同[n]G)
w 光標(biāo)向右移動一個字
W 光標(biāo)移動到下的個空格之后
b 光標(biāo)向左移動一個字
B 光標(biāo)移動到上一個空格之后
num% 跳到文件num%處 , 如50%
編輯模式下按v 進入可視狀態(tài)進行內(nèi)容選擇
[n]shift + > 所選內(nèi)容向右移動一個tab
[n]shift + < 所選內(nèi)容向左移動一個tab
查找替換:
/string 查找字符串 ,配合n(next)使用
* 向后搜索光標(biāo)所在位置的一個word
# 向前搜索光標(biāo)所在位置的一個word
/\<xxx 查找以xxx開頭的字符串
/xxx\> 查找以xxx結(jié)尾的字符串
/\<xxx\> 完全匹配查找
d/int main 從光標(biāo)所在位置開始刪除,直到遇到int main
:s/str1/str2 用str2替換行中首次出現(xiàn)的字符串str1
:s/str1/str2/g 用str2替換行中所有的字符串str1
:%s/str1/str2/g 用str2替換全文中所有的字符串str1,不詢問,強制替換
:%s/str1/str2/gc 用str2替換全文中所有的字符串str1,詢問
vi:
打開或新建:
vi <filename> #命令行
:ed <filename> #最后一行模式
:fin[d] <path/file> #在路徑path中查找文件,然后編輯它
new <file> # 在新窗口中編輯文件
窗口操作:
:sp(或ctrl+w+s): 打開一個新窗口,編輯相同的內(nèi)容。
:new(或ctrl+W+n): 打開一個空的北新窗口。
ctrl+w+w: 在多個窗口間切換
滾屏:
ctrl+u[p] 向下滾半屏
ctrl+d[own] 向上滾半屏
ctrl+f[ront] 向下滾一屏
ctrl+b[ack] 向上滾一屏
ctrl+e 向下滾一行
ctrl+y 向上滾一行
zz 將光標(biāo)所在的行放在屏幕中間
zt 將光標(biāo)所在的行放在屏幕第一行 top
zb 將光標(biāo)所在的行放在屏幕最后一行 botton
Go 跳到文件尾部去插入
標(biāo)簽:
:tabe [file] 打開新標(biāo)簽并在新標(biāo)簽中編輯file所指的文件
:[num] gt 在不同的標(biāo)簽之間切換 num指的是第幾個標(biāo)簽
:tabo 關(guān)閉所有其它的標(biāo)簽頁
:tabs 列出標(biāo)簽頁和它們包含的窗口
:tabfir[st] 跳轉(zhuǎn)到第一個標(biāo)簽
:tabl[ast] 跳轉(zhuǎn)到最后一個標(biāo)簽
vim比較文件內(nèi)容:
vimdiff main.c main2.c
vim設(shè)置:
set number
set nonumber
set ignorecase #忽略大小寫 (查找字符串時)
set noignorecase
set ruler #顯示當(dāng)前光標(biāo)所在位置
set nuruler
set hlsearch #高亮顯示 (查找字符串是,找到后高亮顯示)
set nohlsearch
set incsearch #在輸入字符串時就開發(fā)查找
set noincsearch
syn on #高亮顯示
set backspace=2 #backspace可用
編程編:
1. 打開include 的文件:
(1) 光標(biāo)放在文件名上,按 ctrl+w f ,在一個水平分割的窗口中打開。
(2) 光標(biāo)放在文件名上,按gf, 在同一個窗口中打開。
2. 通過find命令打開文件:
(1)先通過set path設(shè)置查找的目錄:
set path=.,./**,/usr/include 表示在當(dāng)前目錄,當(dāng)前目錄下的所有子目錄,和/usr/include目錄下進行查找
(2)設(shè)置好目錄后在vi下用:find filename即可查找并打開文件。
3. ctags
(1).在項目目錄下用“ctags -R .”產(chǎn)生tags文件。 可將ctags命令寫入makefile文件中
(2).在vim中設(shè)置tags文件“set tags=tags”
(3).在vim中通過tag命令中轉(zhuǎn)到函數(shù):tag main
:tag {ident} “中轉(zhuǎn)到指定的標(biāo)簽
:tags "顯示標(biāo)簽
:Ctrl+] “跳轉(zhuǎn)到當(dāng)前光標(biāo)下的標(biāo)簽(函數(shù)聲明處)
:Ctrl+T “跳轉(zhuǎn)到標(biāo)簽棧中較早的標(biāo)簽(函數(shù)調(diào)用處)
在taglist串口中將光標(biāo)移動到某個tag上,按空格鍵會在狀態(tài)欄上顯示原型
4. taglist
:TlistOpen 打開taglisg
:p "預(yù)覽taglist窗口中光標(biāo)所在位置的tag。
:o "在新窗口中打開光標(biāo)所在位置的tag
:l "展開tag
:+ "展開tag
:= "展開所有tag
:- "折疊tag(不用shift)
:* "折疊所有tag
5. MiniBufExplorer
此插件會使窗口上顯示一個buff清單,可以在該窗口上來選擇打開某個buf文件
<Tab> :跳到下一個buffer名上
<shift+Tab>:跳到上一個buffer名上
<Enter>:打開光標(biāo)所在buffer
d: 刪除光標(biāo)所在bufferbuffer
6. C編程常用命令:
* 查找光標(biāo)所在處的單詞
% 括號之間跳() {} #if...#enfif 之間
gd 中轉(zhuǎn)到局部變量的定義處
gf 跳到光標(biāo)所在的頭文件處,ctrl+o 跳回來
cw 刪除一個單詞并進入插入模式
dw 刪除一個單詞并
[I 查看函數(shù)的聲明:顯示include文件中匹配這個函數(shù)名的一個清單
7. 習(xí)慣:
1.留意一下你經(jīng)常要重復(fù)進行的操作是什么;蛘吣慊ù蟛糠謺r間都在干些什么。想一想有沒有一個編輯命令可以替你做最讓你頭痛的事。
2.不要重復(fù)做相同的事。