當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]vi是Linux系統(tǒng)的第一個(gè)全屏幕交互式編輯程序,它從誕生至今一直得到廣大用戶的青睞,歷經(jīng)數(shù)十年仍然是人們主要使用的文本編輯工具,足以見其生命力之強(qiáng),而強(qiáng)大的生命力是其強(qiáng)大的功能帶來(lái)的。由于大多數(shù)讀者在此之前都已經(jīng)用慣了Windows平臺(tái)上的編輯器,因此,在剛剛接觸時(shí)總會(huì)或多或少不適應(yīng),但只要習(xí)慣之后,就能感受到它的方便與快捷。

3.2常用編輯器3.2.1進(jìn)入vi

Linux系統(tǒng)提供了一個(gè)完整的編輯器家族系列,如Ed、Ex、vi和emacs等。按功能它們可以分為兩大類:行編輯器(Ed、Ex)和全屏幕編輯器(vi、emacs)。行編輯器每次只能對(duì)一行進(jìn)行操作,使用起來(lái)很不方便。而全屏幕編輯器可以對(duì)整個(gè)屏幕進(jìn)行編輯,用戶編輯的文件直接顯示在屏幕上,從而克服了行編輯那種不直觀的操作方式,便于用戶學(xué)習(xí)和使用,具有強(qiáng)大的功能。

vi是Linux系統(tǒng)的第一個(gè)全屏幕交互式編輯程序,它從誕生至今一直得到廣大用戶的青睞,歷經(jīng)數(shù)十年仍然是人們主要使用的文本編輯工具,足以見其生命力之強(qiáng),而強(qiáng)大的生命力是其強(qiáng)大的功能帶來(lái)的。由于大多數(shù)讀者在此之前都已經(jīng)用慣了Windows平臺(tái)上的編輯器,因此,在剛剛接觸時(shí)總會(huì)或多或少不適應(yīng),但只要習(xí)慣之后,就能感受到它的方便與快捷。

1.vi的模式

vi有3種模式,分別為命令行模式、插入模式及命令行模式。下面具體介紹各模式的功能。

(1)命令行模式。

用戶在用vi編輯文件時(shí),最初進(jìn)入的為一般模式。在該模式中用戶可以通過(guò)上下移動(dòng)光標(biāo)進(jìn)行“刪除字符”或“整行刪除”等操作,也可以進(jìn)行“復(fù)制”、“粘貼”等操作,但無(wú)法編輯文字。

(2)插入模式。

只有在該模式下,用戶才能進(jìn)行文字編輯輸入,用戶按[ESC]可鍵回到命令行模式。

(3)底行模式。

在該模式下,光標(biāo)位于屏幕的底行。用戶可以進(jìn)行文件保存或退出操作,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)等。

2.vi的基本流程

(1)進(jìn)入vi,即在命令行下鍵入“vihello”(文件名)。此時(shí)進(jìn)入的是命令行模式,光標(biāo)位于屏幕的上方,如圖3.2所示。

圖3.2進(jìn)入vi命令行模式

(2)在命令行模式下鍵入i進(jìn)入插入模式,如圖3.3所示??梢钥闯?,在屏幕底部顯示有“插入”表示插入模式中的輸入狀態(tài),在該模式下可以輸入文字信息。

圖3.3進(jìn)入vi插入模式

(3)最后,在插入模式中,按“Esc”鍵,則當(dāng)前模式轉(zhuǎn)入命令行模式,并在底行行中輸入“:wq”(存盤退出)進(jìn)入底行模式,如圖3.4所示。

這樣,就完成了一個(gè)簡(jiǎn)單的vi操作流程:命令行模式→插入模式→底行模式。由于vi在不同的模式下有不同的操作功能,因此,讀者一定要時(shí)刻注意屏幕最下方的提示,分清所在的模式。

圖3.4進(jìn)入vi底行模式

3.vi的各模式功能鍵

(1)命令行模式常見功能鍵如表3.1所示。

表3.1 vi命令行模式功能鍵

功能鍵

功能

i

切換到插入模式,在目前的光標(biāo)所在處插入輸入的文字,已存在的文字會(huì)向后退

a

切換到插入模式,并從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字

o

切換到插入模式,且從行首開始插入新的一行

[ctrl]+[b]

屏幕往“后”翻動(dòng)一頁(yè)

[ctrl]+[f]

屏幕往“前”翻動(dòng)一頁(yè)

[ctrl]+[u]

屏幕往“后”翻動(dòng)半頁(yè)

[ctrl]+[d]

屏幕往“前”翻動(dòng)半頁(yè)

0(數(shù)字0)

光標(biāo)移到本行的開頭

G

光標(biāo)移動(dòng)到文件的最后

nG

光標(biāo)移動(dòng)到第n行

$

移動(dòng)到光標(biāo)所在行的“行尾”

n<Enter>

光標(biāo)向下移動(dòng)n行

/name

在光標(biāo)之后查找一個(gè)名為name的字符串

?name

在光標(biāo)之前查找一個(gè)名為name的字符串

x

刪除光標(biāo)所在位置的一個(gè)字符

X

刪除光標(biāo)所在位置的前一個(gè)字符

dd

刪除光標(biāo)所在行

ndd

從光標(biāo)所在行開始向下刪除n行

yy

復(fù)制光標(biāo)所在行

nyy

復(fù)制光標(biāo)所在行開始的向下n行

p

將緩沖區(qū)內(nèi)的字符粘貼到光標(biāo)所在位置(與yy搭配)

u

恢復(fù)前一個(gè)動(dòng)作

(2)插入模式的功能鍵只有一個(gè),即按“Esc”鍵可回到命令行模式。

(3)底行模式常見功能鍵如表3.2所示。

表3.2 vi底行模式功能鍵

功能鍵

功能

:w

將編輯的文件保存到磁盤中

:q

退出vi(系統(tǒng)對(duì)做過(guò)修改的文件會(huì)給出提示)

:q!

強(qiáng)制退出vi(對(duì)修改過(guò)的文件不作保存)

:wq

存盤后退出

:w[filename]

另存一個(gè)名為filename的文件

:setnu

顯示行號(hào),設(shè)定之后,會(huì)在每一行的前面顯示對(duì)應(yīng)行號(hào)

:setnonu

取消行號(hào)顯示

注意

vim是vi的升級(jí)版,與vi相比擴(kuò)展了很多功能且保持與vi的90%相兼容,感興趣的讀者可以查看相關(guān)資料進(jìn)行學(xué)習(xí)。

3.2.2初探emacs

正如前面所述,vi是一款功能非常強(qiáng)大的編輯器,它能夠方便、快捷、高效地完成用戶的任務(wù),那么,在此再次向讀者介紹另一款編輯器是否多此一舉呢?答案是否定的。因?yàn)閑macs不僅僅是一款功能強(qiáng)大的編譯器,而且是一款融合編輯、編譯、調(diào)試于一體的開發(fā)環(huán)境。雖然,它沒有VisualStudio一樣絢麗的界面,但是它可以在沒有圖形顯示的終端環(huán)境下出色的工作,相信追求強(qiáng)大功能和工作效率的用戶不會(huì)介意它樸素的界面的。emacs的使用和vi截然不同。在emacs里,沒有類似于vi的3種“模式”。emacs只有一種模式,也就是編輯模式,而且它的命令全靠功能鍵完成。因此,功能鍵也就相當(dāng)重要了。

但emacs卻還使用一個(gè)不同vi的“模式”,它的“模式”是指各種輔助環(huán)境。比如,當(dāng)編輯普通文本時(shí),使用的是“文本模式(TextMode)”,而當(dāng)寫程序時(shí),使用的則是如“c模式”、“shell模式”等。

下面,首先介紹一下emacs作為編輯器的使用方法,以幫助讀者熟悉emacs的環(huán)境。

注意

emacs縮寫注釋:

C+<chr>表示按住Ctrl鍵的同時(shí)鍵入字符<chr>。因此,C+f就表示按住Ctrl鍵同時(shí)鍵入f。

M+<chr>表示當(dāng)鍵入字符<chr>時(shí)同時(shí)按住Meta或Edit或Alt鍵(通常為Alt鍵)。

1.emacs安裝

現(xiàn)在較新版本的Linux(如本書中所用的RedHatEnterprise4AS)的安裝光盤中一般都自帶有emacs的安裝包,用戶可以通過(guò)安裝光盤進(jìn)行安裝(一般在第2張光盤中)。

2.啟動(dòng)emacs

安裝完emacs之后,只需在命令行鍵入“emacs[文件名]”(若缺省文件名,也可在emacs編輯文件后另存時(shí)指定),也可從“編程”→“emacs”打開,如3.5圖所示的就是從“編程”→“emacs”打開的emacs歡迎界面。

圖3.5emacs歡迎界面

接著可單擊任意鍵進(jìn)入emacs的工作窗口,如圖3.6所示。

從圖中可見,emacs的工作窗口分為上下兩個(gè)部分,上部為編輯窗口,底部為命令顯示窗口,用戶執(zhí)行功能鍵的功能都會(huì)在底部有相應(yīng)的顯示,有時(shí)也需要用戶在底部窗口輸入相應(yīng)的命令,如查找字符串等。

圖3.6emacs的工作窗口

3.進(jìn)入emacs

在進(jìn)入emacs后,即可進(jìn)行文件的編輯。由于emacs只有一種編輯模式,因此用戶無(wú)需進(jìn)行模式間的切換。下面介紹emacs中基本編輯功能鍵。

(1)移動(dòng)光標(biāo)。

雖然在emacs中可以使用“上”、“下”、“左”、“右”方向鍵來(lái)移動(dòng)單個(gè)字符,但筆者還是建議讀者學(xué)習(xí)其對(duì)應(yīng)功能鍵,因?yàn)樗鼈儾粌H能在所有類型的終端上工作,而且讀者將會(huì)發(fā)現(xiàn)在熟練使用之后,輸入這些Ctrl加字符會(huì)比按方向鍵快很多。表3.3列舉了emacs中光標(biāo)移動(dòng)的常見功能鍵。

表3.3 emacs光標(biāo)移動(dòng)功能鍵

功能鍵

功能

功能鍵

功能

C-f

向前移動(dòng)一個(gè)字符

M-b

向后移動(dòng)一個(gè)單詞

C-b

向后移動(dòng)一個(gè)字符

C-a

移動(dòng)到行首

C-p

移動(dòng)到上一行

C-e

移動(dòng)到行尾

C-n

移動(dòng)到下一行

M-<(M加
“小于號(hào)”)

移動(dòng)光標(biāo)到整個(gè)文本的開頭

M-f

向前移動(dòng)一個(gè)單詞

M->(M加
“大于號(hào)”)

移動(dòng)光標(biāo)到整個(gè)文本的末尾

(2)剪切和粘貼。

在emacs中可以使用“Delete”和“BackSpace”刪除光標(biāo)前后的字符,這和用戶之前的習(xí)慣一致,在此就不贅述。以詞和行為單位的剪切和粘貼功能鍵如表3.4所示。

表3.4 emacs剪切和粘貼

功能鍵

功能

功能鍵

功能

M-Delete

剪切光標(biāo)前面的單詞

M-k

剪切從光標(biāo)位置到句尾的內(nèi)容

M-d

剪切光標(biāo)前面的單詞

C-y

將緩沖區(qū)中的內(nèi)容粘貼到光標(biāo)所在的位置

C-k

剪切從光標(biāo)位置到行尾的內(nèi)容

C-xu

撤銷操作(先操作C+x,接著再單擊u)

注意

在emacs中對(duì)單個(gè)字符的操作是“刪除”,而對(duì)詞和句的操作是“剪切”,即保存在緩沖區(qū)中,以備后面的“粘貼”所用。

(3)復(fù)制文本。

在emacs中的復(fù)制文本包括兩步:選擇復(fù)制區(qū)域和粘貼文本。

選擇復(fù)制區(qū)域的方法是:首先在復(fù)制起始點(diǎn)(A)按下“C-Space”或“C-@(C-Shift-2)”使它成為一個(gè)標(biāo)識(shí)點(diǎn),再將光標(biāo)移至復(fù)制結(jié)束點(diǎn)(B),再按下“M-w”,就可將A與B之間的文本復(fù)制到系統(tǒng)的緩沖區(qū)中。再使用功能鍵C-y將其粘貼到指定位置。

(4)查找文本。

查找文本的功能鍵如表3.5所示。

表3.5 emacs查找文本功能鍵

功能鍵

功能

C-s

查找光標(biāo)以后的內(nèi)容,并在對(duì)話框的“I-search:”后輸入要查找的字符串

C-r

查找光標(biāo)以前的內(nèi)容,并在對(duì)話框的“I-searchbackward:”后輸入要查找的字符串

(5)保存文檔。

在emacs中保存文檔的功能鍵為“C+xC+s”(即先操作C+x,接著再操作C+s),這時(shí),屏幕底下的對(duì)話框會(huì)出現(xiàn)如“Wrote/root/workplace/editor/why”的字樣,如圖3.7所示。

圖3.7emacs中保存文檔

另外,emacs在編輯時(shí)會(huì)為每個(gè)文件提供“自動(dòng)保存(autosave)”的機(jī)制,而且自動(dòng)保存的文件的文件名前后都有一個(gè)“#”,例如,編輯名為“hello.c”的文件,其自動(dòng)保存的文件的文件名就叫“#hello.c#”。當(dāng)用戶正常地保存了文件后,emacs就會(huì)刪除這個(gè)自動(dòng)保存的文件。這個(gè)機(jī)制當(dāng)系統(tǒng)發(fā)生異常時(shí)非常有用。

(6)退出文檔。

在emacs中退出文檔的功能鍵為“C-xC-c”。

4.emacs中的模式

emacs不僅僅是個(gè)強(qiáng)大的編譯器,它還是一個(gè)集編譯、調(diào)試等于一體的工作環(huán)境。在這里,讀者將會(huì)了解到emacs作為編譯器的最基本的概念,感興趣的讀者可以參考《LearningGNUEmacs,SecondEdition》一書進(jìn)一步學(xué)習(xí)emacs。

在emacs中并沒有像vi中那樣的“命令行”、“編輯”模式,只有一種編輯模式。這里所說(shuō)的“模式”是指emacs里的各種輔助環(huán)境。下面著重講解C模式。

當(dāng)我們啟動(dòng)某一文件時(shí),emacs會(huì)判斷文件的類型,從而自動(dòng)選擇相應(yīng)的模式。當(dāng)然,用戶也可以手動(dòng)啟動(dòng)各種模式,用功能鍵“M-x”,然后再輸入模式的名稱,如圖3.8所示,這樣就啟動(dòng)了“C模式”。

圖3.8emacs中選擇模式

在強(qiáng)大的C模式下,用戶擁有“自動(dòng)縮進(jìn)”、“注釋”、“預(yù)處理擴(kuò)展”、“自動(dòng)狀態(tài)”等強(qiáng)大功能。在“C模式”下編輯代碼時(shí),可以用“Tab”鍵自動(dòng)地將當(dāng)前行的代碼產(chǎn)生適當(dāng)?shù)目s進(jìn),使代碼結(jié)構(gòu)清晰、美觀,它也可以指定縮進(jìn)的規(guī)則。

源代碼要有良好的可讀性,必須要有良好的注釋。在emacs中,用“M-”可以產(chǎn)生一條右縮進(jìn)的注釋。C模式下是“/*comments*/”形式的注釋,C++模式下是“//comments”形式的注釋。當(dāng)用戶高亮選定某段文本,然后操作“C-cC-c”,就可以注釋該段文字。

emacs還可以使用C預(yù)處理其運(yùn)行代碼的一部分,以便讓程序員檢測(cè)宏、條件編譯以及include語(yǔ)句的效果。

5.emacs編譯調(diào)試程序

emacs可以讓程序員在emacs環(huán)境里編譯自己的軟件。此時(shí),編輯器把編譯器的輸出和程序代碼連接起來(lái)。程序員可以像使用Windows的其他開發(fā)工具一樣,將出錯(cuò)位置和代碼定位聯(lián)系起來(lái)。

emacs默認(rèn)的編輯命令是對(duì)一個(gè)make(在本章3.6節(jié)中會(huì)詳細(xì)介紹)的調(diào)用。用戶可以打開“tool”下的“Compile”進(jìn)行查看。emacs可以支持大量的工程項(xiàng)目,以方便程序員的開發(fā)。

另外,emacs為gdb調(diào)試器提供了一個(gè)功能齊全的接口。在emacs中使用gdb的時(shí)候,程序員不僅能夠獲得gdb的全部標(biāo)準(zhǔn)特性,還可以獲得通過(guò)接口增強(qiáng)而產(chǎn)生的其他性能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉