下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、前言文本編輯是電腦系統(tǒng)最普通的操作任務(wù)之一,而Vi編輯器是系統(tǒng)上最有效的標準文本編輯器之一。通過 Vi編輯器你可以創(chuàng)建新的文件或是編輯任何已有的純文本文件。Vi編輯器如同很多在 Unix早期階段開發(fā)的應用程序一樣,有著不易使用的名聲。BramMolenaar的克隆加強版,vim(Vi Improved)已經(jīng)走了很長的一段路來消除這樣的印象。Vim包含了很多的便利功能,如直觀的指示、幫助頁面等。它可能已經(jīng)成為一種最流行的vi編輯器版本,所以本書的第七版為此專門在第二部分辟出七個新單元,并命名為vim。當然,還有很多其它有價值的vi克隆版本同樣存在,我們在第三部分選取了它們中的三個,并命名為 ot
2、her vi in clones。本書的范圍本書包括的18個單元和4個附錄被分成了四個部分。第一部分,vi的基礎(chǔ)與進階,是為了讓你快速入手vi,并且后面的高級技巧會讓你vi用的更加得心應手。最初的兩個單元,單元1, vi文本編輯器,和單元 2,簡單的編輯,介紹了一些你可以入門的簡單vi命令。你應當不斷練習直到這些命令成為你的第二天性。你可以在第2單元后停止閱讀,在已經(jīng)學習了一些基礎(chǔ)的編輯工具后。但是vi意味著干很多又不僅僅是和基本詞匯有關(guān)的過程;各種各樣的命令和選項能使你應對很多編輯的苦差事時更加簡便。第3單元,Moving Around in a Hurry ,和第4單元beyondthe
3、basis,專注于用更簡單的方法去完成目標。在你第1次閱讀期間,你至少會了解到vi能做什么和你可以利用什么命令來完成你特定的需求。后來,你可以回過來再看這些單元做更深一步的學習。第5單元,介紹ex編輯器,第6單元,全局替換,和第 7單元高級編輯,提供工具幫助你 轉(zhuǎn)移更多的編輯重擔到電腦上。這幾單元向你介紹基于vi的ex line編輯器,這幾單元還向你展示了如何分配 ex命令通過vi。第8單元,vi克隆版本的介紹,材料如何體現(xiàn)我們的基本思想是給你們一些我們覺得對新用戶有用的vi知識的概述。學習一個新的編輯器,尤其是Vi命令的討論一個鍵盤按鈕的圖片。約定第1部分是第一部分Vi編輯器的基礎(chǔ)與進階第一
4、單元Vi文本編輯器Unix有很多可以改進文本內(nèi)容的編輯器一個簡潔的歷史觀點在鉆研vi的來龍去脈之前,它會幫助你理解你工作平臺上的vi的理念。尤其,這會幫助你搞很多清楚vi各樣更多的隱蔽的錯誤信息,同樣可以體會vi的克隆版在原始 vi基礎(chǔ)上如何進步。Vi的數(shù)據(jù)會回來當用戶在終端上工作通過串行線連接到中央微型計算機。在全世界有成百 上千不同類型的終端存在并被使用。每一種都做著相同的事情(清屏,移動光標等等),但是那些被用來讓它們執(zhí)行的命令卻是不同的。另外,unix系統(tǒng)讓你自己選擇字符用作退格,產(chǎn)生一個中斷信號,或是其它有用的命令在串行終端上,例如暫停和恢復輸出。這些設(shè)備以前是(現(xiàn)在仍然是)管理著設(shè)
5、備終端。原始的通用字符緩沖器版本的vi摘錄終端控制信息打開和關(guān)閉文件你可以用vi編輯任何文本文件。 Vi復制需要編輯的文件到緩沖區(qū)中(一個在儲存器中臨時儲存數(shù)據(jù)的地方),顯示緩沖區(qū)的內(nèi)容(雖然你同時只能看到一屏幕的東西),然后讓你增加,刪除,和更改文本。當你儲存你編輯好的東西,vi復制編輯好的緩存區(qū)的內(nèi)容回到外存貯器, 覆蓋相同名字的舊文件。 要記住你一直在復制了你的文件的緩沖區(qū)上工作,你的編輯將不會影響你的原始文件直到你儲存緩沖區(qū)。儲存你的編輯文件也叫做“寫入緩沖區(qū)”,或更普通“寫入你的文件”。打開文件Vi是用來啟動vi編輯器來打開一個已存在的文件或是一個全新的文件的unix命令。Vi命令的
6、語法是:$vi【文件名】括號在如上的命令行中顯示出文件名是可選擇的。括號不可以被打出來。$符號是unix的提示。如果文件名被忽略,vi編輯器將打開一個沒有名字的緩沖區(qū)。你可以指定名字當將緩沖 區(qū)寫入文件。就現(xiàn)在,不過,還是讓我們堅持在命令行給文件起名。文件名在它的目錄下必須是獨一無二的。一個文件名可以包括任何8-bit的字符除了斜線號(/),這個符號是保留用來在路徑名中分離文件名和目錄名的,空字符,零bit的字符。你實際上,不過,文件名通常包含甚至可以在文件名中包括空格通過打反斜杠號在空格之前。各種組合的大小寫字母,數(shù)字,點號(.),和下劃線(_)。記住unix系統(tǒng)是區(qū)分大小寫:小 寫字母和大
7、寫字母是區(qū)分的。也要記住你必須按ENTER去告訴unix你已經(jīng)輸入完你的命令。當你在目錄下想打開一個新文件是,在文件名前加上vi命令。例如,如果你想打開一個新文件叫practice在當前目錄下,你需要輸入:$vi practice既然這是一個新文件,緩沖區(qū)是空的,屏幕顯示如下:"practice" new file波浪線()遞降排列在屏幕左邊顯示出在文件中沒有內(nèi)容,甚至不空行。在底部的提示行 (也叫狀態(tài)行)顯示文件名和文件狀態(tài)。你也能編輯在目錄下任何存在的文本文件只要通過指定文件名。如果有unix文件有這樣的路徑/home/john/letter。如果你已經(jīng)在/home/j
8、ohn目錄下,用相對路徑。例如:$vi letter將文件letter副本復制到屏幕。如果你在另一個目錄,要給出完全路徑才能開始編輯:$vi /home/joh n/letter打開文件的問題當你調(diào)用vi是,信息open mode出現(xiàn)。你的終端類型可能沒有被正確的識別??焖偻顺鼍庉嬆J酵ㄟ^輸入:q。檢查環(huán)境變量$TERM它應當符合你的終端名?;蛘呷ジ嬖V你的系統(tǒng)管理員提供準確的終端類型設(shè)置。你看見如下信息之一:Visual n eeds addressable cursor or upli ne capabilityBad termcap entryTermcap entry too longT
9、ermin al:U nknown termi nal typeBlock device requiredNot a typewriter你的終端類型要么沒有定義,要么terminfo 和termcap進入方面可能有一些問題。輸入:q退出。檢查你的$TERM環(huán)境變量,或者告訴你的系統(tǒng)管理員為你的環(huán)境選擇一個終端類型。 new file信息出現(xiàn)當你覺得這個文件早已存在。檢查一下你在文件名是否用對了大小寫(unix的文件名是區(qū)分大小寫的)。如果你沒有錯,你可能在錯誤的目錄下。輸入:q退出。然后檢查文件是否在正確的目錄下(在 unix提示下輸入pwd)。如果你在正確的目錄下,檢查在這目錄下的文件列表
10、(通過ls )是否有存在文件名相近的名字。你調(diào)用vi,但是你卻得到冒號提示(顯示你在 ex行編輯模式)。你可能在輸入了什么東西在vi刷屏前。進入vi通過輸入vi在ex提示(:)下。如下之一的信息出現(xiàn):Read onlyFile is read onlyPermissi on denied“Read only ”表明你只能查看文件;你不能保存你的修改。你可能調(diào)用了 vi的查看模式(按 了 view或是vi -R ),或者你對此文件沒有權(quán)限。看一下在第10頁標題為“保存文件的問題”的內(nèi)容。如下之一的信息出現(xiàn):Bad file nu mberBlock special fileCharacter s
11、pecial fileDirectoryExecutableNon-ascii fileFile non-ASCII你要打開編輯的文件不是一個正常的文本文件。輸入:q!退出,然后檢查你想編輯的文件,可能有文件命令。當你輸入:q因為前面提到的任一困難出現(xiàn)時,出現(xiàn)如下信息:No write since last cha nge (:quit! Overrides)你已經(jīng)不小心修改了文件。通過輸入:q!退出vi。你在對話期間的修改將不會保存在文件中。做法正如先前提到的,現(xiàn)在的“模式”的概念是非常重要的對于vi的工作來說。有兩種模式,命令模式和插入模式,你起始于命令模式,你的任何鍵盤敲擊都將被看做是命
12、令。在插入模式,你輸入的任何東西都將變成你文件中的文本。有時,你可能不小心進入插入模式,或是相反的,離開插入模式一不小心。不論發(fā)生何種情況,你輸入的東西將會影響你的文件時是你所不期望。按ESC鍵去強制vi進入命令模式。如果你早已進入命令模式,vi編輯器會嘟嘟響提示當你按ESC鍵時。(因此命令模式此時有時又叫做“嘟嘟響模式”)一旦你安全的再命令模式中, 你就可以動手修復任何突發(fā)性的變化,然后繼續(xù)編輯你的文本。保存和退出一個文件你可以退出編輯文件任何時候,保存你的編輯,然后退出到unix的提示界面。Vi編輯器的退出并保存的命令是 ZZ。ZZ是大寫的。讓我們假定你創(chuàng)建了一個文件叫practice 來
13、練習vi命令,你打了六行的內(nèi)容。為了保存文件,首先檢查你在命令模式通過按ESC鍵,然后按ZZ。按的鍵結(jié)果ZZ結(jié)束編輯和保存命令,ZZ。你的文件被保存為正常的 unix文件。Ls你同樣可以用ex命令保存你的編輯。 輸入:w保存你的文件但是不會退出 vi ;輸入:q退出 如果你沒有做任何編輯; 輸入:wq同時保存你的文件和退出。(:wq和ZZ相等。)我們會在第 5章詳盡解釋如何用 ex命令;暫時,你只需要記住一些關(guān)于編輯和保存的命令。退出并不保存編輯當你第一次學習Vi編輯器,尤其如果你是一個無謂的實驗者,有兩個其它的ex命令可以容易的解除你創(chuàng)造的任何混亂。如果你想清除所有你在對話框內(nèi)的編輯然后回到
14、原始文件怎么辦?如下命令::e! ENTER你就退回到你上一次保存的文件內(nèi)容,你現(xiàn)在可以重新開始了。如果,你想清除你的編輯內(nèi)容并只是退出vi怎們辦?如下命令::q! ENTER你就退出了編輯而且回到了unix的提示符。這兩個命令,你將失去自從你上一次保存到現(xiàn)在所有你編輯在緩沖區(qū)的東西。Vi 一般不會讓你知道扔掉了你的編輯。感嘆號加到:e和:q命令后面讓vi忽略這個禁止,繼續(xù)操作即使緩沖區(qū)已經(jīng)被修改。保存文件的問題你嘗試寫入文件,但是得到如下之一的信息:File existsFile file exists -use w!Existi ng fileFile is read only輸入:w!
15、file覆蓋已存在的文件,或是輸入:w newfile保存已編輯的文件到新的文件。你想寫入文件,但是你沒有寫入這個文件的權(quán)限。你得到信息"Permisson denied ”用:w newfile將緩沖區(qū)的內(nèi)容寫出到新的文件,如果你在這個目錄下有寫入的權(quán)限,你可以用mv取代原來版本通過復制這個文件。如果你沒有這個目錄下寫入的權(quán)限,輸入:wpath name/file將緩沖區(qū)的內(nèi)容保存到你有權(quán)限寫入的目錄下去(例如你的主目錄或是/tmp).你嘗試寫入你的文件,但是你得到信息告訴你文件系統(tǒng)已滿。輸入:!rm junkfile 去刪除(很大)沒用的文件釋放一些空間。(通過一個感嘆號開始ex
16、命令讓你使用unix。)或是輸入:!df 看一下在其它的文件系統(tǒng)里是否有空間。如果有,在文件系統(tǒng)上選擇一個目錄,寫入你的文件到那目錄下:w path name。(df是un ix命令檢查一個磁盤上的空閑空間。)系統(tǒng)讓你處在打開狀態(tài)然后告訴你文件系統(tǒng)已滿。Vi在磁盤上的臨時文件已被存滿。輸入:!ls /tmp看一下是否有其它文件你可以移走已得到一些磁盤空間。#如果有,建立一個臨時的unix shell以移除文件或建立其它的unix命令。你可以建立一個 Shell通過輸入:sh ;輸入CTRL-D或exit終止shell回到vi。(在現(xiàn)在的 unix系統(tǒng)上,當使用一個作業(yè)控制 shell ,你可以
17、簡單的輸入CTRL-Z暫停vi回到unix提 示符;輸入fg回到vi。)一旦你已經(jīng)釋放一些空間,寫入你的文件用:w!。你嘗試寫入你的文件,但是你得到一個信息說你的磁盤配額已經(jīng)達標。嘗試強行系統(tǒng)保存你緩沖區(qū)的內(nèi)容通過ex命令:pre(:preserve的縮寫)。如果沒用,找一些文件移除。用:sh(或CTRL-Z如果你正在用作業(yè)控制系統(tǒng))搬離vi和移除文件。用CTRL-D(或fg )回到vi當你已經(jīng)做完。然后寫入你的文件用:w!。練習學習vi的唯一方法就是練習。你現(xiàn)在知道了足夠的知識去創(chuàng)建新的文件和回到unix提示符。創(chuàng)建一個文件叫practice ,插入一些文本,然后保存并退出文件。打開一個叫
18、practice插入文本:回到命令模式: 退出vi,保存編輯:的文件在當前目錄下:i am text you likeESCZZvi practice#你的vi可能保持它的臨時文件在/usr/tmp ,/var/tmp 或你現(xiàn)在的目錄;你可能要到處閑 逛明確找到是哪里空間用完了。Vim 一般保持它的臨時文件在你編輯文件的目錄下。第二單元簡單編輯這一章將介紹用vi編輯,本章是用來當自學教程的。本章我們將學習如何移動光標和如何 做一些簡單的編輯。如果你從沒有用vi工作過,你應該閱讀全章。稍后本章將向你展示如何長進你的技術(shù)以更快更好的編輯。對于精于vi的用戶來說一個最大的好處就是有很多的選項可供選擇
19、。 (對于新手來說一個最大的壞處就是 vi有太多的復雜 編輯命令。)你不可能學習vi通過學習沒一個 vi命令。起步通過學習本章介紹的基礎(chǔ)命令。記錄下常見的命令使用時的圖像。當你學習vi,注意讓更多的任務(wù)你是可以交給編輯器的,然后找到命令完成它。在接下來 的一章你會學到更多 vi高級的特征,但是在你掌握高級的之前,你必須先掌握簡單的。這一章包括:移動光標加入和改變文本刪除,移動,和復制文本更多的方法進入插入模式Vi命令Vi有兩個模式:命令模式和插入模式。你一進入文件,你就進入命令模式,編輯器就一直 等你輸入命令。命令能讓你移動到文件的任何地方,去編輯,或是進入插入模式和加入新的文本。命令同樣可以
20、被用來退出文件(保存或忽視你的編輯)以回到unix的提示符。你可以理解為不同的模式代表了兩種不同的鍵盤。在插入模式,你的鍵盤功能相當于一個打字機。在命令模式,每一個鍵有一個新的意義或初始一些指令。有好幾種方法告訴 Vi你想進入插入模式。最常用的方法之一就是按i。不會出現(xiàn)在屏幕上,但是之后你按的無論你按什么都將會出現(xiàn)在屏幕上也將會存入緩沖區(qū)。光標標記現(xiàn)在插入 點。*想告訴Vi你想停止插入文本,按 ESC按ESC就移動光標回到一個地方(所以那是你 最后輸入的字符)回到 vi的命令模式。例如,假如你已經(jīng)打開一個新文件想插入單詞“ introduction?!比绻爿斎肓薸in troduct ion
21、,在屏幕上顯示的是in troduct ion當你打開一個新的文件,vi開始于命令模式只要第一個按(i )就打斷進入插入模式。之后所有的鍵盤輸入都將被認為是文本輸入直到你按ESC如果你需要修正一個錯誤然而你卻在插入模式,退格并修正錯誤。基于你在使用的終端類型,退格可能會清除你先前已經(jīng)輸入的或可能只是回退了。 在其它的事情中,所有你回退的都將被刪除。記住你不能用退格鍵回退到你進入插入模式的點的前面。(如果你已經(jīng)禁用了 vi的兼容性,vim允許你用退格回退到你進入到插入模式的點的之前。)Vi有一個選擇讓你定義一個正確的頁邊白和提供自動回車當你到達它的時候。就目前,當你正在插入文本,按 ENTERS
22、行。有時你自己不知道是在插入模式還是在命令模式。無論什么時候vi不會回應如你所期望的,按ESC一兩次以檢查你在什么模式下。當你聽到蜂鳴聲,你就在命令模式。移動光標你可能用只用一小會的時間在編輯會話加入新的文本在插入模式;很多時候你會很多時間編輯以退出文本。在插入模式你可以定位光標到文件的任何地方。既然你開始所有基礎(chǔ)編輯(改變,刪除和復制文本)通過定位光標到你想改變的地方,你想能移動光標到目的地越快越好。* 一些版本在狀態(tài)行顯示你在(input mode )插入模式有以下vi命令來移動光標:上,下,做和右一一每一次移動一個字母向前或向后一個文本塊如一個單詞,一個句子,一個段落。向前或向后翻過一個
23、文件,一屏幕一次。在圖2-1,一個下劃線表示出現(xiàn)在光標的位置。圈圈顯示了光標從它現(xiàn)在的位置移動到通過 不同的vi命令到的位置。圖2-1,簡單的移動命令。簡單的移動 鍵h, j , k和I,權(quán)利在你指尖,將移動光標。h左,一個空格下,-行k上,一行I右,一個空格你同樣可以用光標箭頭鍵 (J, f, t),用+和-上升和下降,或用ENTER和BACKSPACE 但它們不常用。一開始,似乎用字母鍵替代箭頭鍵移動光標有點麻煩。過了一段時間,然而,你就會發(fā)現(xiàn)這將是你最喜歡 vi的一點之一一你可以移動光標甚至不用將你的手指離開中心 鍵盤區(qū)域。在你移動光標之前, 按ESC以確認你已經(jīng)在命令模式下。用h, j
24、 , k和I在文件中從光標現(xiàn)在的位置前后的移動。當你在一個位置已經(jīng)移動到極限時,你會聽一記嘟聲然后光標停止了。例如,一旦你在一行的開始或者結(jié)尾處,你就不能用h或I回到前一行或下一行; 你必須用j或k。+簡單說來,就是你不能移動光標超過代表空行的波浪線(),你也不能移動光標到第一行文本之上。數(shù)值參數(shù)你可以先于移動命令前加入數(shù)字。圖2-2顯示出4I命令如何光標向左移動四個字符,就好像你已經(jīng)輸入I四遍了( IIII )。圖2-2,和數(shù)字的復合命令能輸入復合命令給你更多的選擇和每一個你學的命令更強的功能。把這個記住就如你被介紹了額外的命令。當你保存文件practice 時,vi顯示一個信息告訴你有在那
25、個文件里有多少行。行不一定如 出現(xiàn)在屏幕上的輪廓線一樣有相同長度(一般限制在80個字符)。一行就是任何文本被插入在新行之間(新的一行將被插入進文件當你在插入模式中按ENTER鍵。)如果你在按 ENTER鍵之前輸入了 200個字符,vi認為這200個字符就是一行(即使這些200個字符在屏幕上明顯的被分成了好幾行)。正如我們在第一章中提到的,vi有一個選項允許你設(shè)置到右邊白的距離然后vi會自動換行。這個選項是 wrapmargin (它的縮寫是 wm。你可以設(shè)置一個 wrapmargin 10 個字符::set wm=10這個命令不會影響你已經(jīng)輸入的行。我們會談?wù)摳嗟脑O(shè)置選項在第7章。(這個真的
26、不能等!)如果你不用vi的自動wrapmargin選項,你應該換行用回車鍵以保持可控制的行的長度。+vim,有nocompatible (兼容模式)設(shè)置,允許你"跳過空白”行的尾部到下一個用I或空格。兩個在一行中移動的有用的命令:0 (數(shù)字零)移動到行首。$移動到行尾。在如下的例子中,行號被顯示出來。(行號可以在vi中被顯示出來通過用數(shù)字選項,通過在命令模式下輸入:set nu開啟這個功能。這個操作將在第七章介紹。)邏輯上的第(3)行并不符合你在屏幕上所看見的第(5)行。如果光標現(xiàn)在在單詞 word的d上,然后你按$,光標會移動到這一周期最后的單詞word。如果你輸入0,光標會移回到
27、單詞move中的m,第2行的開頭。文本塊的移動你同樣可以在文本塊間移動光標:單詞,句子,段落,等等。w命令光標每一次向前移動一個單詞,計數(shù)符號和標點符號相當于單詞。如下的一行顯示出用w命令的光標的移動:Cursor,delete, lin es,i nsert characters,你同樣可以移動光標通過一個單詞,而不包括計數(shù)符號和標點符號,用W命令。(你可以把它看做一個"大的”或"大寫”的Word。)光標的移動用W就是這樣:Cursor,delete, lin es,i nsert characters,一個單詞的向后移動,就用b命令。大寫的B允許你回移一個單詞,不包括計
28、數(shù)符號。正如先前所提到的,移動命令采取數(shù)值參數(shù);所以,用無論是w或b命令以可以用數(shù)字增加移動。2w向前移動兩個單詞;5B向后移動5個單詞,不包括計數(shù)符號。為了移動到專門的一行,你可以用G命令。單個G移動到文件末尾,1G到文件的開頭,還有42G則到第42行。這個將會有更多的細節(jié)描述在接下來的第43頁的一章“ G ( GOTO)命令”。圖2-3校對編輯我們將討論句子和段落的移動在第3章?,F(xiàn)在呢,練習使用你所知道的光標移動命令,將它 們結(jié)合數(shù)字乘數(shù)。簡單的編輯當你進入你文件的文本時,它很少是完美的。你找到打字錯誤或是想改進短語; 有時你的程 序有一個錯誤。一旦你進入文本,你就能去改變它,刪除它,移動
29、它,或復制它。圖2-3顯示出你對于這個文件想編輯成的樣子。編輯被校對符號標示出來。在vi編輯器中你可以實現(xiàn)這些編輯通過一些簡單的基礎(chǔ)的按鍵:i是插入(你早已經(jīng)看到過了); a是附加;c是改變;和d是刪除。要移動或復制文件你用了很多組命令。你移動文本 用d為了“刪除”,然后用p為了“放置”;你復制文本用y為了“移出”,然后p為了“放 置”。每一種編輯在本節(jié)中都會被描述。圖2-4顯示出你所用的 vi命令編輯在圖2-3中所做的標記。插入新的文本你已經(jīng)看到在插入模式下向文件中輸入新的文本。你同樣可以在插入模式下當編輯存在的文本增加遺失的字母,單詞和句子。在文件practice ,如果你有以下句子:Yo
30、u can scrollThe page, move the cursor,deleteLin e,a nd insert characters.圖2-4用vi命令編輯正如光標標示出來的位置。要插入With a screen editor在句子的開頭,輸入如下:按鍵結(jié)果2k用k命令移動光標向上兩個,移動到你想要插入的地方iwith a按i進入插入模式開始編輯文本屏幕編輯器ESC完成編輯文本,按 ESC結(jié)束插入模式回到命令模式附加文本你可以附加文本在你文件的任何地方只要用附加命令,a。這個工作幾乎和i是一個樣的,除了文本被插入在光標后而不是光標前。你可能已經(jīng)意識到當你按i進入插入模式,光標不會移
31、動直到你輸入了一些文本之后。相反,當你按a進入插入模式,光標向右移動一個空格。當你輸入文本,它出現(xiàn)原始光標位置的后面。改變文本你可以替換你文件中的任何文本用修改命令,c。要告訴c多少文本要修改,你可以符合 c和移動命令。這種方式,一個移動命令充當成文本對象讓c命令去影響。例如,c可以被用來從光標改變文本:cw到單詞的末尾c$到行的末尾cO到行的開頭c2b回到前兩個單詞發(fā)表一個修改命令之后,你可以用選中的文本替換任何多的新文本,一個字母沒有,一個字母,或成百上千行也行。C,就像i和a 一樣,讓你進入插入模式直到你按ESC鍵。當修改只在本行起效時,vi在文本的末尾用$標記要被修改的東東,所以你可以
32、看到行的什么部分被影響。(再看cw的例子。)單詞去修改一個單詞,結(jié)合 c命令(修改)與w對付單詞。你可以用一個長一點的或短一點的單 詞(或任何文本)替換一個單詞(cw)。cw可以被認為是“標示刪除單詞和插入新的文本直 到ESC被按?!奔偃缒阌腥缦乱恍形谋驹谀愕奈募ractice 中:With an editor you can scroll the page,你想修改an成a screen。你只需要修改一個單詞:按鍵結(jié)果w用w移動到你想開始編輯的地方cwA scree n敲修改單詞的命令。文本的末尾將會被標示一個 $ (央鎊付號) 輸入替換的文本,然后按 ESC回至U命令模式。cw同樣可以用
33、在一個單詞的部分上,例如,要修改spelli ng到spelled ,你可以定位光標到i,輸入cw,然后輸入ed,用ESC完成操作。一般vi命令的組成在修改命令我們也提到到這一點,你可能已經(jīng)注意到如下形式:(命令)(文本對象)命令就是修改命令 c,文本對象就是移動命令(你不需要輸入括號)。但是c不是唯 個需要文本對象的命令。d命令(刪除)和y命令(拷貝)如同這樣的形式一樣。記住移動命令同樣可以采取數(shù)值參數(shù),所以數(shù)字可以被加到文本對象的c,d和y命令。例如,d2w和2dw是刪除兩個單詞的命令。按照這種思路,你可以看到很多vi命令有如下一般形式:(命令)(數(shù)字)(文本對象)或者等價的形式:(數(shù)字)
34、(命令)(文本對象)這就是如何工作的。 數(shù)字和命令是可選擇的。 沒有它們,你只簡單的有移動命令。 如果你加 入一個數(shù)字,你有一個復合移動。在另一個方面,復合一個命令(c,d或y)與一個文本對象組成一個編輯命令。當你意識到有多少復合體以這樣一種方式出現(xiàn),vi就確實變成了一個強大的編輯器!行要替換當前整個一行,用到特殊修改命令,CC。Cc修改整個一行,用輸入無論多少的文本替換這一行直到輸入 ESC它不關(guān)注光標在這一行的哪里;cc替換整個一行的文本。一個命令像cw工作與CC這樣的命令是不同的。在使用CW,原來的文本保持直到你輸入替換它,任何原來的遺留下來的文本(到 $)消失當你按 ESC在使用CC,
35、然而,原來文本先 被刪除,讓你在空行插入文本?!案采w”發(fā)生時的任何修改命令只會影響少于一整行,但是“空行”發(fā)生時的任何修改命令會影響到一或更多行。C替換字母從當前光標的位置到行末。它有相同的功能如復合c與特殊行末標志$( c$)。命令CC和C對于其他命令來說是真的很簡潔,所以它們和其它 vi命令的一般形式是不一樣 的。你會看到其它快捷鍵當我們討論刪除和拷貝命令的時候。字符一個其它的替換編輯就是r命令。r以一個字符替換另一個字符。你不用按ESC鍵退回到命令模式當編輯完之后。如下這行中有一個拼寫錯誤:Pith a scree n editor you can scroll the page,只有一
36、個字母需要改正。你不希望用cw在這個例子中因為那樣的話你就需要重打整個單詞。用r替換光標所在的一個字母:按鍵結(jié)果rW輸入替換命令r,接著輸入要替換的字母W替換文本假如你想修改只是一些字母,不是整個單詞。替換命令(s),它本身,替換一個字母。與前面的計數(shù),你可以替換許多字符。正如修改命令( c),文本的最后一個字符將會被標記上一 個$所以你可以看到多少文本將被修改。S命令,通常情況下是大寫的,讓你修改整個一行。相對比C命令,修改從當前光標開始行剩余的部分,S命令刪除整個一行,無論光標在哪。Vi讓你在行首進插入模式。前面的計數(shù)替換許多行。S和s命令都讓你進入插入模式;當你結(jié)束輸入新的文本,按ESC
37、R命令,就像他的小寫的副本,替換文本。不同的是R簡單的進入重擊模式。你輸入的字母替換了屏幕上顯示的,字母替換字母,直到你輸入ESC你可以一行最多一個;當你輸入ENTER vi將開新的一行,高效的讓你進入插入模式。修改大小寫修改字母的大小寫是一項特殊的替換工作。波浪()命令會修改一個小寫字母成一個大寫字母或一個大寫字母成小寫。定位你的光標到你想改變大小的字母下,然后輸入一個。這個字母的大小寫將會修改。光標將會移動到下一個字母。在老的vi版本中,你不能指定一個數(shù)字前綴或文本對象用去起作用?,F(xiàn)在的版本允許數(shù)字前綴。如果你想同時修改多于一行的大小寫,你必須篩選文本通過unix命令如tr,將在第7單元描
38、述。刪除文本你同樣可以刪除你文件中任何文本用刪除命令,d。想修改命令,刪除命令要求一個文本對象(一部分要修改的文本)。你可以刪除單詞(dw),行(dd或D),或用其它移動命令我們 以后會學到。所有這些刪除,你要移動到你想開始編輯的地方,給出用刪除命令(d)和文本對象,如w代表單詞。單詞假如你有如下的文本段:Scree n editors are are very popular,Since they allowed you to makeChange as you read though file.光標正如顯示的。你想刪除在第一行的一個are :按鍵結(jié)果2w移動光標到你想開始編輯的地方(are
39、)dw給出刪除單詞命令(dw)去刪除單詞aredw刪除光標標記開頭的這個單詞。注意單詞后面的空格也被刪除了。dw同樣可以被用來刪除單詞的一部分。在這個例子中:Since they allowed you to make 你想刪除allowed結(jié)尾的ed。按鍵結(jié)果dw給出刪除命令(dw)去刪除單詞,開始于光標所在的位置。dw 一直刪除在這一行中下一個單詞前的空格,但是我們不想這么干在這個例子中。要保留單詞間的空格,用 de,只刪除一個單詞的末尾。輸入dE刪除單詞的末尾,包括標點符號。你同樣可以刪除反向(db)或到一行的開頭或結(jié)尾(4$或d0)dd命令刪除光標所在的整個行。dd不會刪除行的一部分。
40、像它的補充,cc, dd是一個特殊的命令。使用在前面的例子中相同的文本,正如所示的光標所在的第一行的位置:Scree n editors are are very popular,Since they allowed you to makeChange as you read though file.你可以刪除前兩行:按鍵2dd結(jié)果給出命令刪除前兩行(2dd )。注意即使光標沒有疋位在行的開頭, 整個一行還是被刪除D命令刪除從光標開始到行末。(D是d$的縮寫。)例如,與光標定位所示:Scree n editors are are very popular,Since they allowed
41、you to makeChange as you read though file.你可以刪除行的一部分即從光標往右的部分。按鍵結(jié)果給出命令刪除行的一部分即光標的右邊(D)。字符通常你只想刪除一個或兩個字符。正如r是一個特殊的修改命令去替換一個字符,x是一個特殊的刪除命令去刪除一個字符。x只刪除光標所在的字符。如行所示:zYour can move text by deleti ng text and them你可以刪除字母z通過按x。?一個大寫的X刪除光標之前的字符。前綴在前面任一命令加 上一個數(shù)字就是刪除字符的個數(shù)。例如: 5x會刪除光標下和右邊的五個字符。刪除出現(xiàn)的問題你已經(jīng)刪除錯文本你
42、想恢復到原來。有好幾種方法恢復已刪除的文本。如果你剛剛刪除什么東西然后你意識到你想恢復,只要簡單的輸入u取消上一次操作即可(例如 ,一個dd)。這個只對你還沒有給出其它進一步操作 時有效,因為u只能取消最近一次操作。或者,一個U會還原行道它原始的狀態(tài),這個方法不管前面做過任何次修改都可以使用。你可以還是回復最近一次刪除,然而,用命令p,由于vi保存最近九次刪除到九個刪除緩存區(qū)。如果你知道,例如,第三次刪除時你想恢復的,輸入:“ 3p ”去把緩存區(qū)的數(shù)字為 3的內(nèi)容放到行光標下。這只對一個已經(jīng)刪除的行有效。單詞,或行的一部分,不被保存進緩存區(qū)。如果你想恢復一個已經(jīng)刪除的單詞或行的碎片,u就沒用了
43、,用p命令自身。這恢復任何你已經(jīng)刪除的。在后來的分段中將討論更多關(guān)于命令u和p。注意vim支持“無限”取消,使得生活方式更加簡便??匆幌略?96頁的“撤銷取消”一章以獲得更多信息。?x的記憶一般認為像“ x光透射”打字機的錯誤。當然,誰還在用打字機呢?移動文本在Vi ,你移動文本通過刪除它然后把它移動已刪除的文本到文件中的任何地方,像一個“剪切和粘貼”每一次你刪除一個文本塊,刪除的東西一般暫時保存在特殊的緩存區(qū)。移動到你的文件中的其它地方用放置命令(P)把文本放到新的地方。你可以移動任何文本塊,盡管移動行比移動單詞要有用。放置命令(P)把緩存區(qū)的文本放在光標后的地方。大寫版本的命令,P,把文本
44、放在文本之前。如果你刪除一個或更多的行,P把刪除的文本放到新的一行光標之下。如果你刪除少于一整行,P把已經(jīng)刪除的文本插入當前行,在光標之后。假如在你的文件practice 中有以下文本:You can move text by delet ing it and the nLike a "cut and paste"Plac ing the deleted text elsewhere in the file.Each time you delete a text block你想移動第二行,like a"cut and paste" ,到第三行下。使用刪除
45、,你可以做以下編輯:按鍵結(jié)果dd光標在第二行,刪除這一行。文本被放進了緩存區(qū)(保留記憶)p給出粘貼命令,p,恢復已經(jīng)刪除的行到光標下。結(jié)束這個句子的記錄,你可能同樣需要修改開頭的大小寫和標點符號(用r)以適應新的結(jié)構(gòu)。一旦你刪除文本,你必須恢復它在下一次修改命令和刪除命令之前。如果你做了其它的編輯影響了緩存區(qū),你已刪除的文本將徹底消失。你可以重復粘貼一遍又一遍, 只要你不做新的 編輯。在第四單元,你會學到如何保存刪除的文本進編號的緩存區(qū)所以你可以恢復以后。交換兩個字母你可以用xp (刪除字符和粘貼在光標之后)交換兩個字母。例如:在單詞mvoe中,字母vo被顛倒了。為了更正顛倒,把光標放在 v上
46、然后按x,再按p。碰巧,單詞transpose幫你 記住xp的順序;x代表trans , p代表pose。沒有命令交換兩個單詞。在單元“更多的映射鍵例子”107頁中我們將討論一個簡短的命令序列可以交換兩個單詞。復制文本一般你可以保存編輯時間(和按鍵)通過復制你的文件的一部分用到其他地方。用兩個命令y (拷貝)和p (粘貼),你可以復制任何大小的文本然后粘貼被拷貝的文本到文件的其它地 方,一個拷貝命令拷貝被選中的文本到一個特殊的緩存區(qū),它將一直被保存到下一個拷貝(或刪除)發(fā)生。你可以然后放置這些復制的東西在文件中的任何地方用粘貼命令。正如用修改和刪除,拷貝命令可以被用來與任何移動命令聯(lián)合(yw,
47、y$,4yy )。拷貝命令最頻繁的用于一行(或更多)的文本,因為拷貝和粘貼一個單詞通常比簡單的輸入一個單詞要花 更長的時間??旖萱Iyy作用于一整行,就像 dd和cc干的那樣。但是快捷鍵Y,由于某種原因操作的方式和D還有C不一樣。不是從當前位置復制到行末,而是Y拷貝一整行;這是 Y和yy干著相同的事情。假如你的practice 文件中有如下的文本:With a scree n editor you canScroll the pageMove the cursorDelete lines你想操作三個完整的句子,開始于 With a screen editor you can。不移動文件,作出此編
48、輯一遍又一遍,你可以用一個拷貝命令和粘貼命令去復制要被增加的文本。按鍵結(jié)果yy拷貝你想拷貝進緩存區(qū)的行文本。光標可以放到你想拷貝的行的任何地方(或一系列行的第一行)2j移動光標到你想粘貼被拷貝的文本的地方p粘貼被拷貝的文本到光標下的一行用命令P。jp先移動光標到下一行然后粘貼文本到光標下用命令p拷貝與刪除用相同的緩存區(qū)。每一個新的刪除和粘貼覆蓋前一個拷貝的緩存區(qū)的內(nèi)容。正如我們將在第一單元看見,前九個粘貼或刪除可以被再調(diào)用粘貼命令。你同樣可以拷貝和刪除直接進入26個命名的緩存區(qū),允許你第一時間修改各樣的文件塊。重復和撤消你的最后一個命令每一個你給出的編輯命令都被存放在一個臨時的緩存區(qū)直到你給出
49、下一個命令。例如,如果在一個單詞后你輸入the在你的文件中,命令被用來插入文本, 隨著你進入的文本, 被暫時 的保存起來。重復每一次你做相同編輯一遍又一遍,你可以保存次數(shù)通過復制它用重復命令,點(.)。定位你的光標到你想重復編輯命令的地方,輸入點號。假如你的文件有如下幾行:With a scree n editor you canScroll the pageWith a scree n editor you canMove the cursor你可以刪除一行,然后,刪除另外一行,簡單的輸入一個點號。按鍵結(jié)果dd刪除一行用命令dd。重復刪除。老一點的vi版本在重復命令有問題。例如,如此的版本可
50、能有困難重復一個長的插入當右邊距被設(shè)定好時。如果你有如此的一個版本,這個漏洞將會遲早傷你。事后對于這個沒有什 么你是可以做的,但是它會幫助你事先通知。(現(xiàn)在的版本似乎沒有這個問題。)有兩種方法 你可以用來防止?jié)撛诘膯栴}當重復長的插入文本。你可以寫入你的文件 (:W)在重復長的插入文本之前。(回到這個的拷貝如果插入文本工作不正確) 。你可以取消右邊距的設(shè)置像這樣::set wm=0在后面的單元“更多的映射鍵例子” 在第107頁,我們將展示你一個簡單的方法使用右邊距。 在一些vi版本中,命令 CTRL-章復最近的插入文本。 CTRL-矽輸入進在插入模式然后回到 命令模式。取消正如早些提到的,你可以
51、取消最近的命令如果你做錯了。簡單的按u。光標需要放到原來編輯發(fā)生的行。要繼續(xù)先前的例子,展示刪除行在文件practice中:按鍵結(jié)果uu取消了最近一次命令恢復了被刪除的行U, u的大寫,取消在但單一行上的所有編輯,只要光標保持在那一行。一旦你離開那一行, 你就不能用U。注意你可以用u取消你的最近一次取消,切換兩種文字版本。u同樣可以取消U, U會取消一行中任何修改,包括那些用u的工作。一個技巧:事實上u可以取消它自己使得一個極好的方法去在文件中隨意走動。如果你曾想回到你上一次編輯的地方去簡單的取消它。你會彈回上一次的一行。當你取消取消時,你就會待在那一行。Vim讓你用CTRL-R去重干”一個取
52、消操作。配合無限的取消, 你可以向后移和向前移通過 修改你的文件的歷史??匆幌聠卧∠∠痹诘?96頁以獲得更多信息。更多的方法插入文本你已經(jīng)在光標前輸入以下文字序列:itext to be in serted ESC你同樣已經(jīng)在光標后插入文本用a命令。這里有一些其它的插入命令可以插入文本在光標周圍不同的位置:A附加文本到當前行的末尾I插入文本在行的開頭o (小寫的字母o)打開光標下的空行以輸入文本0(大寫的字母0)打開光標上的空行以輸入文本刪除光標當前字母然后用新的文本替代刪除一行以新的文本代替R重擊存在的字符以新的字符替換所有這些命令都將讓你進入插入模式。插入文本之后,記住要按ESC回到
53、命令模式。A (附加)和I (插入)挽救你免于在調(diào)用插入模式之前不得不移動你的光標到行的末尾或 行的開頭。(A命令讓你免于按$a兩個鍵。盡管一個按鍵看起來沒有節(jié)省多少,但越熟練越 不耐煩一個編輯器你變成,你就想節(jié)省更多的按鍵)。o和0(開)使你節(jié)省不用不得不插入一個回車。你可以輸入這些命令在一行中的任何地方。s和S (替代)允許你刪除一個字符或一整行然后替換刪除的東西以任何新的文本。s相當于兩個鍵的命令 c SPACE S相當于命令CC。s最佳的用法之一就是用很多字符修改一個字 符。R (“大”替換)是很有用的當你想開始修改文本,但是你不知道究竟多少。例如,不用再猜 測到底是3cw還是4cw,
54、只要輸入 R然后輸入你想替換的文本。插入模式的數(shù)字參數(shù)除了 o和0,插入命令只列出了(加上 i和a)加上數(shù)字前綴。和數(shù)字前綴,你可能要用i ,I , a和A去插入一排下劃線或交替字符。例如,輸入50i*ESC插入50個星號,輸入25a*-ESC附加50個字符(25對星號和連字符)。這是比較好的一種重復一串單一字符的辦法。§和一個數(shù)字前綴,r替換字符數(shù)目和一個單個字符重復實例。例如,在c和C+代碼中,要修改|成&&你要移動光標到第一個管符號(| )然后輸入2r&。你可以用一個數(shù)字前綴和 S去替代好幾行。這更快和更加靈活, 然而,去用c和一個移動命 令。一個用s和數(shù)字前綴好的實例就是當你想修改一些字符在單詞中間時。輸入r是不正確的,輸入cw會修改太多的文本。使用 s和數(shù)字前綴通常和輸入 R 一樣。有一些其它的命令組合一般工作在一起。例如,ea是有用的對于附加新文本到一個單詞后。它幫助你訓練自己認識到這些有用的組合所以他們會變得自動的。連接兩行用J有時當編輯一個文件你非正常結(jié)束留下一系列短行非常難看。當你想合并兩行成一行,把光標移動到第一行的任何地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024商場自助餐廳設(shè)備采購合同
- 2024年搬家服務(wù)合同:標的、服務(wù)細節(jié)與責任分配
- 2024年新建住宅內(nèi)部施工協(xié)議
- 2024年攝影拍攝臨時場地協(xié)議
- 2024年臨沂建筑模板租賃合同
- 2024年教育培訓合同服務(wù)質(zhì)量標準
- 2024年文化娛樂居間服務(wù)協(xié)議
- 2024年技術(shù)開發(fā)合同技術(shù)目標與研發(fā)周期
- 2024年數(shù)據(jù)共享與保護協(xié)議違約金計算
- DB4117T 277-2020 春季紅薯生產(chǎn)技術(shù)規(guī)程
- 原發(fā)性骨髓纖維化課件
- 消防工程施工驗收單樣板
- 中央空調(diào)人員培訓內(nèi)容表
- 發(fā)現(xiàn)生活中的美-完整版PPT
- 小學道德與法治人教三年級上冊第三單元安全護我成長-《遭遇陌生人》教案
- CAMDS操作方法及使用技巧
- 平狄克《微觀經(jīng)濟學》(第8版)筆記和課后習題詳解
- 最優(yōu)化理論與算法課程教學大綱
- 2022年湖北省武漢市江岸區(qū)育才第二小學六上期中數(shù)學試卷
- (最新版)中小學思政課一體化建設(shè)實施方案三篇
- PSA提氫裝置操作規(guī)程
評論
0/150
提交評論