第(dì)二(èr)篇(piān) FPGA至(zhì)簡設計(jì)原理
本(běn)文(wén)的(de)文(wén)檔編号(hào):001400000009
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001400000082
1、本(běn)章(zhāng)节(jié)是(shì)關(guān)于(yú)文(wén)編編輯工具GVIM的(de)介紹
第(dì)一(yī)章(zhāng) 高(gāo)效編輯器GVIM
GVIM是(shì)類(lèi)似于(yú)記(jì)事(shì)本(běn)的(de)代(dài)碼編輯工具,但相比于(yú)記(jì)事(shì)本(běn)其輸入(rù)效率更(gèng)高(gāo),可(kě)以(yǐ)更(gèng)好(hǎo)的(de)提(tí)升(shēng)工作效率。由(yóu)于(yú)GVIM具有(yǒu)豐富的(de)代(dài)碼補全(quán)、編譯及(jí)錯誤跳轉(zhuǎn)等便于(yú)編程的(de)功能(néng),其在(zài)IC開(kāi)發(fà)領域得到(dào)了(le)廣泛應(yìng)用(yòng),也(yě)为(wèi)学習FPGA工程提(tí)供了(le)助力。GVIM是(shì)一(yī)款FPGA工程师(shī)常用(yòng)的(de)软(ruǎn)件(jiàn),本(běn)章(zhāng)节(jié)分(fēn)享一(yī)下(xià)該软(ruǎn)件(jiàn)的(de)使用(yòng)方(fāng)法以(yǐ)及(jí)小技巧。本(běn)書(shū)的(de)所(suǒ)有(yǒu)設計(jì)代(dài)碼都是(shì)在(zài)此(cǐ)软(ruǎn)件(jiàn)上(shàng)完成(chéng)的(de),因(yīn)此(cǐ)希望同(tóng)学们(men)可(kě)以(yǐ)熟練掌握其使用(yòng)方(fāng)法,为(wèi)自(zì)己的(de)FPGA工程师(shī)之路(lù)打(dǎ)好(hǎo)基礎。
本(běn)章(zhāng)节(jié)詳细(xì)講述了(le)使用(yòng)GVIM的(de)必備技巧,掌握这(zhè)些技巧是(shì)使用(yòng)GVIM的(de)前(qián)提(tí)。如(rú)果(guǒ)可(kě)以(yǐ)掌握基本(běn)技巧,在(zài)不(bù)追求效率的(de)前(qián)提(tí)下(xià)就(jiù)足以(yǐ)進(jìn)行所(suǒ)有(yǒu)設計(jì)。对(duì)于(yú)初学者(zhě)来(lái)講,一(yī)定(dìng)要(yào)認真(zhēn)学習本(běn)章(zhāng)节(jié),牢記(jì)本(běn)章(zhāng)所(suǒ)講的(de)技巧。打(dǎ)好(hǎo)基礎之後(hòu)才能(néng)熟能(néng)生(shēng)巧,只(zhī)有(yǒu)在(zài)最(zuì)開(kāi)始将知識掌握扎实才能(néng)提(tí)高(gāo)後(hòu)續程序設計(jì)的(de)效率。
GVIM软(ruǎn)件(jiàn)的(de)操作界面(miàn)如(rú)下(xià)所(suǒ)示,可(kě)以(yǐ)看(kàn)出(chū)設計(jì)界面(miàn)直(zhí)观簡潔,易于(yú)操作。
图(tú)2.1- 1GVIM软(ruǎn)件(jiàn)操作界面(miàn)
GVIM软(ruǎn)件(jiàn)官方(fāng)一(yī)共(gòng)有(yǒu)四(sì)種(zhǒng)操作模式,分(fēn)别是(shì)命令模式(command-mode),插入(rù)模式(insert-mode),可(kě)視模式(visual-mode)和(hé)正(zhèng)常模式(normal-mode)。但是(shì)为(wèi)了(le)方(fāng)便教学和(hé)学習,至(zhì)簡設計(jì)法将GVIM界面(miàn)分(fēn)为(wèi)三(sān)種(zhǒng)模式,分(fēn)别是(shì)命令模式、編輯模式和(hé)列操作模式。这(zhè)種(zhǒng)劃(huà)分(fēn)虽然不(bù)是(shì)很嚴谨,但是(shì)可(kě)以(yǐ)更(gèng)好(hǎo)的(de)学習熟悉软(ruǎn)件(jiàn)。後(hòu)續內(nèi)容分(fēn)享中(zhōng)本(běn)書(shū)都会(huì)采用(yòng)至(zhì)簡設計(jì)法劃(huà)分(fēn)的(de)三(sān)種(zhǒng)模式,請同(tóng)学们(men)注意(yì)區(qū)分(fēn)。下(xià)面(miàn)就(jiù)開(kāi)始对(duì)各(gè)模式進(jìn)行逐一(yī)学習。
首先(xiān)学習命令模式,顧名思(sī)義此(cǐ)时(shí)鍵盤上(shàng)所(suǒ)有(yǒu)的(de)按鍵都是(shì)各(gè)種(zhǒng)不(bù)同(tóng)的(de)操作命令,因(yīn)此(cǐ)只(zhī)能(néng)观看(kàn)代(dài)碼或(huò)者(zhě)發(fà)出(chū)命令,而(ér)无法像記(jì)事(shì)本(běn)一(yī)樣(yàng)進(jìn)行文(wén)本(běn)編輯。这(zhè)时(shí)的(de)软(ruǎn)件(jiàn)界面(miàn)是(shì)粗(cū)光(guāng)标(biāo)閃爍的(de)狀态,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 2命令模式操作界面(miàn)
接下(xià)来(lái)学習編輯模式,依旧(jiù)可(kě)以(yǐ)按照字(zì)面(miàn)意(yì)思(sī)進(jìn)行理解(jiě),此(cǐ)模式下(xià)的(de)GIVM就(jiù)相當于(yú)記(jì)事(shì)本(běn),在(zài)鍵盤上(shàng)的(de)所(suǒ)有(yǒu)按鍵都可(kě)以(yǐ)对(duì)文(wén)件(jiàn)進(jìn)行輸入(rù)。此(cǐ)时(shí)软(ruǎn)件(jiàn)界面(miàn)为(wèi)细(xì)光(guāng)标(biāo)閃爍的(de)狀态,并且下(xià)方(fāng)命令欄顯示“插入(rù)”,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 3編輯模式操作界面(miàn)
最(zuì)後(hòu)介紹列操作模式,此(cǐ)模式下(xià)可(kě)以(yǐ)在(zài)块(kuài)內(nèi)实現(xiàn)列对(duì)齊的(de)同(tóng)时(shí)对(duì)相應(yìng)块(kuài)進(jìn)行添加空格、字(zì)符、縮進(jìn)等操作。此(cǐ)模式下(xià)選擇的(de)块(kuài)为(wèi)加粗(cū)陰影顯示,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 4列操作模式編輯界面(miàn)
在(zài)GIVM软(ruǎn)件(jiàn)中(zhōng)的(de)三(sān)種(zhǒng)模式可(kě)以(yǐ)進(jìn)行互相轉(zhuǎn)換。
GVIM默認模式为(wèi)命令模式,在(zài)此(cǐ)模式下(xià)按“i”進(jìn)入(rù)編輯模式,按“Ctrl+q”進(jìn)入(rù)列操作模式。
图(tú)2.1- 5命令模式下(xià)的(de)模式轉(zhuǎn)換
在(zài)編輯模式下(xià)按“Esc”可(kě)以(yǐ)進(jìn)入(rù)命令模式,選中(zhōng)想(xiǎng)要(yào)操作的(de)行按“Ctrl+q”可(kě)以(yǐ)進(jìn)入(rù)列操作模式。这(zhè)里(lǐ)需要(yào)注意(yì),編輯模式下(xià)單独輸入(rù)“Ctrl+q”无法進(jìn)入(rù)列操作模式,需要(yào)使用(yòng)鼠标(biāo)協助,如(rú)下(xià)图(tú)所(suǒ)示,对(duì)想(xiǎng)要(yào)編輯的(de)块(kuài)進(jìn)行選擇後(hòu)在(zài)按下(xià)“Ctrl+q”方(fāng)可(kě)進(jìn)入(rù)列操作模式,轉(zhuǎn)換關(guān)系(xì)如(rú)图(tú)7。
图(tú)2.1- 6編輯模式下(xià)選擇要(yào)編輯的(de)块(kuài)
图(tú)2.1- 7編輯模式下(xià)的(de)模式轉(zhuǎn)換
在(zài)列操作模式下(xià),按“Esc”可(kě)以(yǐ)進(jìn)入(rù)命令模式,在(zài)任意(yì)位置點(diǎn)擊鼠标(biāo)即可(kě)進(jìn)入(rù)編輯模式,轉(zhuǎn)換關(guān)系(xì)如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 8列操作模式下(xià)的(de)模式轉(zhuǎn)換
三(sān)種(zhǒng)模式互換關(guān)系(xì)如(rú)下(xià):
图(tú)2.1- 9三(sān)種(zhǒng)模式互換關(guān)系(xì)
本(běn)文(wén)的(de)文(wén)檔編号(hào):001400000076
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001400000083
1、本(běn)节(jié)介紹了(le)GVIM中(zhōng)一(yī)些常見(jiàn)命令,并講解(jiě)了(le)如(rú)何高(gāo)效使用(yòng)命令進(jìn)行代(dài)碼編写
第(dì)1节(jié) 基本(běn)技巧
了(le)解(jiě)GVIM的(de)模式後(hòu)来(lái)学習使用(yòng)GVIM的(de)基本(běn)技巧。这(zhè)里(lǐ)不(bù)会(huì)詳细(xì)介紹GVIM的(de)所(suǒ)有(yǒu)命令,只(zhī)会(huì)分(fēn)享日(rì)常中(zhōng)的(de)常見(jiàn)命令,这(zhè)些命令足以(yǐ)覆蓋所(suǒ)需的(de)大部(bù)分(fēn)场合。與(yǔ)此(cǐ)同(tóng)时(shí),这(zhè)些小技巧也(yě)提(tí)高(gāo)了(le)工作的(de)效率。为(wèi)便于(yú)後(hòu)續学習,也(yě)为(wèi)了(le)提(tí)高(gāo)自(zì)身(shēn)能(néng)力,建議同(tóng)学们(men)盡可(kě)能(néng)掌握这(zhè)些技巧。
當然对(duì)初学者(zhě)来(lái)说(shuō),在(zài)還(huán)不(bù)会(huì)設計(jì)代(dài)碼的(de)前(qián)提(tí)下(xià)熟練使用(yòng)快(kuài)捷方(fāng)式的(de)确有(yǒu)些困難。但是(shì)在(zài)学習之初,希望初学者(zhě)可(kě)以(yǐ)花費一(yī)些时(shí)間(jiān),将这(zhè)些小技巧逐一(yī)進(jìn)行嘗試并進(jìn)行操作練習。“磨刀(dāo)不(bù)誤砍柴工”,不(bù)要(yào)小看(kàn)用(yòng)在(zài)快(kuài)捷命令的(de)練習时(shí)間(jiān),如(rú)果(guǒ)各(gè)位工程师(shī)真(zhēn)正(zhèng)掌握了(le)这(zhè)些命令的(de)使用(yòng)方(fāng)法,一(yī)定(dìng)可(kě)以(yǐ)在(zài)工作中(zhōng)受益无窮。
1.1 補全(quán)命令
補全(quán)命令(Ctrl+p):在(zài)進(jìn)行代(dài)碼編写的(de)过(guò)程中(zhōng)可(kě)能(néng)会(huì)出(chū)現(xiàn)同(tóng)一(yī)工程內(nèi)需要(yào)重(zhòng)複輸入(rù)很多(duō)代(dài)碼的(de)情(qíng)況,此(cǐ)时(shí)可(kě)以(yǐ)使用(yòng)補全(quán)命令。即輸入(rù)代(dài)碼第(dì)一(yī)个(gè)字(zì)母後(hòu)按下(xià)“Ctrl+p”,随後(hòu)会(huì)出(chū)現(xiàn)前(qián)面(miàn)已經(jīng)輸入(rù)过(guò)的(de)具有(yǒu)相同(tóng)首字(zì)母的(de)所(suǒ)有(yǒu)代(dài)碼,此(cǐ)时(shí)可(kě)以(yǐ)選擇需要(yào)的(de)对(duì)應(yìng)代(dài)碼。这(zhè)里(lǐ)需要(yào)注意(yì),只(zhī)有(yǒu)本(běn)文(wén)檔中(zhōng)已經(jīng)完整編写过(guò)的(de)代(dài)碼才可(kě)以(yǐ)在(zài)相同(tóng)首字(zì)母下(xià)拉菜單中(zhōng)看(kàn)到(dào),沒(méi)有(yǒu)出(chū)現(xiàn)过(guò)代(dài)碼的(de)无法調用(yòng)。
舉个(gè)例子,假設希望輸入(rù)“else”,就(jiù)可(kě)以(yǐ)在(zài)編輯狀态下(xià),輸入(rù)“e”後(hòu)按“Ctrl+p”,此(cǐ)时(shí)会(huì)出(chū)現(xiàn)下(xià)拉菜單。可(kě)以(yǐ)看(kàn)到(dào)会(huì)出(chū)現(xiàn)已經(jīng)編写过(guò)的(de)所(suǒ)有(yǒu)以(yǐ)字(zì)母“e”为(wèi)開(kāi)头(tóu)的(de)代(dài)碼,按上(shàng)下(xià)鍵選擇所(suǒ)需代(dài)碼,點(diǎn)擊回(huí)車後(hòu)就(jiù)可(kě)以(yǐ)得到(dào)最(zuì)終(zhōng)代(dài)碼。
图(tú)2.1- 10補全(quán)命令示例
1.2 跳轉(zhuǎn)命令
文(wén)件(jiàn)內(nèi)跳轉(zhuǎn)(gg, G, :100):跳轉(zhuǎn)命令一(yī)共(gòng)有(yǒu)三(sān)个(gè)快(kuài)捷方(fāng)式,“gg”、“G”、“:100”。當一(yī)个(gè)工程比較複雜的(de)时(shí)候,代(dài)碼可(kě)能(néng)达(dá)到(dào)了(le)上(shàng)千(qiān)行,此(cǐ)时(shí)手(shǒu)動(dòng)翻页(yè)尋找(zhǎo)代(dài)碼的(de)方(fāng)式效率很低,而(ér)跳轉(zhuǎn)命令可(kě)以(yǐ)快(kuài)速跳轉(zhuǎn)到(dào)指定(dìng)位置,從而(ér)节(jié)省(shěng)时(shí)間(jiān),提(tí)高(gāo)效率。
先(xiān)来(lái)看(kàn)“gg”,命令模式下(xià)在(zài)文(wén)檔任意(yì)位置按下(xià)“gg”即可(kě)跳轉(zhuǎn)到(dào)文(wén)檔的(de)最(zuì)頂端開(kāi)头(tóu)部(bù)分(fēn)。需要(yào)注意(yì)的(de)是(shì)此(cǐ)命令的(de)使用(yòng)环(huán)境是(shì)命令模式,前(qián)面(miàn)有(yǒu)講过(guò)在(zài)其他(tā)两(liǎng)種(zhǒng)模式下(xià)可(kě)以(yǐ)按下(xià)“Esc”進(jìn)入(rù)命令模式,在(zài)命令模式下(xià)輸入(rù)两(liǎng)个(gè)小写“g”,即可(kě)成(chéng)功跳轉(zhuǎn)到(dào)頂端。跳轉(zhuǎn)後(hòu)結果(guǒ)如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 11“gg”跳轉(zhuǎn)結果(guǒ)
接下(xià)来(lái)是(shì)“G”,命令模式下(xià)在(zài)文(wén)檔任意(yì)位置按下(xià)“G”即可(kě)跳轉(zhuǎn)到(dào)文(wén)檔的(de)底端部(bù)分(fēn)。注意(yì)此(cǐ)命令的(de)使用(yòng)环(huán)境依旧(jiù)是(shì)命令模式,在(zài)其他(tā)两(liǎng)種(zhǒng)模式下(xià)需要(yào)按“Esc”進(jìn)入(rù)命令模式,在(zài)命令模式下(xià)輸入(rù)一(yī)个(gè)大写“G”即可(kě)成(chéng)功跳轉(zhuǎn)到(dào)底端,跳轉(zhuǎn)後(hòu)結果(guǒ)如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 12“G”跳轉(zhuǎn)結果(guǒ)
頂端底端都有(yǒu)了(le),如(rú)何跳轉(zhuǎn)到(dào)指定(dìng)页(yè)呢?这(zhè)里(lǐ)就(jiù)需要(yào)“:”了(le)。在(zài)命令模式下(xià)輸入(rù)“:”,最(zuì)下(xià)面(miàn)命令欄就(jiù)会(huì)顯示出(chū)来(lái),接着輸入(rù)想(xiǎng)要(yào)跳轉(zhuǎn)的(de)行數,點(diǎn)擊回(huí)車就(jiù)会(huì)跳轉(zhuǎn)到(dào)对(duì)應(yìng)行。例如(rú)想(xiǎng)要(yào)跳轉(zhuǎn)到(dào)100行,命令狀态下(xià)在(zài)任意(yì)位置按“:”後(hòu)輸入(rù)100,如(rú)图(tú)2.1- 13所(suǒ)示,點(diǎn)擊回(huí)車就(jiù)会(huì)跳轉(zhuǎn)到(dào)第(dì)100行。跳轉(zhuǎn)後(hòu)結果(guǒ)如(rú)图(tú)2.1- 14所(suǒ)示。
图(tú)2.1- 13輸入(rù)“:100”命令
图(tú)2.1- 14“:100”跳轉(zhuǎn)結果(guǒ)
1.3 搜索命令
搜索命令(*,/, n, N):搜索命令中(zhōng)需要(yào)用(yòng)到(dào)“*”、“/”、“n”、“N”等快(kuài)捷鍵。
一(yī)个(gè)工程中(zhōng)想(xiǎng)要(yào)知道(dào)都有(yǒu)哪些地(dì)方(fāng)出(chū)現(xiàn)了(le)某一(yī)代(dài)碼,就(jiù)可(kě)以(yǐ)使用(yòng)“*”号(hào)鍵。命令狀态下(xià)将光(guāng)标(biāo)移動(dòng)到(dào)想(xiǎng)要(yào)搜索的(de)代(dài)碼後(hòu)按下(xià)“*”号(hào)鍵即“Shift+8”,随後(hòu)此(cǐ)工程所(suǒ)有(yǒu)相同(tóng)的(de)代(dài)碼都会(huì)高(gāo)亮(liàng)顯示。
通(tòng)过(guò)“n”和(hé)“N”可(kě)以(yǐ)实現(xiàn)这(zhè)些高(gāo)亮(liàng)代(dài)碼之間(jiān)的(de)選擇切(qiè)換。小写“n”可(kě)以(yǐ)切(qiè)換到(dào)下(xià)一(yī)个(gè)高(gāo)亮(liàng)代(dài)碼,大写“N”可(kě)以(yǐ)切(qiè)換到(dào)上(shàng)一(yī)个(gè)高(gāo)亮(liàng)代(dài)碼。这(zhè)樣(yàng)就(jiù)可(kě)以(yǐ)在(zài)搜索出(chū)的(de)高(gāo)亮(liàng)代(dài)碼之間(jiān)实現(xiàn)跳轉(zhuǎn),用(yòng)搜索命令搜索出(chū)的(de)“reg”代(dài)碼如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 15“*”搜索出(chū)的(de)“reg”代(dài)碼
前(qián)文(wén)可(kě)知“*”号(hào)鍵可(kě)以(yǐ)对(duì)光(guāng)标(biāo)所(suǒ)在(zài)的(de)代(dài)碼進(jìn)行亮(liàng)顯示,但有(yǒu)幾(jǐ)千(qiān)行代(dài)碼的(de)时(shí)候設計(jì)师(shī)一(yī)时(shí)无法尋找(zhǎo)到(dào)需要(yào)的(de)代(dài)碼,此(cǐ)时(shí)就(jiù)需要(yào)另(lìng)外(wài)一(yī)種(zhǒng)快(kuài)捷方(fāng)式,即“/”鍵。在(zài)命令狀态下(xià)按“/+想(xiǎng)要(yào)查找(zhǎo)的(de)代(dài)碼”,此(cǐ)时(shí)該文(wén)當中(zhōng)此(cǐ)代(dài)碼都会(huì)高(gāo)亮(liàng)顯示。依旧(jiù)以(yǐ)“reg”代(dài)碼为(wèi)例,在(zài)命令狀态下(xià)輸入(rù)“/reg”,如(rú)下(xià)图(tú)命令欄所(suǒ)示,按下(xià)回(huí)車即可(kě)高(gāo)亮(liàng)顯示代(dài)碼“reg”。
图(tú)2.1- 16 “/reg”搜索”reg”代(dài)碼
1.4 删除複制命令
删除命令(dd,d2d):删除命令需要(yào)用(yòng)到(dào)“dd”快(kuài)捷方(fāng)式。
将光(guāng)标(biāo)放(fàng)在(zài)想(xiǎng)要(yào)删除的(de)位置,命令模式下(xià)按“dd”即可(kě)删除該行。那(nà)如(rú)果(guǒ)需要(yào)一(yī)下(xià)子删除很多(duō)行要(yào)如(rú)何操作呢?这(zhè)種(zhǒng)情(qíng)況下(xià)可(kě)以(yǐ)計(jì)算需要(yào)删除的(de)行數後(hòu)進(jìn)行操作。比如(rú)想(xiǎng)要(yào)删除2行則可(kě)以(yǐ)按下(xià)“d2d”或(huò)“2dd”,此(cǐ)时(shí)光(guāng)标(biāo)後(hòu)两(liǎng)行內(nèi)容将被(bèi)删除。
複制命令(yy,y5y):複制命令需要(yào)用(yòng)到(dào)“yy”快(kuài)捷方(fāng)式。
在(zài)这(zhè)里(lǐ),複制的(de)快(kuài)捷方(fāng)式“Ctrl+c”依然可(kě)以(yǐ)使用(yòng),除此(cǐ)之外(wài)再向(xiàng)同(tóng)学们(men)分(fēn)享另(lìng)外(wài)一(yī)種(zhǒng)複制方(fāng)式。命令模式下(xià),将光(guāng)标(biāo)放(fàng)在(zài)想(xiǎng)要(yào)複制的(de)位置後(hòu)按“yy”即可(kě)複制該行。如(rú)果(guǒ)想(xiǎng)要(yào)複制多(duō)行,比如(rú)複制當前(qián)及(jí)向(xiàng)下(xià)的(de)5行,将光(guāng)标(biāo)放(fàng)在(zài)需要(yào)複制的(de)第(dì)一(yī)行後(hòu)按下(xià)“y5y”或(huò)“5yy”,这(zhè)时(shí)光(guāng)标(biāo)後(hòu)5行內(nèi)容就(jiù) 複制成(chéng)功了(le)。如(rú)下(xià)图(tú)所(suǒ)示,可(kě)以(yǐ)看(kàn)到(dào)命令欄顯示“複制了(le)5行”,此(cǐ)时(shí)複制的(de)是(shì)570-574行。
图(tú)2.1- 17複制命令“y5y”操作結果(guǒ)
粘贴命令(p):粘贴命令需要(yào)用(yòng)到(dào)“p”快(kuài)捷方(fāng)式。
命令模式下(xià),在(zài)有(yǒu)複制內(nèi)容的(de)狀态时(shí)按“p”就(jiù)可(kě)以(yǐ)将複制的(de)內(nèi)容進(jìn)行粘贴。此(cǐ)时(shí)命令欄会(huì)顯示“多(duō)了(le)*行”,同(tóng)樣(yàng)在(zài)此(cǐ)软(ruǎn)件(jiàn)中(zhōng)常用(yòng)的(de)“Ctrl+v”快(kuài)捷方(fāng)式依旧(jiù)可(kě)以(yǐ)使用(yòng)。
例如(rú)想(xiǎng)要(yào)粘贴刚刚複制的(de)5行,在(zài)命令模式下(xià)按“p”則可(kě)以(yǐ)看(kàn)到(dào)粘贴成(chéng)功,并且命令欄会(huì)顯示“多(duō)了(le)5行”,如(rú)下(xià)图(tú)所(suǒ)示,第(dì)582-586为(wèi)粘贴的(de)內(nèi)容。
图(tú)2.1- 18粘贴命令“p”操作結果(guǒ)
本(běn)文(wén)的(de)文(wén)檔編号(hào):001400000077
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001400000084
1、本(běn)节(jié)講解(jiě)了(le)如(rú)何使用(yòng)GVIM命令替換待定(dìng)字(zì)符或(huò)一(yī)段(duàn)代(dài)碼
第(dì)2节(jié) 高(gāo)級技巧
除了(le)上(shàng)一(yī)节(jié)所(suǒ)述的(de)基礎技巧外(wài),還(huán)有(yǒu)一(yī)些更(gèng)加高(gāo)級的(de)技巧。掌握了(le)这(zhè)些技巧後(hòu)則可(kě)以(yǐ)在(zài)更(gèng)加大型的(de)設計(jì)上(shàng)能(néng)达(dá)到(dào)事(shì)半功倍的(de)效果(guǒ)。
2.1 替換命令
替換命令(:%s/xx/yy/gc,:63,72s/xx/yy/gc):替換命令需要(yào)用(yòng)到(dào)的(de)是(shì)“:%s/xx/yy/gc”快(kuài)捷方(fāng)式。
在(zài)設計(jì)中(zhōng)有(yǒu)时(shí)可(kě)能(néng)会(huì)遇到(dào)把某段(duàn)代(dài)碼替換成(chéng)另(lìng)一(yī)段(duàn)代(dài)碼的(de)情(qíng)況,这(zhè)个(gè)时(shí)候就(jiù)要(yào)用(yòng)到(dào)替換命令。在(zài)命令模式下(xià),輸入(rù)“:%s/xx/yy/gc”,點(diǎn)擊回(huí)車後(hòu)按下(xià)“y”即可(kě)对(duì)代(dài)碼進(jìn)行依次(cì)替換。其中(zhōng)“:%s”代(dài)表(biǎo)着作用(yòng)于(yú)整个(gè)文(wén)檔,“xx”代(dài)表(biǎo)着文(wén)檔中(zhōng)需要(yào)替換的(de)內(nèi)容,“yy”表(biǎo)示替換後(hòu)的(de)內(nèi)容,“gc”是(shì)快(kuài)捷命令的(de)指令不(bù)需要(yào)進(jìn)行修改,随後(hòu)按下(xià)的(de)“y”表(biǎo)示“yes”,即确定(dìng)進(jìn)行修改。
舉个(gè)例子,如(rú)果(guǒ)想(xiǎng)要(yào)将整个(gè)文(wén)檔中(zhōng)的(de)“reg”替換为(wèi)“wire”,則在(zài)命令模式下(xià)輸入(rù)“:%s/reg/wire/gc”,如(rú)图(tú)2.1- 19所(suǒ)示;接着點(diǎn)擊回(huí)車,就(jiù)会(huì)看(kàn)到(dào)如(rú)图(tú)2.1- 20所(suǒ)示的(de)狀态,文(wén)檔中(zhōng)所(suǒ)有(yǒu)“reg”都高(gāo)亮(liàng)顯示,唯有(yǒu)第(dì)一(yī)个(gè)reg顯示更(gèng)淺,命令欄提(tí)示是(shì)否換为(wèi)“wire”。此(cǐ)时(shí)按下(xià)“y”則可(kě)以(yǐ)看(kàn)到(dào)替換成(chéng)功,如(rú)图(tú)2.1- 21所(suǒ)示,可(kě)以(yǐ)看(kàn)到(dào)第(dì)63行的(de)“reg”已經(jīng)成(chéng)功替換为(wèi)“wire”,灰色(sè)光(guāng)标(biāo)進(jìn)行到(dào)了(le)下(xià)一(yī)个(gè)高(gāo)亮(liàng)代(dài)碼。
图(tú)2.1- 19命令模式下(xià)輸入(rù)“:%s/reg/wire/gc”
图(tú)2.1- 20确認是(shì)否将“reg”替換为(wèi)“wire”
图(tú)2.1- 21依次(cì)将“reg”替換为(wèi)“wire”
上(shàng)面(miàn)講述的(de)是(shì)整个(gè)文(wén)檔中(zhōng)的(de)某一(yī)代(dài)碼需要(yào)替換,但有(yǒu)时(shí)候可(kě)能(néng)需要(yào)在(zài)某个(gè)範圍進(jìn)行替換。这(zhè)種(zhǒng)情(qíng)況下(xià)将刚刚代(dài)表(biǎo)整个(gè)文(wén)檔的(de)符号(hào)“%”替換为(wèi)範圍即可(kě)。如(rú)果(guǒ)上(shàng)例中(zhōng)想(xiǎng)要(yào)替換第(dì)63到(dào)第(dì)72行的(de)“reg”为(wèi)“wire”,那(nà)麼(me)在(zài)命令模式下(xià)輸入(rù)“:63,72s/reg/wire/gc”,如(rú)图(tú)2.1- 22所(suǒ)示;點(diǎn)擊回(huí)車則可(kě)以(yǐ)看(kàn)到(dào)reg都進(jìn)行高(gāo)亮(liàng)顯示;此(cǐ)时(shí)按下(xià)“y”即替換成(chéng)功,如(rú)图(tú)2.1- 23所(suǒ)示。按照該方(fāng)法依次(cì)替換可(kě)以(yǐ)發(fà)現(xiàn),第(dì)72行以(yǐ)後(hòu)就(jiù)无法繼續進(jìn)行替換反(fǎn)而(ér)会(huì)顯示“9次(cì)替換,共(gòng)9行”表(biǎo)示替換完成(chéng),如(rú)图(tú)2.1- 22所(suǒ)示,以(yǐ)上(shàng)則为(wèi)部(bù)分(fēn)區(qū)域內(nèi)替換代(dài)碼的(de)方(fāng)法。
图(tú)2.1- 22命令模式下(xià)輸入(rù)“:63,72s/reg/wire/gc”
图(tú)2.1- 23确認是(shì)否将“reg”替換为(wèi)“wire”
图(tú)2.1- 24完成(chéng)區(qū)域內(nèi)“reg”替換为(wèi)“wire”
本(běn)文(wén)的(de)文(wén)檔編号(hào):001400000078
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001400000085
1、本(běn)节(jié)講解(jiě)了(le)如(rú)何使用(yòng)GVIM命令来(lái)删除連(lián)續多(duō)行相同(tóng)位置的(de)字(zì)符
2.2 列删除方(fāng)法
在(zài)日(rì)常編程中(zhōng)相信(xìn)同(tóng)学们(men)都会(huì)使用(yòng)删除的(de)用(yòng)法,即直(zhí)接按“Delete”鍵删除想(xiǎng)要(yào)的(de)內(nèi)容。但是(shì)有(yǒu)时(shí)候可(kě)能(néng)想(xiǎng)要(yào)实現(xiàn)删除連(lián)續幾(jǐ)行的(de)某幾(jǐ)个(gè)字(zì)符,这(zhè)个(gè)时(shí)候就(jiù)需要(yào)列删除的(de)操作方(fāng)法了(le)。舉个(gè)例子,假定(dìng)想(xiǎng)要(yào)删除下(xià)图(tú)中(zhōng)第(dì)43到(dào)第(dì)49行的(de)第(dì)3到(dào)5个(gè)字(zì)符,通(tòng)过(guò)观察可(kě)以(yǐ)發(fà)現(xiàn)下(xià)图(tú)想(xiǎng)要(yào)删除的(de)是(shì)“input”後(hòu)的(de)“put”。
图(tú)2.1- 25待删除代(dài)碼
首先(xiān)在(zài)編輯模式下(xià)選擇想(xiǎng)要(yào)删除的(de)區(qū)域,注意(yì)需要(yào)選到(dào)删除对(duì)應(yìng)行和(hé)列。如(rú)下(xià)图(tú)所(suǒ)示,從第(dì)43行第(dì)3个(gè)字(zì)符開(kāi)始選擇,到(dào)第(dì)49行第(dì)5个(gè)字(zì)符結束(shù)。
图(tú)2.1- 26選中(zhōng)待删除區(qū)域
接着按下(xià)“Ctrl+q”,可(kě)以(yǐ)看(kàn)到(dào)想(xiǎng)要(yào)删除的(de)部(bù)分(fēn)被(bèi)選中(zhōng)了(le),如(rú)果(guǒ)这(zhè)里(lǐ)沒(méi)有(yǒu)選对(duì)則要(yào)返回(huí)到(dào)上(shàng)一(yī)步重(zhòng)新選取(qǔ)範圍。
图(tú)2.1- 27選中(zhōng)所(suǒ)有(yǒu)待删除字(zì)符
最(zuì)後(hòu)按下(xià)“Delete”鍵,結果(guǒ)如(rú)下(xià)图(tú)所(suǒ)示,可(kě)以(yǐ)看(kàn)到(dào)43行到(dào)49行的(de)三(sān)到(dào)五(wǔ)个(gè)字(zì)符都已經(jīng)被(bèi)删除,行删除操作完畢。
图(tú)2.1- 28完成(chéng)删除操作
可(kě)以(yǐ)發(fà)現(xiàn)这(zhè)里(lǐ)其实是(shì)從編輯模式轉(zhuǎn)換到(dào)列操作模式從而(ér)完成(chéng)了(le)删除操作,可(kě)見(jiàn)列操作模式十(shí)分(fēn)便捷。但是(shì)與(yǔ)此(cǐ)同(tóng)时(shí)也(yě)要(yào)注意(yì),刚刚可(kě)以(yǐ)实現(xiàn)删除內(nèi)容都为(wèi)“put”是(shì)因(yīn)为(wèi)至(zhì)簡設計(jì)法代(dài)碼書(shū)写的(de)比較規範整齊。如(rú)果(guǒ)代(dài)碼写的(de)亂七(qī)八(bā)糟,列删除後(hòu)很難不(bù)影響文(wén)檔後(hòu)續編輯效果(guǒ)。養成(chéng)良好(hǎo)習慣,後(hòu)續会(huì)受益无窮。
本(běn)文(wén)的(de)文(wén)檔編号(hào):001400000079
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001400000086
1、本(běn)节(jié)講解(jiě)了(le)如(rú)何使用(yòng)GVIM命令来(lái)複制連(lián)續多(duō)行相同(tóng)位置的(de)字(zì)符
2.3 列插入(rù)方(fāng)法
刚刚学会(huì)了(le)列删除的(de)操作,但有(yǒu)时(shí)候也(yě)会(huì)需要(yào)列插入(rù)的(de)操作。下(xià)面(miàn)来(lái)通(tòng)过(guò)例子学習一(yī)下(xià)列插入(rù),即在(zài)列的(de)前(qián)面(miàn)插入(rù)相同(tóng)的(de)內(nèi)容。假定(dìng)需要(yào)在(zài)第(dì)51-60行前(qián)面(miàn)插入(rù)“output”,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 29待插入(rù)代(dài)碼
首先(xiān)在(zài)51行按下(xià)“Ctrl+q”進(jìn)入(rù)列操作模式,使用(yòng)“h”、“j”、“k”、“l”四(sì)个(gè)按鍵”来(lái)控制上(shàng)下(xià)左(zuǒ)右(yòu),選擇範圍需要(yào)插入(rù)內(nèi)容的(de)範圍,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 30選擇插入(rù)範圍
選定(dìng)好(hǎo)範圍後(hòu)按下(xià)大写的(de)“I”,接着輸入(rù)需要(yào)插入(rù)的(de)數據(jù)“output”,然後(hòu)按“Esc”退(tuì)出(chū)。此(cǐ)时(shí)可(kě)以(yǐ)看(kàn)到(dào)選中(zhōng)的(de)每一(yī)列都加上(shàng)了(le)同(tóng)樣(yàng)內(nèi)容,如(rú)下(xià)图(tú)所(suǒ)示。
图(tú)2.1- 31插入(rù)“output”操作結果(guǒ)
當然此(cǐ)方(fāng)法不(bù)是(shì)必須使用(yòng)鍵盤進(jìn)行區(qū)域的(de)選擇,也(yě)可(kě)以(yǐ)使用(yòng)鼠标(biāo)選擇範圍後(hòu)再按下(xià)“ctrl+q”,学会(huì)插入(rù)的(de)方(fāng)法後(hòu)同(tóng)学们(men)可(kě)以(yǐ)按照个(gè)人(rén)習慣使用(yòng)相應(yìng)的(de)區(qū)域選擇方(fāng)式。