這兩天稍微了解一下vim更多的命令茵乱,其實(shí)常用的就那么幾種桨吊,記住夠用就行,但不一定會(huì)遇到什么新的問(wèn)題或者想更豐富一下自己對(duì)vim的認(rèn)識(shí)缅茉,可以參考一下嘴脾。
一、vim命令:
1.標(biāo)簽命令
:tabe fn???? 在一個(gè)新的標(biāo)簽頁(yè)中編輯文件fn
gt???? 切換到下一個(gè)標(biāo)簽頁(yè)
gT???? 切換到上一個(gè)標(biāo)簽頁(yè)
:tabr???? 切換到第一個(gè)標(biāo)簽頁(yè)
:tabl???? 切換到最后一個(gè)標(biāo)簽頁(yè)
:tabm [N]???? 把當(dāng)前tab移動(dòng)到第N個(gè)tab之后
對(duì)蔬墩,正如你所想象的那樣译打,跟eclipse, ue等的標(biāo)簽頁(yè)是一個(gè)意思!
2.窗口命令
ctrl+w s???? 水平分割窗口
ctrl+w w???? 切換窗口
ctrl+w q???? 退出當(dāng)前窗口(由于同時(shí)有多個(gè)文件拇颅,此命令不會(huì)影響其他窗口)
ctrl+w v???? 垂直分割窗口
3.退出編輯器
:w???? 將緩沖區(qū)寫入文件奏司,即保存修改
:wq???? 保存修改并退出
:x???? 保存修改并退出
:q???? 退出,如果對(duì)緩沖區(qū)進(jìn)行過(guò)修改樟插,則會(huì)提示
:q!???? 強(qiáng)制退出韵洋,放棄修改
4.查找替換
/pattern???? 向后搜索字符串pattern
?pattern???? 向前搜索字符串pattern
n???? 下一個(gè)匹配(如果是/搜索,則是向下的下一個(gè)岸夯,?搜索則是向上的下一個(gè))
N???? 上一個(gè)匹配(同上)
:%s/old/new/g???? 搜索整個(gè)文件麻献,將所有的old替換為new
:%s/old/new/gc???? 搜索整個(gè)文件,將所有的old替換為new猜扮,每次都要你確認(rèn)是否替換
5.復(fù)制粘貼
dd???? 刪除光標(biāo)所在行
dw???? 刪除一個(gè)字(word)
x???? 刪除當(dāng)前字符
X???? 刪除前一個(gè)字符
D???? 刪除到行末
yy???? 復(fù)制一行勉吻,此命令前可跟數(shù)字,標(biāo)識(shí)復(fù)制多行旅赢,如6yy齿桃,表示從當(dāng)前行開始復(fù)制6行
yw???? 復(fù)制一個(gè)字
y$???? 復(fù)制到行末
p???? 粘貼粘貼板的內(nèi)容到當(dāng)前行的下面
P???? 粘貼粘貼板的內(nèi)容到當(dāng)前行的上面
]p???? 有縮進(jìn)的粘貼,vim會(huì)自動(dòng)調(diào)節(jié)代碼的縮進(jìn)
"a???? 將內(nèi)容放入/存入a寄存器煮盼,可以支持多粘貼板
附:比如常用的一個(gè)寄存器就是系統(tǒng)寄存器短纵,名稱為+,所以從系統(tǒng)粘貼板粘貼到vim中的命令為"+p,注意此處的+不表示操作符僵控,二十一個(gè)寄存器香到。
6.移動(dòng)光標(biāo)
在vim中移動(dòng)光標(biāo)跟其他的編輯器中有很大的區(qū)別,不過(guò)一旦學(xué)會(huì)了报破,就會(huì)飛速的在文本中移動(dòng)了悠就。
h,j,k,l???? 上,下充易,左梗脾,右
ctrl-f???? 上翻一頁(yè)
ctrl-b???? 下翻一頁(yè)
%???? 跳到與當(dāng)前括號(hào)匹配的括號(hào)處,如當(dāng)前在{盹靴,則跳轉(zhuǎn)到與之匹配的}處
w???? 跳到下一個(gè)字首炸茧,按標(biāo)點(diǎn)或單詞分割
W???? 跳到下一個(gè)字首瑞妇,長(zhǎng)跳,如end-of-line被認(rèn)為是一個(gè)字
e???? 跳到下一個(gè)字尾
E???? 跳到下一個(gè)字尾梭冠,長(zhǎng)跳
b???? 跳到上一個(gè)字
B???? 跳到上一個(gè)字辕狰,長(zhǎng)跳
0???? 跳至行首,不管有無(wú)縮進(jìn)妈嘹,就是跳到第0個(gè)字符
^???? 跳至行首的第一個(gè)字符
$???? 跳至行尾
gg???? 跳至文件的第一行
gd???? 跳至當(dāng)前光標(biāo)所在的變量的聲明處
[N]G???? 跳到第N行柳琢,如0G,就等價(jià)于gg润脸,100G就是第100行
fx???? 在當(dāng)前行中找x字符柬脸,找到了就跳轉(zhuǎn)至
;???? 重復(fù)上一個(gè)f命令,而不用重復(fù)的輸入fx
tx???? 與fx類似毙驯,但是只是跳轉(zhuǎn)到x的前一個(gè)字符處
Fx???? 跟fx的方向相反
),(???? 跳轉(zhuǎn)到上/下一個(gè)語(yǔ)句
*???? 查找光標(biāo)所在處的單詞倒堕,向下查找
#???? 查找光標(biāo)所在處的單詞,向上查找
`.???? 跳轉(zhuǎn)至上次編輯位置
7.在屏幕上移動(dòng)
H???? 移動(dòng)光標(biāo)到當(dāng)前屏幕上最上邊的一行
M???? 移動(dòng)光標(biāo)到當(dāng)前屏幕上中間的一行
L???? 移動(dòng)光標(biāo)到當(dāng)前屏幕上最下邊的一行
8.書簽
ma???? 把當(dāng)前位置存成標(biāo)簽a
`a???? 跳轉(zhuǎn)到標(biāo)簽a處
9.編輯
r???? 替換一個(gè)字符
J???? 將下一行和當(dāng)前行連接為一行
cc???? 刪除當(dāng)前行并進(jìn)入編輯模式
cw???? 刪除當(dāng)前字爆价,并進(jìn)入編輯模式
c$???? 擦除從當(dāng)前位置至行末的內(nèi)容垦巴,并進(jìn)入編輯模式
s???? 刪除當(dāng)前字符并進(jìn)入編輯模式
S???? 刪除光標(biāo)所在行并進(jìn)入編輯模式
xp???? 交換當(dāng)前字符和下一個(gè)字符
u???? 撤銷
ctrl+r???? 重做
.???? 重復(fù)上一個(gè)編輯命令
~???? 切換大小寫,當(dāng)前字符
g~iw???? 切換當(dāng)前字的大小寫
gUiw???? 將當(dāng)前字變成大寫
guiw???? 將當(dāng)前字變成小寫
>>???? 將當(dāng)前行右移一個(gè)單位
<<???? 將當(dāng)前行左移一個(gè)單位(一個(gè)tab符)
==???? 自動(dòng)縮進(jìn)當(dāng)前行
10.插入模式
i???? 從當(dāng)前光標(biāo)處進(jìn)入插入模式
I???? 進(jìn)入插入模式铭段,并置光標(biāo)于行首
a???? 追加模式骤宣,置光標(biāo)于當(dāng)前光標(biāo)之后
A???? 追加模式,置光標(biāo)于行末
o???? 在當(dāng)前行之下新加一行序愚,并進(jìn)入插入模式
O???? 在當(dāng)前行之上新加一行憔披,并進(jìn)入插入模式
Esc???? 退出插入模式
11.可視模式、標(biāo)記文本
v???? 進(jìn)入可視模式爸吮,單字符模式
V???? 進(jìn)入可視模式芬膝,行模式
ctrl+v???? 進(jìn)入可視模式,列模式形娇,類似于UE的列模式
o???? 跳轉(zhuǎn)光標(biāo)到選中塊的另一個(gè)端點(diǎn)
U???? 將選中塊中的內(nèi)容轉(zhuǎn)成大寫
O???? 跳轉(zhuǎn)光標(biāo)到塊的另一個(gè)端點(diǎn)
aw???? 選中一個(gè)字
ab???? 選中括號(hào)中的所有內(nèi)容锰霜,包括括號(hào)本身
aB???? 選中{}括號(hào)中的所有內(nèi)容
ib???? 選中括號(hào)中的內(nèi)容,不含括號(hào)
iB???? 選中{}中的內(nèi)容桐早,不含{}
12.對(duì)標(biāo)記進(jìn)行動(dòng)作
>???? 塊右移
<???? 塊左移
y???? 復(fù)制塊
d???? 刪除塊
~???? 切換塊中內(nèi)容的大小寫
13.其他
vim在保存之前不會(huì)對(duì)文件做實(shí)際的修改癣缅,只是加載到緩沖區(qū)中,對(duì)文件的編輯其實(shí)是對(duì)緩沖區(qū)的編輯哄酝,直到:w時(shí)才會(huì)存入物理文件友存。
:e file???? 把file加載到新的緩沖區(qū)中
:bn???? 跳轉(zhuǎn)到下一個(gè)緩沖區(qū)
:bd???? 刪除緩沖區(qū)(關(guān)閉文件)
:sp fn???? 分割窗口,并將fn加載到新的窗口中
14.使用宏
:qx???? 開始記錄宏炫七,并將結(jié)果存入寄存器x
q???? 退出記錄模式
@x???? 播放記錄在x寄存器中的宏命令
稍微解釋一下,當(dāng)在normal模式下輸入:qx后钾唬,你對(duì)文本的所有編輯動(dòng)作將會(huì)被記錄下來(lái)万哪,再次輸入q即退出了記錄模
式侠驯,然后輸入@x對(duì)剛才記錄下來(lái)的命令進(jìn)行重復(fù),此命令后可跟數(shù)字奕巍,表示要重復(fù)多少次吟策,比如@x20,可以重復(fù)20次的止。這個(gè)在文本的批處理中是非常有用的檩坚。
同時(shí)編輯多個(gè)文件
在vim眾多的插件中,有一個(gè)叫minibuffer的插件诅福,就是下面所說(shuō)的標(biāo)簽頁(yè)功能了匾委,可以支持同時(shí)編輯多個(gè)文件。
二氓润、cat命令詳解
cat主要有三大功能:
1.一次顯示整個(gè)文件赂乐。$ cat?filename
2.從鍵盤創(chuàng)建一個(gè)文件。$ cat?>?filename
只能創(chuàng)建新文件,不能編輯已有文件.
3.將幾個(gè)文件合并為一個(gè)文件: $cat?file1?file2 > file
參數(shù):
-n 或 --number 由 1 開始對(duì)所有輸出的行數(shù)編號(hào)
-b 或 --number-nonblank 和 -n 相似咖气,只不過(guò)對(duì)于空白行不編號(hào)
-s 或 --squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行挨措,就代換為一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的檔案內(nèi)容加上行號(hào)后輸入 textfile2 這個(gè)檔案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(hào)(空白行不加)之后將內(nèi)容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
把test.txt文件扔進(jìn)垃圾箱崩溪,賦空值test.txt
cat /dev/null > /etc/test.txt