vim学习笔记(四)
下面是我的最近更新,差點(diǎn)刪除。
下面的筆記摘自vimtutor。<CR>表示回車
?
刪除命令
在normal模式下:
de 刪除一個(gè)單詞,不包含空格
dw 刪除一個(gè)單詞,包含空格
dd 刪除當(dāng)前行
1,10d 刪除指定行,第1到10行
ndd ?刪除當(dāng)前行及其后n-1行
d$ 刪除當(dāng)前行光標(biāo)到行末的字符
d0 ? ? 刪除光標(biāo)所在處到該行的最前面的第一個(gè)字符
dG ? ?刪除光標(biāo)所在到最后一行的所有數(shù)據(jù)
d1G ?刪除光標(biāo)所在到第一行的所有數(shù)據(jù)
?
刪除命令d的格式
? ? ? ? ? [number] ? ? ?d ? ? ?object =>e|w|$
特殊? ? 2 ? ? ? ? ? ? ? ?dd ? ? ? ? 當(dāng)前行
ndd ??n代表一個(gè)數(shù)字,刪除光標(biāo)所在的向下n行
?
x ? ? ? 向后刪除一個(gè)字符,相當(dāng)于Delete
X ? ? ?向前刪除一個(gè)字符,相當(dāng)于BackSpace
nx ? ? n代表一個(gè)數(shù)字,連續(xù)向后刪除n個(gè)字符
c ? ? ? 重復(fù)刪除多個(gè)數(shù)據(jù),例如向下刪除10行,10cj
?
dnl ? ? 向右刪除n個(gè)字母
?
dnh ? ?向左刪除n個(gè)字母?
dnj ? ? 向下刪除n行
?
dnk ? ?向上刪除n行
?
c ? ? 改變文本
cnw[word] ? 將n個(gè)word改變?yōu)閣ord
?
C$ ? ? 改變到行尾
?
cc ? ?改變整行
?
?
?
撤銷類命令
u ? ? ? ? ? ?撤銷最后一次執(zhí)行的命令
U ? ? ? ? ? ?恢復(fù)該行的原始狀態(tài),撤銷一行中所做的任何改動(dòng)
Ctrl+R ? ?撤銷以前的撤銷命令
. ? ? ? ? ?(小數(shù)點(diǎn))重復(fù)前一個(gè)操作
?
粘貼命令
輸入dd刪除該行,再將光標(biāo)移到要插入行的上一行,按p,粘貼到指定的位置,注意:要在第20
行插入一行,就將光標(biāo)放到第19行,使用p將已經(jīng)刪除的文本內(nèi)容置于光標(biāo)之后
?
替換類命令
更改字符
將光標(biāo)移到要修改的字符位置上,按r,再按要輸入的字符,就可更改該字符。比如:要將a->e, 按r,e可更改a為e
這就是說,輸入r和要替換掉原位置字符的新字符即可。
?
改變一個(gè)單詞的全部或是部分
將光標(biāo)移到單詞lubw->line中的u字母位置,輸入cw,進(jìn)入插入狀態(tài),輸入要更改的字符(ine),按ESC返回normal狀態(tài),繼續(xù)修改下一個(gè)單詞
同樣,c$ 更改本行,將光標(biāo)移到第一個(gè)錯(cuò)誤位置處
cw[newword] ?替換為newword
?
(移動(dòng))定位及文件狀態(tài)
space ? ? ? ? ?光標(biāo)右移一個(gè)字符
?
Backspace ? 光標(biāo)左移一個(gè)字符
?
Enter ? ? ? ? ? 光標(biāo)下移一行
gg ?移動(dòng)文件的第一行
G ? ?移動(dòng)文件的最末行
nG ?移動(dòng)到這個(gè)文件的第n行,這里n是一個(gè)具體的數(shù)字,比如20G
Ctrl+G ? 顯示當(dāng)前行號(hào),當(dāng)迷失位置時(shí),使用該命令查看
?
行間移動(dòng)
0 ? ?數(shù)字0,移動(dòng)到行首的命令
$ ? ?移動(dòng)到行尾的命令
^ ? ?移動(dòng)到行首的第一個(gè)空白符
n$ ?光標(biāo)移至第n行尾
n[Enter] ? 光標(biāo)向下移動(dòng)n行
+ ? ?光標(biāo)移動(dòng)到非空格符的下一行
- ? ? 光標(biāo)移動(dòng)到非空格符的上一行
f<a> ?移動(dòng)光標(biāo)到當(dāng)前行的字符a上
?
F ? ? 相反
?
% ? ?移動(dòng)到與制匹配的括號(hào)上去(),{},[],<>等
?
字符移動(dòng)
h/j/k/l ? ? ?左下上右
?
在一行中,單詞間移動(dòng)
w ? ? ?移動(dòng)光標(biāo)到下一個(gè)單詞詞首
W ? ? 移動(dòng)到下一個(gè)單詞(跳過標(biāo)點(diǎn)符號(hào))
b ? ? ?移動(dòng)光標(biāo)到上一個(gè)單詞詞首
e ? ? ?移動(dòng)光標(biāo)到下一個(gè)單詞詞尾
ge ??移動(dòng)光標(biāo)到上一個(gè)單詞詞尾
]s ? ?移動(dòng)光標(biāo)到下一個(gè)拼寫有錯(cuò)誤的單詞
[s ? ?移動(dòng)光標(biāo)到上一個(gè)拼寫有錯(cuò)誤的單詞
?
段落/區(qū)塊
{ ? ? ?跳到上一段(以空白行分隔)
} ? ? ?跳到下一段(以 空白行分隔)
[{ ? ?跳到當(dāng)前區(qū)塊開頭
]} ? ?跳到當(dāng)前區(qū)塊結(jié)尾
?
搜索命令
順序查找
在正常模式下,輸入/以及尾隨的字符串可以在當(dāng)前文件中查找該字符串
/errror 回車
要繼續(xù)查找同一個(gè)字符串,按n,逆序查找,輸入N
逆序查找
?errror 回車
繼續(xù)逆序查找同一個(gè)字符串,按n;要順序查找,輸入N
如果查找已經(jīng)到文件末尾,會(huì)自動(dòng)從文件頭部繼續(xù)查找
按q/或者q?命令在vim窗口最下面打開一個(gè)新窗口,列出查找歷史,按:q退出,修改原查找項(xiàng),按Enter繼續(xù)查找
查找配對的括號(hào)),],}
將光標(biāo)放在(,[,{之一處,按%會(huì)自動(dòng)將光標(biāo)跳轉(zhuǎn)到另一個(gè)配對的括號(hào)處,再按%會(huì)返回到先前的括號(hào)處,此功能便于程序的調(diào)試
設(shè)置可使查找或是替換忽略大小寫的命令選項(xiàng)
比如查找ignore,在正常模式下輸入/ignore,再輸入
:set ic ?表示忽略大小寫
再輸入
:set hls is 分別表示高亮(highlight search)和增量搜索(inc search)
會(huì)發(fā)現(xiàn)查找的單詞ignore會(huì)反黃顯示,
?
# ? ? 往前搜尋當(dāng)前光標(biāo)所在的word
* ? ??往后搜尋當(dāng)前光標(biāo)所在的word
fx ? 當(dāng)前行往后搜索word x
gd ? 跳轉(zhuǎn)到當(dāng)前光標(biāo)所在的word的定義位置(變量或是函數(shù)定義的地方)
?
c-f ? ?(即 ctrl 鍵與 f 鍵一同按下) 本命令即 page down.
?
c-b ? ?(即 ctrl 鍵與 b 鍵一同按下, 后同) 本命令即 page up.
?
?'' ? ? 此命令相當(dāng)有用, 它移動(dòng)光標(biāo)到上一個(gè)標(biāo)記處, 比如用 gd, * 等查找到某個(gè)單詞后, 再輸入此命令則回到上次停留的位置.
?
?'. ? ? 此命令相當(dāng)好使, 它移動(dòng)光標(biāo)到上一次的修改行.
?
? `.????????????? 此命令相當(dāng)強(qiáng)大, 它移動(dòng)光標(biāo)到上一次的修改點(diǎn).
?
替換命令
將光標(biāo)移到要替換的行,輸入
:s/old/new 回車 ?替換光標(biāo)所在行的第一個(gè)匹配串
:s/old/new/g 回車 ?替換光標(biāo)所在行的所有匹配串
:%s/old/new/g 回車 ?替換整個(gè)文件中的所有匹配串
除了g外,還有
N ?總共替換多少次
c ?commit,每次替換前要確認(rèn)
?
復(fù)制文本
先y(yank抽出),把文本復(fù)制到文本寄存器中,再使用p粘貼到別處.注意:所有與“y”有關(guān)的復(fù)制命令都必須與“p”配合才能完成復(fù)制與粘貼功能。
p ? ?粘貼用x或d刪除的文本?
ynw 復(fù)制n個(gè)單詞
yw ?拷貝一個(gè)單詞,含單詞后面的空白字符
?
ye ? 拷貝一個(gè)單詞,不含空格
yy ? 拷貝一個(gè)整行
y$ ? 拷貝到行尾
nyy ? ? 復(fù)制光標(biāo)所在的向下n行,這里n代表數(shù)字,比如20yy
y1G ? ?復(fù)制光標(biāo)所在行到一行到第一行的所有數(shù)據(jù)
yG ? ? ?復(fù)制光標(biāo)所在行到一行到最后一行的所有數(shù)據(jù)
y0 ? ? ?復(fù)制光標(biāo)所在的那個(gè)字符到該行行首的所有數(shù)據(jù)
?
?
重復(fù)
. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?重復(fù)上一次命令
N<command> ? ? ? ? ?重復(fù)某個(gè)命令N次,這里N是一個(gè)具體的數(shù)字,比如
3p ? ? ? ? ? ? ? ? ? ? ? ? ? 復(fù)制3次
10j ? ? ? ? ? ? ? ? ? ? ? ? ?向下移動(dòng)10行
?
屏幕移動(dòng)
H ? ? 光標(biāo)移動(dòng)到這個(gè)屏幕最上方的那一行的第一個(gè)字符
M ? ?光標(biāo)移動(dòng)到這個(gè)屏幕中央的那一行的第一個(gè)字符
L ? ??光標(biāo)移動(dòng)到這個(gè)屏幕最下方的那一行的第一個(gè)字符
?
?
翻頁/屏幕翻滾
Ctrl-B ? ? 向上翻頁 ?
Ctrl-F ? ??向下翻頁
Ctrl-u ? ??向上半屏
Ctrl-d ? ??向下半屏
注意:Ctrl-B和Ctrl-F前可以加上數(shù)字,表示向上或向下翻多少頁
nz ? ? ? ? ??將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部
?
多窗口間移動(dòng)
使用:sp可以在當(dāng)前vim窗口縱向切割開一個(gè)子窗口,展示相同的內(nèi)容,如果輸入的是:sp /etc/hosts之類的另一個(gè)文件名,則該子窗口打開一個(gè)不同的文件,
:split:分割一個(gè)窗口
?
:split file.c :為另一個(gè)文件file.c分隔窗口
?
?:nsplit file.c: 為另一個(gè)文件file.c分隔窗口,并指定其行數(shù)
?
多文件編輯
?
在一個(gè) vim 程序中打開很多文件進(jìn)行編輯是挺方便的.
?
?
:sp(:vsp) 文件名??? vim 將分割出一個(gè)橫(縱)向窗口, 并在該窗口中打開新文件.
?
????????????????????? 從 vim6.0 開始, 文件名可以是一個(gè)目錄的名稱, 這樣, vim 會(huì)
?
????????????????????? 把該目錄打開并顯示文件列表, 在文件名上按回車則在本窗口打
?
????????????????????? 開該文件, 若輸入 O 則在新窗口中打開該文件, 輸入 ? 可以看
?
????????????????????? 到幫助信息.
?
?
:e 文件名 ? ? ? ?vim 將在原窗口中打開新的文件, 若舊文件編輯過, 會(huì)要求保存.
?
?
c-w-w ? ? ? ? ? ?vim 分割了好幾個(gè)窗口怎么辦? 輸入此命令可以將光標(biāo)循環(huán)定位
?
????????????????????? 到各個(gè)窗口之中.
?
?
:ls???????????????? 此命令查看本 vim 程序已經(jīng)打開了多少個(gè)文件, 在屏幕的最下方
?
????????????????????? 會(huì)顯示出如下數(shù)據(jù):
?
????????????????????? 1?? %a????? "usevim.html"???????? 行 162
?
????????????????????? 2?? #?????? "xxxxxx.html"???????? 行 0
?
?
????????????????????? 其中:
?
????????????????????? 1?????????????? 表示打開的文件序號(hào), 這個(gè)序號(hào)很有用處.
?
????????????????????? %a ? ? ? ? ? ? 表示文件代號(hào),
? ? ? ? ? ? ? ? ? ? ? % 表示當(dāng)前編輯的文件,
?
? ? ? ? ? ? ? ? ? ? ? # 表示上次編輯的文件
?
????????????????????? "usevim.html"?? 表示文件名.
?
????????????????????? 行 162????????? 表示光標(biāo)位置.
?
:b 序號(hào)(代號(hào)) ?此命令將指定序號(hào)(代號(hào))的文件在本窗口打開, 其中的序號(hào)(代號(hào))
?
????????????????????? 就是用 :ls 命令看到的.
?
?
:set diff?????????? 此命令用于比較兩個(gè)文件, 可以用
?
????????????????????? :vsp filename
?
????????????????????? 命令打開另一個(gè)文件, 然后在每個(gè)文件窗口中輸入此命令,就能看到效果了.
?
我們可以利用下面的命令在多個(gè)子窗口間移動(dòng)
Ctrl-W ? ? ? ? ? ? ?在窗口中切換
Ctrl-W h/j/k/l ? ? ?在多個(gè)窗口間左下上右移動(dòng) ??
Ctrl-W q ? ? ? ? ? ?關(guān)閉子窗口
Ctrl-W H/J/K/L ? ?上下左右移動(dòng)窗口的命令
?
相對于光標(biāo)滾屏
zt ? 把光標(biāo)所在行移動(dòng)到窗口的頂端
zz ??把光標(biāo)所在行移動(dòng)到窗口的中間
zb ?把光標(biāo)所在行移動(dòng)到窗口的底部
?
模式切換
v ? ? ? ? ? ? ? 字符選擇,會(huì)將光標(biāo)經(jīng)過的地方反白選擇
Shift+V ? ? ?進(jìn)入行選擇模式(就是大寫的V)
Ctrl+V ? ? ? ?進(jìn)入列選擇或是塊選擇模式,或可視塊(visual block)
Shift+I ? ? ? ?進(jìn)入列插入狀態(tài)
Shift+a ? ? ??進(jìn)入塊插入狀態(tài)
y ? ? ? ? ? ? ? 將反白的地方復(fù)制出來
p ? ? ? ? ? ? ? 粘貼反白的地方
d ? ? ? ? ? ? ? 刪除反白的地方
?
visual 模式:
?
????v:進(jìn)入visual 模式
?
????V:進(jìn)入行的visual 模式
?
????ctrl+v:進(jìn)如塊操作模式用o和O改變選擇的邊的大小
?
????在所有行插入相同的內(nèi)容如include<,操作方法如下:
?
????將光標(biāo)移到開始插入的位置,按CTRL+V進(jìn)入VISUAL模式,選擇好模塊后按I(shift+i),后插入要插入的文本,按[ESC]完成
?
多文件編輯
可以使用vim來同時(shí)打開多個(gè)vim文件并進(jìn)行編輯,比如vim ?hosts /etc/hosts來同時(shí)打開這兩個(gè)文件,以便于我們在多個(gè)文件之間復(fù)制數(shù)據(jù)
:n ? ? ? ? 編輯下一個(gè)文件
:N ? ? ? ?編輯上一個(gè)文件
:files ? ? 列出目前這個(gè)vim打開的所有文件
?
一般模式切換到編輯模式的按鈕
i ? ? ?(insert mode) ? ? ? 從當(dāng)前光標(biāo)處(光標(biāo)前)插入
I ? ???(insert mode) ? ? ? 從當(dāng)前行的第一個(gè)非空格符處開始插入(當(dāng)前行首)
a ? ??(insert mode) ? ? ? 從當(dāng)前光標(biāo)的下一個(gè)字符開始插入(光標(biāo)后)
A ? ??(insert mode) ? ? ?從當(dāng)前行的最后一個(gè)字符開始插入(當(dāng)前行首)
o ? ??(insert mode) ? ? ?從當(dāng)前光標(biāo)所在行之下插入新的一行
O ? ??(insert mode) ? ??從當(dāng)前光標(biāo)所在行之上插入新的一行
r ? ??(replace mode) ? ?替換光標(biāo)所在的字符一次
R ? ?(replace mode) ? ?替換當(dāng)前字符及其后的字符,直至按ESC鍵
s ? ?從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符
?
S ? ?刪除指定數(shù)目的行,并以所輸入文本代替之?
ncw或nCW ? ?修改指定數(shù)目的詞
?
nCC ? 修改指定數(shù)目的行
ESC ? 退出編輯模式,回到一般模式normal mode
?
一般模式切換到命令行模式的按鈕
:w ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 將數(shù)據(jù)寫入磁盤文件
:w! ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?強(qiáng)制將數(shù)據(jù)寫入磁盤文件,寫入是否成功由文件權(quán)限決定
:e filename ? ? ? ? ? ? ? ? ? 打開文件filename進(jìn)行編輯
?
:e! ? ? ? ?放棄修改文件內(nèi)容,重新載入該文件編輯
:q ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?離開vim
:q! ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 強(qiáng)制離開vim,不保存修改后的文件
:wq ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 保存文件后離開vim
:wq! ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?強(qiáng)制保存后離開vim
ZZ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?若文件沒有修改,不保存離開;否則,保存后離開
ZQ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不保存退出
:w [filename] ? ? ? ? ? ? ? ? ? 另存文件
:r [filename] ? ? ? ? ? ? ? ? ? ? 將filename文件的數(shù)據(jù)加到當(dāng)前光標(biāo)所在行后面
:n1,n2w [filename] ? ? ? ? ? 將n1和n2行之間的內(nèi)容另存為filename文件
:!command ? ? ? ? ? ? ? ? ? ? 暫離開vim,到命令行模式下顯示command執(zhí)行的結(jié)果
:r!command:將命令command的輸出結(jié)果放到當(dāng)前行
?
:n1,n2 write temp.c 將本文件中的n1,到n2行寫入temp.c這個(gè)文件中去
?
:read file.c 將文件file.c的內(nèi)容插入到當(dāng)前光標(biāo)所在的下面
?
:0read file.c 將文件file.c的內(nèi)容插入到當(dāng)前文件的開始處(第0行)
?
:nread file.c 將文件file.c的內(nèi)容插入到當(dāng)前文件的第n行后面
?
:read !cmd :將外部命令cmd的輸出插如到當(dāng)前光標(biāo)所在的下面
?
自動(dòng)補(bǔ)全
Crtl+N ? 下一個(gè)備選word
Ctrl+P ? 上一個(gè)備選word
Ctrl+X ? 自動(dòng)補(bǔ)全tag名
Ctrl+F
?
進(jìn)入vim的命令:???
?
vim filename :打開或新建文件,并將光標(biāo)置于第一行首
?
vim +n filename :打開文件,并將光標(biāo)置于第n行首
?
vim + filename :打開文件,并將光標(biāo)置于最后一行首
?
vim +/pattern filename:打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
?
vim -r filename :在上次正用vim編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
?
vim filename….filename :打開多個(gè)文件,依次編輯
?
宏:
?
?q[a-z] ?開始記錄但前開始的操作為宏,名稱可為【a-z】,然后用q終止錄制宏
?
?reg ? 顯示當(dāng)前定義的所有的宏,用@[a-z]來在當(dāng)前光標(biāo)處執(zhí)行宏[a-z]
?
幫助:
?
????:help :查看幫助文檔,在這之中,按CTRL+] 進(jìn)入超連接,按CTRL+O 返回。
?
????:help subject :看某一主題的幫助,ZZ 退出幫助
?
其它常用:
????:newtab ??新建標(biāo)簽
????:gt ??轉(zhuǎn)至下一個(gè)標(biāo)簽
????:gT ??轉(zhuǎn)到上一個(gè)標(biāo)簽
????:au GUIEnter * simalt ~x ??啟動(dòng)時(shí)最大化
?
書簽:
?
????m[a-z]:在文中做標(biāo)記,標(biāo)記號(hào)可為a-z的26個(gè)字母
?
????`a:移動(dòng)到標(biāo)記a處
?
?
"剪貼板" 緩沖-??? ' "xY ' 用于剪切或復(fù)制到一個(gè)名為x的緩沖區(qū)(Y 代表任何的
?
刪除或取樣命令), ' "xZ ' 用于粘貼內(nèi)容(Z代表粘貼命令p 或 P); (其中x可以為
?
任何字母, 也可在跳轉(zhuǎn)到另一文件中時(shí)繼續(xù)生效(:e filename).
?
快速輸入字符
?? 在 vi 中, 不要求你輸入每一個(gè)字符, 可以有很多種方法快速輸入一些字符.
?
?? 使用 linux/unix 的同學(xué)一定有一個(gè)經(jīng)驗(yàn), 在命令行下輸入命令時(shí)敲入頭幾個(gè)字符再按
?
TAB 系統(tǒng)就會(huì)自動(dòng)將剩下的字符補(bǔ)齊, 假如有多個(gè)匹配則會(huì)打印出來. 這就是著名的命令
?
補(bǔ)齊(其實(shí)windows中也有文件名補(bǔ)齊功能). vi 中有許多的字符串補(bǔ)齊命令, 非常方便.
?
c-p(c-n) ? ? 在編輯模式中, 輸入幾個(gè)字符后再輸入此命令則 vi 開始向上(下)搜索開頭與其匹配的單詞并補(bǔ)齊, 不斷輸入此命令則循環(huán)查找. 此命令會(huì)在所有在這個(gè) vim 程序中打開的文件中進(jìn)行匹配.
?
c-x-l ? ? ? 在編輯模式中, 此命令快速補(bǔ)齊整行內(nèi)容, 但是僅在本窗口中出現(xiàn)的文檔中進(jìn)行匹配.
?
c-x-f ? ? 在編輯模式中, 這個(gè)命令表示補(bǔ)齊文件名. 如輸入:?/usr/local/tom 后再輸入此命令則它會(huì)自動(dòng)匹配出:?/usr/local/tomcat/
?
abbr ? ? 即縮寫. 這是一個(gè)宏操作, 可以在編輯模式中用一個(gè)縮寫代替另一個(gè)字符串. 比如編寫java文件的常常輸入 System.out.println, 這很是麻煩, 所以應(yīng)該用縮寫來減少敲字. 可以這么做:
?:abbr sprt System.out.println?
?以后在輸入sprt后再輸入其他非字母符號(hào), 它就會(huì)自動(dòng)擴(kuò)展為System.out.println
?
?
8. 宏替換
?
?? vi 不僅可以用 abbr 來替換文字, 也可以進(jìn)行命令的宏定義. 有些命令輸起來很費(fèi)勁,
?
因此我把它們定義到 <F1>-<F12> 上, 這樣就很方便了.這些配置可以預(yù)先寫到 ~/.vimrc
?
(windows 下為 $VIM/_vimrc) 中, 寫進(jìn)去的時(shí)候不用寫前面的冒號(hào).
?
?
? :nmap <F2> :nohls<cr> ? ? ? ? ? ? ? ? 取消被搜索字串的高亮
?
? :nmap <F9> <C-W>w????????????????? 命令模式下轉(zhuǎn)移光標(biāo)到不同窗口
?
? :imap <F9> <ESC><F9>?????????????? 輸入模式下運(yùn)行<F9>
?
? :nmap <F12> :%s= *$==<cr> ? ? ? 刪除所有行尾多余的空格.
?
? :imap <F12> <ESC><F12> ? ? ? ? ? ?同上
?
?
? :java 中: (注, 這里為什么說 java 中, 因?yàn)橐韵露x對其他文件格式不起作用, 下文會(huì)說到如何實(shí)現(xiàn)這一點(diǎn))
?
? :nmap <F3> :comp javac<CR>:mak -d . %<CR>
?
?????? 此命令用 javac 編譯 java 文件, 它會(huì)自動(dòng)將光標(biāo)定位到出錯(cuò)點(diǎn). 不過這需要定
?
?????? 義一個(gè) javac.vim 文件在 $VIM/compiler 下, 在 javac.vim 里面只有兩行字:
?
????????? setlocal makeprg=javac
?
????????? setlocal errorformat=%A%f:%l:/ %m,%-Z%p^,%-C%.%#
?
?
? :nmap <F4> :comp ant<CR>:mak<CR>
?
?????? 此命令用 ant 編譯 java 文件, 它會(huì)自動(dòng)將光標(biāo)定位到出錯(cuò)點(diǎn). 一般來說, 安裝
?
?????? vim 后已經(jīng)有了compiler/ant.vim文件, 因此這個(gè)命令可以直接使用. 但是需要
?
?????? 在當(dāng)前目錄下有 build.xml 文件, 當(dāng)然還必須安裝 ant 才行.
?
?
? :nmap <F5> :cl<CR>???????????????? 此命令用于查看所有的編譯錯(cuò)誤.
?
? :imap <F5> <ESC><F5>
?
?
? :nmap <F6> :cc<CR>???????????????? 此命令用于查看當(dāng)前的編譯錯(cuò)誤.
?
? :imap <F6> <ESC><F6>
?
?
? :nmap <F7> :cn<CR>???????????????? 此命令用于跳到下一個(gè)出錯(cuò)位置.
?
? :imap <F7> <ESC><F7>
?
?
? :nmap <F8> :cp<CR>???????????????? 此命令用于跳到上一個(gè)出錯(cuò)位置.
?
? :imap <F8> <ESC><F8>
?
?
? :nmap <F11> :JavaBrowser<cr>
?
?????? 此命令用于在窗口左部分割出一個(gè)新窗口, 里面的內(nèi)容是 java 的資源樹, 包括
?
?????? 本文件中出現(xiàn)的類, 類的成員變量及成員方法, 就好像 JCreator 表現(xiàn)的那樣.
?
?????? 在這個(gè)窗口中輸入 ? 會(huì)看到幫助. 嘿嘿, 很好用, 不過需要 ctags 支持.
?
? :imap <F11> <ESC><F11>
?
?
9. TAB
?
?? TAB 就是制表符, 單獨(dú)拿出來做一節(jié)是因?yàn)檫@個(gè)東西確實(shí)很有用.
?
?
?? <<????????????????? 輸入此命令則光標(biāo)所在行向左移動(dòng)一個(gè) tab.
?
?? >>????????????????? 輸入此命令則光標(biāo)所在行向右移動(dòng)一個(gè) tab.
?
?? 5>>???????????????? 輸入此命令則光標(biāo)后 5 行向右移動(dòng)一個(gè) tab.
?
?? :12,24>???????????? 此命令將12行到14行的數(shù)據(jù)都向右移動(dòng)一個(gè) tab.
?
?? :12,24>>??????????? 此命令將12行到14行的數(shù)據(jù)都向右移動(dòng)兩個(gè) tab.
?
?
?? 那么如何定義 tab 的大小呢? 有人愿意使用 8 個(gè)空格位, 有人用4個(gè), 有的用2個(gè).
?
?? 有的人希望 tab 完全用空格代替, 也有的人希望 tab 就是 tab. 沒關(guān)系, vim 能
?
?? 幫助你.以下的設(shè)置一般也都先寫入配置文件中, 免得老敲.
?
?
?? :set shiftwidth=4?? 設(shè)置自動(dòng)縮進(jìn) 4 個(gè)空格, 當(dāng)然要設(shè)自動(dòng)縮進(jìn)先.
?
?? :set sts=4????????? 即設(shè)置 softtabstop 為 4. 輸入 tab 后就跳了 4 格.
?
?? :set tabstop=4????? 實(shí)際的 tab 即為 4 個(gè)空格, 而不是缺省的 8 個(gè).
?
?? :set expandtab????? 在輸入 tab 后, vim 用恰當(dāng)?shù)目崭駚硖畛溥@個(gè) tab.
?
?
10. autocmd
?
??? 這個(gè)命令十分的強(qiáng)大, 可以用這個(gè)命令實(shí)現(xiàn)對不同的文件格式應(yīng)用不同的配置; 可以
?
在新建文件時(shí)自動(dòng)添加上版權(quán)聲明等等. 這些命令一般定義在 ~/.vimrc 這樣的配置文件
?
里面. 由于他很強(qiáng)大, 所以我不能給出很具體的說明, 只能舉幾個(gè)例子, 詳細(xì)的請看幫助.
?
?
? :autocmd!?????????????? 刪除所有之前的自動(dòng)命令.
?
? autocmd FileType??????? java? source ~/.vim/files/java.vim
?
? autocmd FileType??????? java? source ~/.vim/files/jcommenter.vim
?
??? 以上兩條命令讓我在打開 java 文件時(shí)才應(yīng)用后面提到的兩個(gè)配置文件.
?
? autocmd BufNewFile????? *.java? 0r ~/.vim/files/skeletons/java.skel
?
??? 以上這條命令讓我在新建 java 文件時(shí)自動(dòng)加入 java.skel 文件的內(nèi)容.
?
? autocmd BufNewFile????? *.java? normal gnp
?
??? 以上這條命令讓我在新建 java 文件時(shí)自動(dòng)運(yùn)行 gnp 命令, 這個(gè)命令進(jìn)行一些特殊化
?
??? 處理, 比如將新 java 文件中的 __date__ 替換成今天的日期什么的.
?
?
?
總結(jié)
以上是生活随笔為你收集整理的vim学习笔记(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Weiss的数据结构与算法分析(C++版
- 下一篇: vim学习笔记(一)