1. 程式人生 > >vi編輯器的學習使用(二十二)

vi編輯器的學習使用(二十二)

我們在Vi編輯器的學習使用(六)學習了基本的視覺化模式,這時我們可以執行簡單的視覺化命令.在這裡我們將會討論更多的與視覺化相關的命令.這些命令中的許多隻有很少的觀眾,如果我們可以看這一次的學習,也許這很少的觀眾中就會包括我們.
我們在Vi編輯器的學習使用(四)知道了如何來用暫存器實現複製,貼上和刪除的工作.我們也可以在視覺化模式中來實現這些操作.例如要刪除一個文字我們可以這樣的來做:在視覺化模式中高亮顯示這些文字,然後執行d命令.如果要將這些文字刪除後放入暫存器中,我們可以用下面的命令來實現:"register d.要複製文字到暫存器中我們可以使用y命令.而D和Y命令與其相對應的小寫字母的命令相類似,只是他們作用在一整行,而d和y命令是作用於高亮顯示的部分.
在塊視覺化模式中,$命令可以使得選中的文字擴充套件到所有的選中行的結尾處.當我們上下移動游標時,可以使得選中的文字擴充套件到這一行的結尾處.如果新行要比當前行長得多,這樣的擴充套件也是會發生的.
gv命令可以重複前一次視覺化模式時選中的文字.如果我們已經在視覺化模式狀態下,執行這個命令時會選中前一次選中的文字.如果我們重複執gv命令,就會在當前選中的文字和前一次選中的文字之間進行切換.
在Vim編輯器的視覺化模式下的許多命令都是用來幫助我們高亮顯示我們想要的文字的.例如命令aw高亮顯示下一個單詞.事實他不僅高亮顯示這個單詞,而且也包括這個單詞後的空格.在一開始也許我們會認為這個命令沒有太大的用處.因為w命令可以向前移動一個單詞,我們為什麼不用這個命令呢?
這是因為當我們執行選擇文字的操作時,選中的是從老的游標所在處到新的游標所在處之間的文字.當我們使用命令w來移動文字時,結果是游標置於下一個單詞的第一個字元上.如果這時我們要執行刪除操作,我們命令的執行是不僅刪掉了我們要刪掉的單詞,也同時刪除了下一個單詞的第一個字元.
而aw命令是將游標放在下一個單詞的第一個字元的前面.換句話說,我們選中的是下一個單詞前面的單詞以及空格,而不是選中的下一個單詞.
而另外一個使用aw命令而不使用w命令的原因就是不論游標置於一個單詞的哪一個字元上,aw命令都可以選中整個單詞,而w命令只是選中當前游標處和這個單詞結尾之間的字元.
如果我們僅僅是想選中一個單詞我們可以使用iw命令.
我們還可以使用下面的命令來選擇文字:
countaw 選中一個單詞以及其後的空格.
countiw 僅僅是選中一個單詞.
countaW 選中一個WORD以及其後的空格.
countiW 僅僅是選中一個WORD
countas 選中一個句子以及其後的空格.
countis 僅僅選中一個句子.
countap 選中一個段落以及後面的空格.
countip 僅僅是選中一個段落.
counta( 在括號所包括的文字內,選擇直到括號的文字幷包括括號.
counti( 與上面的命令相類似,只是不包括括號.
counta< 選擇<>內的文字,包括<>
counti< 選擇<>內的文字,不包括<>
counta[ 選擇[]內的文字,包括[]
counti[ 選擇[]內的文字,不包括[]
counta{ 選擇{}內的文字,包括{}
counti{ 選擇{}內的文字,不包括{}
在視覺化模式下,當我們選中一些文字以後,我們可以用命令o來使用游標移動選中的文字的另一個結尾處.然後我們可能再次執行o命令,來使得游標移動選中文字的另一個結尾處,也就我們來的地方.
而O命令可以在塊視覺化模式下將游標移動選中文字的另一角.換句話說,O命令是將游標移動選中文字中的同一行的結尾處.
在視覺化模式下選中的文字,我們可以用命令~來實現大小寫的轉換.而U命令是使得選中的文字變成大寫的形式,而u命令是將選中的文字變為小寫的形式.
我們可以在視覺化模式下選中文字,然後用命令J將這些選中的行合併為一行,並用空格來分隔這些行.如果我們希望在合併以並沒有空格來分隔,我們可以用命令gJ.
我們可以用命令gq來格式化視覺化模式下選中的文字.
我們還可以用g?命令來加密高亮顯示的文字,在這個命令中我們採用的是Vim中所採用的rot 13加密演算法.如果我們對同一個文字進行兩次加密操作,就相當我們進行了解密操作.
在視覺化模式下我們還可以用命令:來對指定的範圍進行命令列操作.例如我們要將文字塊寫入一個檔案我們可以這樣的來做:
在視覺化模式下選中我們要寫入檔案的文字,然後執行下面的命令:
:write block.txt
這樣就可以將指定的文字塊寫入檔案了.
命令!是使用外部的命令來對我們所要編輯的檔案中的文字進行操作.例如我們可以使用!sort來使用UNIX下的sort程式進行文字的排序.我們可以這樣的來做:
在視覺化模式下選中我們要進行操作的文字,然後執行下面的命令:
:!sort
這樣就可以對這些我們選中的文字進行排序操作了.
選擇模式是另一種的視覺化模式,他可以允許我們對選中的文字進行的快速的刪除作替換的操作.我們使用選擇模式也是很簡單的操作.我們可以高亮顯示文字,然後用<BS>來刪除這段文字.我們也可以高亮顯示文字,然後用我們所輸入的內容來替換這些文字.
那麼選擇模式和視覺化模式相比較又如何呢?在視覺化模式下,我們可以高亮顯示我們選中的文字,然後執行命令操作.換句話我們要用命令來結束視覺化模式.而在選擇模式下,命令僅限於<BS>(用於操作刪除操作)和可列印的字元(用於替換操作).這樣就會使得我們的操作變得更為簡單,因為我們不需要來輸入命令了,然而與視覺化模式相比較他也有著太多的限制.
我們可以用下面命令來開始一種選擇模式:
gh 進入字元選擇模式
gH 進入行選擇模式
gCTRL-H 進入塊選擇模式
在選擇模式下移動游標比在正常模式下要顯得困難一些.因為如果我們輸入任何的可列印字元,Vim就會刪掉我們選中的文字並進插入狀態開始我們的輸入.所以要選擇文字我們只好使用小方向鍵,CTRL以及功能鍵.
如果我們進行了如下的設定我們還可以用滑鼠來選擇文字:
:set selectmode=mouse
(注:如果沒有設定這個選項,可以在可視模式下執行滑鼠操作而不可以在選擇模式下執行滑鼠操作)
在選擇模式下,我們可以用命令<BS>或是CTRL-H來刪除我們選中的文字.如果我們輸入可列印的字元Vim編輯就會刪除我們選中的文字然後進入插入模式.
我們可以用命令CTRL-O來從選擇模式切換到視覺化模式.如果我們要視覺化模式和選擇模式中進行切換,我們可以使用CTRL-G命令.
在通常情況下,當我們選擇文字後,這些文字仍會保持選中的狀態.有時即使是我們在執行了命令以後,這些文字仍然保持選中的狀態.gV命令可以選得選中的文字在命令執行過後消失選中狀態.這個在我們使用巨集時顯得更為有用.我們用他來一些工作,工作完成以後,我們就希望他能消失.