自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

最詳細(xì)的 Vi 編輯器使用指南

開發(fā) 開發(fā)工具
VI編輯器是一個(gè)被許多Unix用戶使用的基于屏幕的編輯器。VI編輯器具備強(qiáng)大的功能來幫助程序員, 但是許多初學(xué)者因?yàn)橐鎸?duì)很多不同的指令而對(duì)使用VI敬而遠(yuǎn)之。寫作本教程的目的就是要幫助初學(xué)者適應(yīng)VI編輯器的使用,當(dāng)然,也有一些小節(jié)的內(nèi)容與VI 的慣用者有關(guān)。

引言

VI編輯器是一個(gè)被許多Unix用戶使用的基于屏幕的編輯器。VI編輯器具備強(qiáng)大的功能來幫助程序員, 但是許多初學(xué)者因?yàn)橐鎸?duì)很多不同的指令而對(duì)使用VI敬而遠(yuǎn)之。寫作本教程的目的就是要幫助初學(xué)者適應(yīng)VI編輯器的使用,當(dāng)然,也有一些小節(jié)的內(nèi)容與VI 的慣用者有關(guān)。在講解的同時(shí)舉出了很多的例子,最佳的學(xué)習(xí)方法就是試著在Unix下運(yùn)行這些例子,并試著舉一反三。在這個(gè)世界上,沒有比自己親自去經(jīng)歷更 好的學(xué)習(xí)方式了。

約定

在本教程中,使用以下的約定:

^X表示一個(gè)控制字符。例如,如果你在教程中看到:^d,其意是你按下了ctrl鍵,然后敲入了相應(yīng)的字母。對(duì)于本例來說,你就按下ctrl鍵,然后敲d。

開始之前

VI編輯器使用全屏幕,因此了解你使用的是何種類型的終端是有必要的。當(dāng)你登錄的時(shí)候,wiliki會(huì)問你的終端是什么。提示信息像這個(gè)樣子:TERM = (vt100)。

如果你知道自己的終端是一個(gè)vt100(或者一個(gè)能夠當(dāng)作vt100用的模擬器),在你登錄的時(shí)候,就為終端類型敲擊回車鍵。如果你有一個(gè)hp終 端,為終端類型輸入“hp”并回車。如果你不確定自己的終端類型,問一個(gè)實(shí)驗(yàn)室的管理員,或者是請別人幫助你設(shè)置正確的終端類型。

如果在登錄的時(shí)候,你犯了一個(gè)錯(cuò)誤,輸入了錯(cuò)誤的終端類型,不要緊張,退出就行了。你可以輸入以下的命令來修補(bǔ)設(shè)置:

首先,告訴你的shell你的終端是何種類型。(如果你不確定你的shell是什么,可以輸入這個(gè)命令:echo $SHELL)。對(duì)于上面已經(jīng)給出的例子,終端類型是“vt100”。用你擁有的任何終端類型去替換它。對(duì)于C shell(/bin/csh),命令是這個(gè):set term=vt100。對(duì)于Bourne Shell(/bin/sh)或者是Korn Shell(/bin/ksh),命令如下:export TERM   TERM=vt100。下一步,用這個(gè)命令重設(shè)你的終端:tset。

現(xiàn)在,終端的類型被正確設(shè)置(希望如此吧),你已經(jīng)準(zhǔn)備好來開始使用VI了。

啟動(dòng)VI編輯器

VI編輯器允許用戶生成新的文件或編輯已存在的文件。啟動(dòng)VI編輯器的命令是:vi,緊接著是文件名。例如,為了要編輯一個(gè)叫做temporary 的文件,你要輸入“vi temporary”并回車。你也可以不用文件名來啟動(dòng)vi,但是當(dāng)你想保存自己的工作的時(shí)候,你必須要告訴VI將要把這些內(nèi)容保存到哪個(gè)文件中。

當(dāng)你第一次啟動(dòng)VI的時(shí)候,你會(huì)看到在屏幕的左邊充滿了波浪號(hào)(像“~”)。在文件結(jié)束之后的任何空行都是如此顯示。在屏幕的底部,文件名被顯示出 來。如果專門指定了一個(gè)已經(jīng)存在的文件,文件的大小也會(huì)被顯示出來,就像這樣:”filename” 21 lines, 385 characters。
如果你指定的文件不存在,系統(tǒng)會(huì)告訴你這是一個(gè)新文件,就像這樣:”newfile” [New file]。

如果你不要文件名而啟動(dòng)VI,當(dāng)VI啟動(dòng)的時(shí)候,屏幕的底部會(huì)是空白。如果屏幕沒有顯示這些預(yù)期的結(jié)果,你的終端類型可能被錯(cuò)誤地設(shè)置了。輸入:q并回車來退出VI,并且修補(bǔ)你的終端類型。如果你不知道怎么做,問一下實(shí)驗(yàn)室管理員。

退出VI

你已經(jīng)知道了如何進(jìn)入VI,了解一下如何退出它也是很好的。VI編輯器有兩種模式,為了退出VI,必須要處于命名(command)模式。敲擊 “Escape”或“Esc”鍵(如果你的終端沒有這個(gè)鍵,可以試試^[,或control-[)來進(jìn)入命名模式。如果在你敲擊“Escape”的時(shí)候, 你已經(jīng)在命令模式之下,不要擔(dān)心。系統(tǒng)會(huì)發(fā)出警告,但是你仍然處于命名模式。

離開VI的命令是:q。當(dāng)處于命名模式之下,輸入冒號(hào)以及“q”,并回車。如果你的文件被修改過了,編輯器會(huì)警告你,同時(shí)也不讓你退出。為了忽略此消息,不保存就退出VI的命令是:q!。它讓你不用保存任何改動(dòng)而退出VI。

當(dāng)然,一般說來,在一個(gè)編輯器中,你還是想保存你做出的改變。保存編輯器內(nèi)容的命令是:w。你可以將以上命令和退出命令結(jié)合起來,即:wq。你可以 指定一個(gè)不同的文件名來保存這些內(nèi)容,這是通過在:w之后指定文件名來實(shí)現(xiàn)的。例如,你想將你正在編輯的文件保存為另外一個(gè)叫做filename2的文件 名,你可以輸入: w filename2并回車。

另外一種保存你的改變并退出VI的方法是ZZ命令。在命令模式下,輸入ZZ,它會(huì)做與:wq相同的事情。如果文件的內(nèi)容有任何改變,這些改變會(huì)被保存下來。這是離開編輯器的最容易的方法,只需要敲擊鍵盤兩次。

VI的兩種模式

大多數(shù)用戶了解VI編輯器的第一件事就是它有兩種模式:command(命令)和insert(插入)。command模式允許命令條目來操縱文字。這些命令通常是一個(gè)或兩個(gè)字符長,可以敲幾下鍵盤便被輸入了。insert模式將任何在鍵盤上敲擊的內(nèi)容輸入現(xiàn)在的文件中。
VI是以command模式啟動(dòng)的。有幾個(gè)命令來將VI編輯器轉(zhuǎn)入insert模式。最常用的命令是a和i。這兩個(gè)命令在前面已經(jīng)描述過了。當(dāng)你在 insert模式下時(shí),敲擊退出(Escape)按鈕,你就退出此模式了。如果你的終端沒有這個(gè)鍵, ^[或control-[也行。你可以快速敲兩下退出(Escape)按鈕,這時(shí)VI肯定會(huì)在command模式之下的。當(dāng)你已經(jīng)在command模式之 下時(shí)敲擊退出(Escape)按鈕并不會(huì)讓編輯器退出command模式。系統(tǒng)會(huì)提醒你已經(jīng)在此模式下了。

#p#

如何在命令模式下輸入命令

命令(command)模式下的命令的格式一般是這樣(括號(hào)中是可選的參數(shù)):[count] command [where]。

大多數(shù)命令只有一個(gè)字符長,包括那些使用控制字符的命令。本節(jié)中描述的命令是在VI編輯器中最經(jīng)常使用的。

count可以是1到9之間的任何一個(gè)。例如,x命令刪除在光標(biāo)之下的那個(gè)字符。如果你在命令模式下輸入23x,會(huì)有23個(gè)字符被刪除。
一些命令使用一個(gè)可選的where參數(shù),你可以指定命令影響到多少行或者是文件的多少部分。where參數(shù)也能夠是任何移動(dòng)光標(biāo)的命令。

一些簡單的VI命令

以下是一個(gè)簡單的命令集合,它們足以讓初學(xué)者起航。也有許多其它的方便的命令,這將在后續(xù)章節(jié)中討論。

  • a:進(jìn)入插入(insert)模式,輸入的字符會(huì)被插入到當(dāng)前光標(biāo)位置之后。如果你指定了數(shù)目(count),插入的所有文字會(huì)被重復(fù)那么多次。

  • h:向左把光標(biāo)移動(dòng)一個(gè)字符的位置。

  • i:進(jìn)入插入(insert)模式,輸入的字符會(huì)被插入到當(dāng)前光標(biāo)位置之前。如果你指定了數(shù)目(count),插入的所有文字會(huì)被重復(fù)那么多次。

  • j:將光標(biāo)向下移動(dòng)一行。

  • k:將光標(biāo)向上移動(dòng)一行。

  • l:向右把光標(biāo)移動(dòng)一個(gè)字符的位置。

  • r:將光標(biāo)所在位置的字符替換掉。指定數(shù)目(count)來替換許多字符。

  • u:撤銷對(duì)文件所作的最后一次修改。再一次輸入u會(huì)恢復(fù)最后一次修改。

  • x:刪除光標(biāo)所在位置的字符。count指出了要?jiǎng)h除多少字符。光標(biāo)之后的字符會(huì)被刪除掉。

VI中的文字緩存

VI編輯器有36個(gè)緩存來存儲(chǔ)文字片,同時(shí)也有一個(gè)通用目的緩存(general purpose buffer)。任何時(shí)候,在文件中,當(dāng)一個(gè)文字塊被刪除或整形,它被放入通用目的緩存中。VI的大多數(shù)用戶很少使用其它緩存,因此在沒有其它緩存的情況 下也能夠活得很快活。如果被指定的話,文字塊也能夠被存儲(chǔ)在其它緩存中。用”命令來指定緩存。在輸入”之后,必須要輸入指明緩存的字母或數(shù)字。例如,命 令:”mdd使用了緩存m,最后的兩個(gè)字符代表刪除當(dāng)前行。類似地,可以使用p或P命令來粘貼文字。”mp在當(dāng)前光標(biāo)位置之后粘貼緩存m的內(nèi)容。對(duì)于之后 兩節(jié)所使用的任何命令,這些緩存被指定用于文字或段落的臨時(shí)存儲(chǔ)。

剪切與整形

用于剪切的常用命令是d。此命令從文件中刪除文字。在這個(gè)命令之前是一個(gè)可選的count,之后是一個(gè)移動(dòng)說明。如果你輸入dd,會(huì)刪除當(dāng)前行。以下是這些命令的一些組合:

  • d^:刪除從行首到當(dāng)前光標(biāo)所在位置的內(nèi)容。

  • d$:刪除從當(dāng)前光標(biāo)所在位置到行末的內(nèi)容。

  • dw:刪除從當(dāng)前光標(biāo)所在位置到字末的內(nèi)容。

  • 3dd:從當(dāng)前光標(biāo)所在位置向下刪除3行。

與d命令的功能類似,y命令從文件中提取文字而不刪除文字。

粘貼

粘貼的命令是p或P。它們的區(qū)別僅在于當(dāng)粘貼的時(shí)候相對(duì)于光標(biāo)的位置。p在當(dāng)前光標(biāo)之后粘貼專門的或一般的緩存,而P則在當(dāng)前光標(biāo)之前粘貼專門的或一般的緩存。在粘貼命令之前指定數(shù)目(count)會(huì)將文字粘貼數(shù)次。

縮進(jìn)代碼與檢查

VI編輯器有功能來幫助程序員將它們的代碼布局得更加的整潔。有一個(gè)變量來為代碼中的各級(jí)嵌套設(shè)定縮進(jìn)。為了使用這個(gè)功能,可以閱讀本教程的“customization section”一節(jié)。例如,將偏移寬度設(shè)為4個(gè)字符的命令是:set sw=4。

以下的命令縮進(jìn)你的代碼或移除縮進(jìn),同時(shí)也能夠用count來指定:

  • <<:將當(dāng)前行向左移動(dòng)一個(gè)偏移寬度。

  • >>:將當(dāng)前行向右移動(dòng)一個(gè)偏移寬度。

VI編輯器也有一個(gè)有用的功能來幫助你在遇到懸掛圓括號(hào)或大括號(hào)的時(shí)候檢查你的源代碼。%命令會(huì)尋找與一個(gè)特別的右括號(hào)相對(duì)應(yīng)的左括號(hào),或與之相 反。將光標(biāo)放到一個(gè)括號(hào)上并敲擊%來將光標(biāo)移動(dòng)到相應(yīng)的括號(hào)。這個(gè)功能對(duì)于檢查未閉合的括號(hào)是很有用的。如果有一個(gè)不匹配的括號(hào)存在,VI會(huì)發(fā)出嘟嘟聲, 這是在提示你沒有發(fā)現(xiàn)配對(duì)的符號(hào)。

#p#

文字與字符搜索

VI編輯器有兩類搜索:字符串和字符。對(duì)于一個(gè)字符串搜索,使用/和?命令。當(dāng)你開始使用這個(gè)命令的時(shí)候,在最底部一行會(huì)顯示你敲入的命令,在命令 后面可以輸入你想要搜索的特殊字符串。這兩個(gè)命令僅在搜索發(fā)生的方向上有區(qū)別。在文件中,/命令向前(向下)搜索,?命令向后(向上)搜索。n和N命令分 別在相同或相反的方向上重復(fù)之前的搜索命令。一些字符對(duì)于VI來說,有特殊的意義,因此在它們前面必須要放置一條斜線(\)來被當(dāng)作搜索表達(dá)式的一部分。

特殊字符:

  • ^:行的開始(一個(gè)搜索表達(dá)式的開始)。

  • .:匹配一個(gè)單字符。

  • *:匹配0個(gè)或多個(gè)之前的字符。

  • $:行的結(jié)束(一個(gè)搜索表達(dá)式的結(jié)束)。

  • [:開始一系列匹配,或者是非匹配的表達(dá)式。例如:/f[iae]t匹配三者之一:fit fat fet。在這種形式下,它不會(huì)匹配這些:/a[^bcd]不會(huì)匹配任何字符串,除了帶一個(gè)a和另外一個(gè)字母:ab ac ad。

  • <:將之放在以反斜線結(jié)束的表達(dá)式中來尋找一個(gè)字的結(jié)束或開始。例如,/\<the\>只會(huì)發(fā)現(xiàn)the,而不是這些字:there和other。

  • >:參考對(duì)于“<”的描述。

字符搜索在一行之內(nèi)搜索來尋找在命令之后輸入的一個(gè)字符。f和F命令只在當(dāng)前行上搜索一個(gè)字符。f向前搜索,而F向后搜索,同時(shí),光標(biāo)會(huì)移動(dòng)到所發(fā)現(xiàn)字符的位置。

t和T命令只在當(dāng)前行上搜索一個(gè)字符,對(duì)于t來說,光標(biāo)移動(dòng)到字符之前的位置,而T向后搜索行到字符之后的位置。
這兩套命令使用;和,命令來重復(fù),其中;在相同方向上重復(fù)上一條字符搜索命令,而,在相反方向上重復(fù)上一條字符搜索命令。

VI(以及EX)的設(shè)置

你能夠在啟動(dòng)的時(shí)候個(gè)性化(customization)VI的行為。有幾個(gè)編輯選項(xiàng)使用:set命令,以下是在Wiliki上的VI和EX編輯器選項(xiàng)(你可以在命令模式下通過輸入:set all并回車來獲得此列表):

有一些選項(xiàng)具有用等號(hào)“=”設(shè)置的值,而其它選項(xiàng)有的有,有的沒有。(這些開關(guān)類型叫做Boolean,在它們的前面有“no”來暗示它們不是設(shè)置 的。)在此展示的選項(xiàng)是沒有進(jìn)行個(gè)性化設(shè)置的選項(xiàng)。下面用縮寫給出了這些選項(xiàng)的描述。例如,命令設(shè)置自動(dòng)縮進(jìn),可以輸入:set autoindent或set ai。為了去除設(shè)定,你可以輸入:set noautoindent或set noai。

  • autoindent (ai):此選項(xiàng)對(duì)編輯器進(jìn)行設(shè)置以使得在一個(gè)縮進(jìn)行之后的行像前面行那樣縮進(jìn)。如果你想back over此縮進(jìn),可以在第一個(gè)字符的位置輸入^D。^D工作在插入(insert)模式,并不在命令(command)模式。當(dāng)然,可以用 shiftwidth來設(shè)置縮進(jìn)的寬度,下面有解釋。

  • exrc:在啟動(dòng)的過程中,會(huì)讀入當(dāng)前目錄下的.exrc文件。這可以在環(huán)境變量EXINIT或你的主目錄下的.exrc文件中設(shè)置。

  • mesg:如果對(duì)選項(xiàng)解除設(shè)置,要關(guān)閉消息,使用:set nomesg,這樣做以使得當(dāng)你在使用編輯器的時(shí)候沒有人能夠打擾你。

  • number (nu):用在左邊的行號(hào)來顯示行。

  • shiftwidth (sw):此選項(xiàng)帶有一個(gè)值,用此值來定義一個(gè)軟件制表位(tabstop)的寬度。(這個(gè)軟件制表位用于<<和>>命令。)例如,你可以用此命令來設(shè)置偏移寬度為4:set sw=4。

  • showmode(smd):此選項(xiàng)用于顯示你所用的編輯器的實(shí)際模式。如果你在插入(insert)模式下,屏幕的最底下一行會(huì)顯示INPUT MODE。

  • warn:如果你修改了文件,但是沒有保存,該選項(xiàng)會(huì)警告你。

  • window(wi):該選項(xiàng)設(shè)定VI使用的屏幕上的行數(shù)。例如,要設(shè)定VI編輯器只使用你的屏幕的12行(因?yàn)槟愕膍odem很慢),你可以使用這個(gè):set wi=12。

  • wrapscan(ws):此選項(xiàng)會(huì)影響到文字搜索的行為。如果wrapscan被設(shè)置了,要是沒有在文件的底部找到要尋找的文字,它會(huì)試著在開始部分尋找它。

  • wrapmargin(wm):如果此選項(xiàng)有大于0的值,編輯器會(huì)自動(dòng)“word wrap”。也就是說,如果你占用左邊部分太多的空間,文字會(huì)轉(zhuǎn)向下一行而不用敲回車。例如,要設(shè)定wrap邊界為2個(gè)字符,可以輸入:set wm=2。

寫和將密鑰(關(guān)鍵字)映射到其它密鑰(關(guān)鍵字)

一個(gè)在VI編輯器中有用的EX編輯器命令是abbreviate命令。它讓你為特殊的字符串設(shè)定縮寫。此命令像這樣:ab string thing to substitute for。例如,如果要敲入名字“Humuhumunukunukuapua`a”,但是你不想敲入整個(gè)名字,那么你可以使用縮寫。在此例中,像這樣敲入命 令:ab 9u Humuhumunukunukuapua`a。

現(xiàn)在,當(dāng)你單獨(dú)敲入9u的時(shí)候,VI會(huì)敲入它所代表的整個(gè)字。如果你敲入了9university,它就不會(huì)替換這個(gè)字。

去除之前定義的縮寫的命令是unabbreviate。例如,去除之前例子的命令就是”:una 9u”。如果你要獲取縮寫列表,只需要簡單地輸入:ab,而不用任何定義。

另外一個(gè)對(duì)于個(gè)性化很有幫助的EX編輯器命令就是映射(mapping)命令。有兩類映射(mapping)命令。一個(gè)用于命令模式,另一個(gè)用于插 入模式。它們分別是:map和:map!。映射和縮寫的工作方式類似,你給系統(tǒng)一個(gè)關(guān)鍵序列,并給系統(tǒng)另外一個(gè)關(guān)鍵序列去替換之前的序列。(被替換掉的關(guān) 鍵序列通常是VI命令。)

EXINIT環(huán)境變量和.exrc文件

有兩種方式來個(gè)性化VI編輯器。如果你在主目錄下生成了一個(gè)叫做.exrc的文件,當(dāng)VI啟動(dòng)的時(shí)候,那里面所有的命令都會(huì)被讀到。另外一種方法是 設(shè)置一個(gè)叫做EXINIT的環(huán)境變量。該選項(xiàng)在你的shell的建立文件里被設(shè)置。如果你使用/bin/csh (C-Shell),命令如下(被放置在.cshrc文件里面):setenv EXINIT ‘…’。

如果你使用/bin/sh or /bin/ksh,命令如下(被放置在.profile文件中):export EXINIT EXINIT=’…’。

就像例子中所說的,不要放在…。在這個(gè)空間中,放置你想要建立的命令。例如,如果你想自動(dòng)縮進(jìn),行編號(hào),以及wrap邊界三個(gè)字符,setenv命令(對(duì)于C shell來說)像這樣:setenv EXINIT ‘set ai nuwm=3′。

如果你想在setenv EXINIT中放置不止一個(gè)命令,用豎線(|)將命令隔開。例如,在命令模式中,要將“g”命令映射到“G”字符,命令是:map g G,與上面的命令結(jié)合,可以得到:setenv EXINIT ‘set ai nuwm=3|map g G’。

如果你想生成叫做.exrc的文件,你可以在文件中放置與EXINIT之后的引用一樣的東西。

當(dāng)終端出現(xiàn)問題的時(shí)候恢復(fù)你的工作

VI編輯器編輯你的文件的一個(gè)臨時(shí)副本,當(dāng)編輯結(jié)束之后,或者當(dāng)你叫它保存的時(shí)候,它就將臨時(shí)文件的內(nèi)容放到原始文件中。如果在你編輯文件的時(shí)候發(fā) 生了故障,VI編輯器會(huì)試圖保存你正在做的任何工作,并且為了之后的恢復(fù)而存儲(chǔ)它。(注意:如果在你編輯文件的時(shí)候VI死掉了,它會(huì)給你發(fā)一封郵件告訴你 如何恢復(fù)它。-r選項(xiàng)代表恢復(fù)。如果你正在編輯文件vitalinfo,而你意外退出了,“vi”編輯器的-r選項(xiàng)可以幫你忙。該命令像這樣:vi -r vitalinfo。在使用-r選項(xiàng)一次之后,你必須要將你恢復(fù)的內(nèi)容保存到實(shí)際的文件中。-r選項(xiàng)只能在每一個(gè)失敗的VI會(huì)話中使用一次。)

有關(guān)在工作臺(tái)上使用VI的警告

當(dāng)你使用工作臺(tái)時(shí),必須要知道兩件事情:一次(連續(xù))編輯相同的文件許多次,以及改變屏幕的大小。

因?yàn)閂I編輯你的原始文件的一個(gè)副本,并且將那個(gè)副本的內(nèi)容保存到原始文件中,如果你登錄了好幾次,并且使用VI編輯相同的文件好幾次,如果你一次 保存在一個(gè)窗口上,然后又保存到另外一個(gè)窗口上,第一次保存的對(duì)于文件的改變會(huì)被覆蓋掉。確保對(duì)于每個(gè)文件,你只是運(yùn)行一個(gè)副本。

如果你使用一個(gè)工作臺(tái)的一個(gè)終端程序,你可以通過拖動(dòng)窗口的邊界來改變屏幕的大小。如果你對(duì)大小還不盡滿意,輸入以下命令:eval `resize`。如果這個(gè)命令無效,另外一個(gè)命令如下:eval `/usr/bin/X11/resize`。

如果大小是錯(cuò)誤的,編輯器不會(huì)正常運(yùn)行。如果你對(duì)于屏幕尺寸存在任何疑問,可以向計(jì)算機(jī)實(shí)驗(yàn)室的管理員求助,他會(huì)幫你設(shè)置正確的尺寸。

#p#

VI命令的總結(jié)

以下是按照功能分類的VI命令的一個(gè)總結(jié)列表。有可能還會(huì)有其它命令,可以查看VI的在線手冊。為了方便,你可以以文本文件方式保存該文件,然后刪除你認(rèn)為自己不會(huì)用的一些命令,并打印出剩下的較短的文件。

剪切與粘貼/刪除文字

  • “:指定一個(gè)任何命令使用的緩存。在”之后輸入一個(gè)字母或數(shù)字,它們會(huì)對(duì)應(yīng)一個(gè)緩存。

  • D:從當(dāng)前光標(biāo)所在位置向后刪除直到行尾。

  • P:在當(dāng)前光標(biāo)位置或行之前粘貼專門的緩存。如果沒有指定緩存(使用”命名),“P”就使用通用緩存。

  • X:刪除光標(biāo)之前的字符。

  • Y:將當(dāng)前行整形到指定的緩存。如果沒有指定緩存,就使用通用緩存。

  • d:刪除,直到where。“dd”刪除當(dāng)前行。一個(gè)數(shù)字就表示刪除那么多行。被刪除的內(nèi)容放置在由”命令指定的緩存中。如果沒有指定緩存,就使用通用緩存。

  • p:在當(dāng)前光標(biāo)位置或行之后粘貼專門的緩存。如果沒有指定緩存(使用”命名),“p”就使用通用緩存。

  • x:刪除光標(biāo)之下的字符。輸入一個(gè)數(shù)字表示要?jiǎng)h除多少字符。被刪除的字符位于光標(biāo)之后。

  • y:整形,將結(jié)果放到一個(gè)緩存中。“yy”整形當(dāng)前行。輸入一個(gè)數(shù)字表示要整形的行數(shù)??梢杂?rdquo;命令來指定緩存。如果沒有指定緩存,就使用通用緩存。

插入新的文字

  • A:在當(dāng)前行之后追加。

  • I:在一行的開頭處插入。

  • O:在當(dāng)前光標(biāo)位置的上面一個(gè)新行進(jìn)入插入模式。

  • a:進(jìn)入插入模式,輸入的字符會(huì)在當(dāng)前光標(biāo)位置之后插入。如果在命令之前輸入一個(gè)數(shù)字,那么會(huì)插入內(nèi)容多次。

  • i:進(jìn)入插入模式,輸入的字符會(huì)在當(dāng)前光標(biāo)位置之前插入。如果在命令之前輸入一個(gè)數(shù)字,那么會(huì)插入內(nèi)容多次。

  • o:在當(dāng)前光標(biāo)位置之下的一個(gè)新行進(jìn)入插入模式。

在文件內(nèi)移動(dòng)光標(biāo)

  • ^B:向后回滾一頁。輸入數(shù)字就會(huì)回滾那么多頁。

  • ^D:向前滾動(dòng)半個(gè)窗口。輸入數(shù)字會(huì)滾動(dòng)那么多行。

  • ^F:向前滾動(dòng)一頁。輸入數(shù)字會(huì)滾動(dòng)那么多頁。

  • ^H:將光標(biāo)向左移動(dòng)一個(gè)空格。輸入數(shù)字會(huì)移動(dòng)那么多個(gè)空格。

  • ^J:在同一列向下移動(dòng)光標(biāo)一行。輸入數(shù)字會(huì)向下移動(dòng)那么多行。

  • ^M:移動(dòng)到下一行的第一個(gè)字符處。

  • ^N:在同一列向下移動(dòng)光標(biāo)一行。輸入數(shù)字會(huì)向下移動(dòng)那么多行。

  • ^P:在同一列向上移動(dòng)光標(biāo)一行。輸入數(shù)字會(huì)向上移動(dòng)那么多行。

  • ^U:向后回滾半個(gè)窗口。輸入數(shù)字會(huì)回滾那么多行。

  • $:將光標(biāo)移動(dòng)到當(dāng)前行的末尾。輸入數(shù)字會(huì)移動(dòng)到下面行的末尾。

  • %:將光標(biāo)移動(dòng)到匹配的括號(hào)處。

  • ^:將光標(biāo)移動(dòng)到第一個(gè)非空白的字符處。

  • (:將光標(biāo)移動(dòng)到一個(gè)句子的開頭。

  • ):將光標(biāo)移動(dòng)到下一個(gè)句子的開頭。

  • {:將光標(biāo)移動(dòng)到前一個(gè)段落。

  • }:將光標(biāo)移動(dòng)到下一個(gè)段落。

  • |:將光標(biāo)移動(dòng)到指定的列(由count指定)。

  • +:將光標(biāo)移動(dòng)到下一行的第一個(gè)非空白字符處。

  • -:將光標(biāo)移動(dòng)到之前一行的第一個(gè)非空白字符處。

  • _:將光標(biāo)移動(dòng)到當(dāng)前行的第一個(gè)非空白字符處。

  • 0:將光標(biāo)移動(dòng)到當(dāng)前行的第一列。

  • B:將光標(biāo)回移一個(gè)字,跳過punctuation。

  • E:將光標(biāo)向前移動(dòng)到一個(gè)字的結(jié)尾,跳過punctuation。

  • G:跳到由count指定的行處。如果沒有指定數(shù)目,就跳轉(zhuǎn)到文件的末尾。

  • H:將光標(biāo)移動(dòng)到屏幕頂端的第一個(gè)非空白字符處。

  • L:將光標(biāo)移動(dòng)到屏幕底端的第一個(gè)非空白字符處。

  • M:將光標(biāo)移動(dòng)到屏幕中間的第一個(gè)非空白字符處。

  • W:將光標(biāo)向前移動(dòng)到一個(gè)字的開頭,跳過punctuation。

  • b:將光標(biāo)回移一個(gè)字。如果光標(biāo)在字的中間,就將光標(biāo)移動(dòng)到那個(gè)字的第一個(gè)字符處。

  • e:將光標(biāo)前移一個(gè)字。如果光標(biāo)在字的中間,就將光標(biāo)移動(dòng)到那個(gè)字的最后一個(gè)字符處。

  • h:將光標(biāo)向左移動(dòng)一個(gè)字符的位置。

  • j:將光標(biāo)向下移動(dòng)一行。

  • k:將光標(biāo)向上移動(dòng)一行。

  • l:將光標(biāo)向右移動(dòng)一個(gè)字符的位置。

  • w:將光標(biāo)向前移動(dòng)一個(gè)字。如果光標(biāo)在字的中間,就將光標(biāo)移動(dòng)到下一個(gè)字的第一個(gè)字符處。

在屏幕上移動(dòng)光標(biāo)

  • ^E:向前滾動(dòng)一行。用count指定滾動(dòng)的行數(shù)。

  • ^Y:向后滾動(dòng)一行。用count指定滾動(dòng)的行數(shù)。

  • z:用以下選項(xiàng)重畫屏幕。“z<回車>”將當(dāng)前行放到屏幕的頂部;“z.”將當(dāng)前行放到屏幕的中間;“z-”將當(dāng)前行放到屏幕的底部。如果你在“z”命令之前指定一個(gè)數(shù)字,它就將當(dāng)前行變到指定的行處。例如,“16z.”將第16行放到屏幕的中間。

替換文字

  • C:從當(dāng)前光標(biāo)位置處變到行的結(jié)尾。

  • R:用輸入的一系列字符(以Esc鍵結(jié)尾)替換屏幕上的字符。S:改變一整行。

  • c:改變直到。“cc”改變當(dāng)前行。用count指定改變的行數(shù)。

  • r:替換光標(biāo)下的一個(gè)字符。用count指定替換的字符數(shù)。

  • s:替換(Substitute)光標(biāo)下的一個(gè)字符,并進(jìn)入插入模式。用count指定替換的字符數(shù)。在最后一個(gè)替換的字符處放一個(gè)美元($)符號(hào)。

搜索文字或字符

  • ,:在相反方向上重復(fù)上一個(gè)f,F(xiàn),t或T命令。

  • /:在文件里向下搜索/之后的字符串。

  • ;:重復(fù)上一個(gè)f,F(xiàn),t或T命令。

  • :在文件里向上搜索之后的字符串。

  • F:在當(dāng)前行向后搜索“F”命令指定的字符。如果找到了,就將光標(biāo)移動(dòng)到那個(gè)位置。

  • N:重復(fù)由“/”或“”給出的搜索,不往相反方向搜索。

  • T:在當(dāng)前行向后搜索“F”命令指定的字符。如果找到了,就移動(dòng)到那一列。

  • f:在當(dāng)前行搜索“f”命令之后指定的字符。如果找到了,就將光標(biāo)移動(dòng)到那個(gè)位置。

  • n:重復(fù)上一個(gè)“/”或“”搜索。

  • t:在當(dāng)前行搜索“t”命令之后指定的字符。如果找到了,就將光標(biāo)移動(dòng)到那個(gè)字符位置之前的一列。

操縱字符/行格式

  • ~:轉(zhuǎn)換光標(biāo)之下的字符事例(Switch the case of thecharacter under the cursor)。

  • <:Shift the lines up towhere to the left by one shiftwidth. “<<” shifts the currentline to the left,and can be specified with a count。

  • >:Shift the lines up towhere to the right by one shiftwidth. “>>” shifts the currentline to theright, and can be specified with a count。

  • J:將當(dāng)前行和下一行合并起來。用count指定合并的行數(shù)。

保存與退出

  • ^\:退出“VI”模式,進(jìn)入“EX”模式。EX編輯器是行編輯器,VI就是建立在其上的。重新進(jìn)入VI的EX命令是“:vi”。

  • Q:退出“VI”模式,進(jìn)入“EX”模式。ex編輯器是一個(gè)逐行(line-by-line)編輯器。重新進(jìn)入VI的EX命令是“:vi”。

  • ZZ:退出編輯器,如果有任何改動(dòng)就保存。

其它一些指令

  • ^G:顯示當(dāng)前的文件名和狀態(tài)。

  • ^L:清除并重畫屏幕。

  • ^R:重畫屏幕并移除假的行。

  • ^[:退出鍵。取消部分形成的命令。

  • ^^:回到上次編輯的文件處。

  • !:執(zhí)行一個(gè)shell。如果指定了a,使用!執(zhí)行的程序?qū)⑻囟ǖ男凶鳛闃?biāo)準(zhǔn)輸入,同時(shí)也會(huì)替換帶執(zhí)行程序的標(biāo)準(zhǔn)輸出的那些行。“!!”將當(dāng)前行 作為輸入來執(zhí)行一個(gè)程序。例如,“!4jsort”會(huì)從當(dāng)前光標(biāo)位置拿掉五行并執(zhí)行sort。在鍵入命令之后,會(huì)有一個(gè)你可以輸入命令的單獨(dú)的 exclamation點(diǎn)。

  • &:重復(fù)之前的“:s”命令。

  • .:重復(fù)最后一次修改文件的那個(gè)命令。

  • ::開始輸入一個(gè)EX編輯器命令。當(dāng)用戶輸入回車的時(shí)候,此命令馬上執(zhí)行。

  • @:輸入在特定緩存中存儲(chǔ)的命令。

  • U:將當(dāng)前行恢復(fù)到光標(biāo)進(jìn)入行之前的狀態(tài)。

  • m:用“m”命令之后的特定字符來標(biāo)記當(dāng)前位置。

  • u:撤銷對(duì)文件所作的最后一次修改。再次輸入“u”會(huì)恢復(fù)修改。

EX命令

VI編輯器建立在另外一個(gè)叫做EX的編輯器之上。EX編輯器只通過行來編輯。在VI編輯器中,用:命令來開始鍵入一個(gè)EX命令。以下的列表并不完 全,但是給出的命令是用得比較多的。如果用某些命令(如“:s”和“:w”)來修改不止一行,在命令之前必須指定范圍。例如,要替換掉從第3行到第15行 的內(nèi)容,命令是“:3,15s/from/this/g”。

:abstring strings

縮寫。如果在VI中輸入一個(gè)與strings相關(guān)的字,編輯器會(huì)自動(dòng)插入相應(yīng)的字。例如,縮寫“:ab usa United States ofAmerica”會(huì)在輸入“usa”的時(shí)候插入字“United States of America”。

:mapkeys new-seq

映射。此命令將一個(gè)關(guān)鍵字或一個(gè)關(guān)鍵字序列映射到另外一個(gè)關(guān)鍵字或一個(gè)關(guān)鍵字序列。

:q

退出VI。如果對(duì)內(nèi)容有任何改動(dòng),編輯器會(huì)發(fā)出一個(gè)警告信息。

:q!

不保存而退出VI。

:s/pattern/to_pattern/options

替換。此命令用to_pattern中的字符串替換指定的pattern。如果沒有參數(shù)(選項(xiàng)),此命令只是替換第一個(gè)出現(xiàn)的pattern。如果 給定了“g”,所有出現(xiàn)的pattern都會(huì)被替換掉。例如,命令“:1,$s/Dwayne/Dwight/g”會(huì)替換掉將所有出現(xiàn)的“Dwayne” 替換為“Dwight”。

:set[all]

給VI和EX設(shè)定一些個(gè)性化的選項(xiàng)。“:set [all]”命令給出了所有可能的選項(xiàng)。

:unastring

移除之前由“:ab”定義的縮寫。

:unmkeys

移除由“:map”定義的移除映射。

:vifilename

開始編輯一個(gè)新文件。如果沒有保存對(duì)內(nèi)容作出的改動(dòng),編輯器會(huì)給出一個(gè)警告。

:w

寫出當(dāng)前文件。

:wfilename

將緩存寫到指定的文件名。

:w>> filename

將緩存的內(nèi)容追加到文件中。

:wq

寫緩存并退出。

 

 

 

責(zé)任編輯:王雪燕 來源: daxixiong
相關(guān)推薦

2011-05-26 10:45:04

2015-05-19 11:11:29

JavaScript事件使用指南

2010-10-20 09:37:00

vi編輯器

2018-02-09 09:58:41

Linux編輯器Vi

2018-01-25 18:30:05

編輯器ViVim

2019-11-13 12:39:26

Python 開發(fā)編程語言

2009-12-09 11:23:34

VS視圖編輯器

2011-08-04 18:39:54

注冊表注冊表編輯器

2011-03-29 10:21:33

2010-02-06 16:30:25

C++內(nèi)存對(duì)齊

2010-03-24 09:20:07

CentOS vi編輯

2015-08-03 17:06:49

IEEdge瀏覽器

2020-12-23 22:25:11

Vi文本編輯器Unix

2010-02-02 15:01:59

C++成員函數(shù)指針

2010-01-19 12:53:59

VB.NET Text

2009-10-26 10:47:57

linux vi編輯器

2009-07-31 17:38:47

linux vi命令詳linux vi命令屏幕文本編輯器

2010-09-25 10:38:20

vim編輯器

2022-09-29 09:07:08

DataGrip數(shù)據(jù)倉庫數(shù)據(jù)庫

2009-10-27 16:47:58

linux vi編輯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)