vi 是個(gè)文本編輯器,所有 UNIX Like 系統(tǒng)都會(huì)內(nèi)置這個(gè)編輯器
vim 是 vi 的強(qiáng)加版,其具有程序編輯的能力,可以主動(dòng)以字體顏色辨識(shí)語(yǔ)法的正確性。
h 或向左箭頭鍵(←) |
光標(biāo)向左移動(dòng)一個(gè)字符 |
j 或向下箭頭鍵(↓) |
光標(biāo)向下移動(dòng)一個(gè)字符 |
k 或向上箭頭鍵(↑) |
光標(biāo)向上移動(dòng)一個(gè)字符 |
l 或向右箭頭鍵(→) |
光標(biāo)向右移動(dòng)一個(gè)字符 |
如果你將右手放在鍵盤上的話,你會(huì)發(fā)現(xiàn) hjkl是排列在一起的,因此可以使用這四個(gè)按鈕來(lái)移動(dòng)光標(biāo)。如果想要進(jìn)行多次移動(dòng)的話,例如向下移動(dòng) 30行,可以使用 "30j" ?或 "30↓"的組合按鍵,亦即加上想要進(jìn)行的次數(shù)(數(shù)字)后,按下動(dòng)作即可. | |
[Ctrl] + [f] |
屏幕[向下]移動(dòng)一頁(yè),相當(dāng)于 [Page Down]按鍵 (常用) |
[Ctrl] + [b] |
屏幕[向上]移動(dòng)一頁(yè),相當(dāng)于 [Page Up]按鍵 (常用) |
[Ctrl] + [d] |
屏幕[向下]移動(dòng)半頁(yè) |
[Ctrl] + [u] |
屏幕[向上]移動(dòng)半頁(yè) |
+ |
光標(biāo)移動(dòng)到非空格符的下一列 |
- |
光標(biāo)移動(dòng)到非空格符的上一列 |
n<space> |
那個(gè) n 表示[數(shù)字],例如 20。按下數(shù)字后再按空格鍵,光標(biāo)會(huì)向右移動(dòng)這一行的 ? n 個(gè)字符。例如 20<space>則光標(biāo)會(huì)向后面移動(dòng) 20 ?個(gè)字符距離。 |
0 或功能鍵[Home] |
這是數(shù)字[ 0 ]:移動(dòng)到這一行的最前面字符處 (常用) |
$ 或功能鍵[End] |
移動(dòng)到這一行的最后面字符處(常用) |
H |
光標(biāo)移動(dòng)到這個(gè)屏幕的最上方那一行的第一個(gè)字符 |
M |
光標(biāo)移動(dòng)到這個(gè)屏幕的中央那一行的第一個(gè)字符 |
L |
光標(biāo)移動(dòng)到這個(gè)屏幕的最下方那一行的第一個(gè)字符 |
G |
移動(dòng)到這個(gè)檔案的最后一行(常用) |
nG |
n 為數(shù)字。移動(dòng)到這個(gè)檔案的第 n行。例如 20G ?則會(huì)移動(dòng)到這個(gè)檔案的第 20行(可配合 :set nu) |
gg |
移動(dòng)到這個(gè)檔案的第一行,相當(dāng)于 1G啊. (常用) |
n<Enter> |
n 為數(shù)字。光標(biāo)向下移動(dòng) n行(常用) |
/word |
向光標(biāo)之下尋找一個(gè)名稱為 word的字符串。例如要在檔案內(nèi)搜尋 asde ?這個(gè)字符串,就輸入 /asde即可. (常用) |
?word |
向光標(biāo)之上尋找一個(gè)字符串名稱為 word的字符串。 |
n |
這個(gè) n 是英文按鍵。代表[重復(fù)前一個(gè)搜尋的動(dòng)作]。舉例來(lái)說(shuō),如果剛剛我們執(zhí)行 /asde去向下搜尋 ? asde 這個(gè)字符串,則按下 n后,會(huì)向下繼續(xù)搜尋下一個(gè)名稱為 asde ?的字符串。如果是執(zhí)行 ?asde的話,那么按下 n ?則會(huì)向上繼續(xù)搜尋名稱為 asde的字符串. |
N |
這個(gè) N 是英文按鍵。與 n剛好相反,為[反向]進(jìn)行前一個(gè)搜尋動(dòng)作。例如 ? /asde后,按下 N 則表示[向上]搜尋 asde。 |
使用 /word ?配合 n 及 N是非常有幫助的.可以讓你重復(fù)的找到一些你搜尋的關(guān)鍵詞. | |
:n1,n2s/word1/word2/g |
n1 與 n2為數(shù)字。在第 n1 ?與 n2行之間尋找 word1 ?這個(gè)字符串,并將該字符串取代為 word2 .舉例來(lái)說(shuō),在 100到 200 ?行之間搜尋 asde并取代為 ASDE ?則: |
:1,$s/word1/word2/g |
從第一行到最后一行尋找 word1字符串,并將該字符串取代為 word2 .(常用) |
:1,$s/word1/word2/gc |
從第一行到最后一行尋找 word1字符串,并將該字符串取代為 word2 .且在取代前顯示提示字符給用戶確認(rèn) (confirm)是否需要取代.(常用) |
x, X |
在一行字當(dāng)中,x ?為向后刪除一個(gè)字符 (相當(dāng)于 [del]按鍵), X為向前刪除一個(gè)字符(相當(dāng)于 ? [backspace]亦即是退格鍵) (常用) |
nx |
n 為數(shù)字,連續(xù)向后刪除 n個(gè)字符。舉例來(lái)說(shuō),我要連續(xù)刪除 10 ?個(gè)字符, [10x]。 |
dd |
刪除游標(biāo)所在的那一整列(常用) |
ndd |
n 為數(shù)字。刪除光標(biāo)所在的向下 n列,例如 20dd ?則是刪除 20列 (常用) |
d1G |
刪除光標(biāo)所在到第一行的所有數(shù)據(jù) |
dG |
刪除光標(biāo)所在到最后一行的所有數(shù)據(jù) |
d$ |
刪除游標(biāo)所在處,到該行的最后一個(gè)字符 |
d0 |
那個(gè)是數(shù)字的 0 ?,刪除游標(biāo)所在處,到該行的最前面一個(gè)字符 |
yy |
復(fù)制游標(biāo)所在的那一行(常用) |
nyy |
n 為數(shù)字。復(fù)制光標(biāo)所在的向下 n列,例如 20yy ?則是復(fù)制 20列(常用) |
y1G |
復(fù)制游標(biāo)所在列到第一列的所有數(shù)據(jù) |
yG |
復(fù)制游標(biāo)所在列到最后一列的所有數(shù)據(jù) |
y0 |
復(fù)制光標(biāo)所在的那個(gè)字符到該行行首的所有數(shù)據(jù) |
y$ |
復(fù)制光標(biāo)所在的那個(gè)字符到該行行尾的所有數(shù)據(jù) |
p, P |
p 為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P則為貼在游標(biāo)上一行. ?舉例來(lái)說(shuō),目前光標(biāo)在第 20行,且已經(jīng)復(fù)制了 10 ?行數(shù)據(jù)。則按下 p后,那 10 ?行數(shù)據(jù)會(huì)貼在原本的 20行之后,亦即由 21 ?行開始貼。但如果是按下 P呢?那么原本的第 20 ?行會(huì)被推到變成 30行。 (常用) |
J |
將光標(biāo)所在列與下一列的數(shù)據(jù)結(jié)合成同一列 |
c |
重復(fù)刪除多個(gè)數(shù)據(jù),例如向下刪除 10行,[ 10cj ] |
u |
復(fù)原前一個(gè)動(dòng)作。(常用) |
[Ctrl]+r |
重做上一個(gè)動(dòng)作。(常用) |
. |
意思是重復(fù)前一個(gè)動(dòng)作的意思。如果你想要重復(fù)刪除、重復(fù)貼上等等動(dòng)作,按下小數(shù)點(diǎn)[.]就好了. (常用) |
i, I |
進(jìn)入插入模式(Insert mode): |
a, A |
進(jìn)入插入模式(Insert mode): |
o, O |
進(jìn)入插入模式(Insert mode): |
r, R |
進(jìn)入取代模式(Replace mode): |
上面這些按鍵中,在 vi ?畫面的左下角處會(huì)出現(xiàn)[--INSERT--]或[--REPLACE--]的字樣。特別注意的是,我們上面也提過(guò)了,你想要在檔案里面輸入字符時(shí),一定要在左下角處看到 INSERT或 REPLACE ?才能輸入 | |
[Esc] |
退出編輯模式,回到一般模式中(常用) |
:w |
將編輯的數(shù)據(jù)寫入硬盤檔案中(常用) |
:w! |
若文件屬性為[只讀]時(shí),強(qiáng)制寫入該檔案。不過(guò),到底能不能寫入,還是跟你對(duì)該檔案的檔案權(quán)限有關(guān)啊. |
:q |
離開 vi (常用) |
:q! |
若曾修改過(guò)檔案,又不想儲(chǔ)存,使用 !為強(qiáng)制離開不儲(chǔ)存檔案。 |
注意一下啊,那個(gè)驚嘆號(hào) (!)在 vi ?當(dāng)中,常常具有[強(qiáng)制]的意思~ | |
:wq |
儲(chǔ)存后離開,若為 :wq! ?則為強(qiáng)制儲(chǔ)存后離開 (常用) |
ZZ |
若檔案沒(méi)有更動(dòng),則不儲(chǔ)存離開,若檔案已經(jīng)被更動(dòng)過(guò),則儲(chǔ)存后離開. |
:w [filename] |
將編輯的數(shù)據(jù)儲(chǔ)存成另一個(gè)檔案(類似另存新檔) |
:r [filename] |
在編輯的數(shù)據(jù)中,讀入另一個(gè)檔案的數(shù)據(jù)。亦即將 [filename]這個(gè)檔案內(nèi)容加到游標(biāo)所在行后面 |
:n1,n2 w [filename] |
將 n1 到 n2的內(nèi)容儲(chǔ)存成 filename ?這個(gè)檔案。 |
:! command |
暫時(shí)離開 vi ?到指令列模式下執(zhí)行 command 的顯示結(jié)果.例如 |
vim環(huán)境設(shè)定與參數(shù)
:set nu |
就是設(shè)定與取消行號(hào)啊. |
:set hlsearch |
hlsearch 就是 high light search(高亮度搜尋)。這個(gè)就是設(shè)定是否將搜尋的字符串反白的設(shè)定值。默認(rèn)值是 hlsearch |
:set autoindent |
是否自動(dòng)縮排?autoindent就是自動(dòng)縮排。 |
:set backup |
是否自動(dòng)儲(chǔ)存?zhèn)浞輽n?一般是 nobackup的,如果設(shè)定 backup ?的話,那么當(dāng)你更動(dòng)任何一個(gè)檔案時(shí),則源文件會(huì)被另存成一個(gè)檔名為 filename~的檔案。舉例來(lái)說(shuō),我們編輯 hosts ?,設(shè)定 :set backup,那么當(dāng)更動(dòng) hosts ?時(shí),在同目錄下,就會(huì)產(chǎn)生 hosts~文件名的檔案,記錄原始的 hosts ?檔案內(nèi)容 |
:set ruler |
還記得我們提到的右下角的一些狀態(tài)欄說(shuō)明嗎?這個(gè) ruler就是在顯示或不顯示該設(shè)定值的 . |
:set showmode |
這個(gè)則是,是否要顯示 --INSERT--之類的字眼在左下角的狀態(tài)欄。 |
:set backspace=(012) |
一般來(lái)說(shuō),如果我們按下 i ?進(jìn)入編輯模式后,可以利用退格鍵 (backspace) 來(lái)刪除任意字符的。但是,某些 distribution則不許如此。此時(shí),我們就可以透過(guò) backspace ?來(lái)設(shè)定當(dāng) backspace為 2 ?時(shí),就是可以刪除任意值;0或 1 ?時(shí),僅可刪除剛剛輸入的字符,而無(wú)法刪除原本就已經(jīng)存在的文字了. |
:set all |
顯示目前所有的環(huán)境參數(shù)設(shè)定值。 |
:set |
顯示與系統(tǒng)默認(rèn)值不同的設(shè)定參數(shù),一般來(lái)說(shuō)就是你有自行變動(dòng)過(guò)的設(shè)定參數(shù) . |
:syntax on |
是否依據(jù)程序相關(guān)語(yǔ)法顯示不同顏色舉例來(lái)說(shuō),在編輯一個(gè)純文本檔時(shí),如果開頭是以 #開始,那么該行就會(huì)變成藍(lán)色。如果你懂得寫程序,那么這個(gè) :syntax on ?還會(huì)主動(dòng)的幫你除錯(cuò)呢.但是,如果你僅是編寫純文本檔案,要避免顏色對(duì)你的屏幕產(chǎn)生的干擾,則可以取消這個(gè)設(shè)定。 |
:set bg=dark |
可用以顯示不同的顏色色調(diào),預(yù)設(shè)是[ light ]。如果你常常發(fā)現(xiàn)批注的字體深藍(lán)色實(shí)在很不容易看,那么這里可以設(shè)定為 dark.看看,會(huì)有不同的樣式呢. |
說(shuō)明:如果不想每次都進(jìn)行設(shè)置 VIM 環(huán)境,可以講環(huán)境命令添加到~/.vimrc 中(此文件需自行創(chuàng)建)
[root@localhost ~]# vim ~/.vimrc
set hlsearch
set backspace=2
set autoindent
set ruler
set showmode
set nu
set bg=dark
syntax on
以下圖列出常用命令
http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/images/2.jpg" alt="" />
經(jīng)常通過(guò)文本編輯器查看文字時(shí)會(huì)出現(xiàn)亂碼,出現(xiàn)亂碼的主要原因是環(huán)境的語(yǔ)系編碼與文件的編碼不一致導(dǎo)致的,比如系統(tǒng)語(yǔ)系是繁體中文(big5),文件語(yǔ)系是簡(jiǎn)體中文(gb2312)。 可以通過(guò)2種方式解決問(wèn)題 1:設(shè)置系統(tǒng)語(yǔ)系編碼 [root@localhost ~]# LANG GB2312 2:語(yǔ)系轉(zhuǎn)為和系統(tǒng)一致 語(yǔ)法:iconv --list iconv –f 原編碼 –t 新編碼 filename [-o newfile] 選項(xiàng)與參數(shù): --list:列出支持的語(yǔ)系 -f:原編碼 -t:新編碼 -o file:保留源文件 file 為新文件名