學習vi和vim編輯器(11) 高階編輯方法(2)

2021-12-30 05:12:38 字數 2693 閱讀 9538

儲存命令:

vi和ex中提供了許多方法來儲存一長串命令序列,這樣當呼叫已儲存的序列時,只需要輸入幾個字元即可。

單詞縮寫:

可以定義縮寫,讓vi在處於插入模式時替你自動將輸入展開成原文。定義縮寫的命令為:" ab abbr phrase ",其中abbr就是給phrase指定的縮寫。注意,在插入模式中,只有將縮寫當成單個單詞輸入時,縮寫才會被展開,單詞內的abbr不會被展開。如下圖所示,將"vi"定義為"visual editor"的縮寫。

通過" :unab abbr" 來取消乙個縮寫的定義,這樣之後再輸入該縮寫時,縮寫將不會被展開。通過" :ab "命令列出當前所有定義的縮寫。

還有一點值得說明,在實際測試時發現,如果縮寫出現在所代表的片語中,該縮寫只會展開一次,並不會無限遞迴展開(但有的版本的vi編輯器可能會無限展開或者縮寫定義失敗)。

使用map命令:

map命令將命令序列「對應」到乙個沒有用到的鍵。所以map命令的作用類似於ab命令,但是map命令是對vi的命令模式定義巨集,而ab命令是對插入模式定義巨集。

:map x sequence:定義字元x對映到sequence命令序列;

:unmap x sequence: 取消字元x所對映的命令;

:map:列出所有被對映的字元;

需要注意的是,最好只對命令模式中沒有用到的鍵做對映。如果對vi中已經使用的按鍵做對映,則該鍵原有的功能就會消失。而在命令模式中沒有用到的按鍵有(不同版本的vi會有所不同):字母鍵:g,k,q;控制鍵:ctrl+a,ctrl + k,ctrl + o,ctrl + w,ctrl + x;符號:_,*,\與=。

如下圖所示,把交換兩個單詞順序的命令序列對映為" q "(" dw "用於刪除乙個單詞," e "移到下乙個單詞的結尾," l "往右移動一格," p "放置剛剛刪除的單詞),這樣便可以在編輯會話的任何時候,用q鍵來交換兩個單詞的順序:

保護按鍵免被ex解釋:

在定義對映命令時,某些按鍵並不能直接輸入並把它們作為命令序列的一部分,例如enter,esc,backspace,delete鍵等。如果需要把這些鍵作為命令序列的一部分,需要在前面加上ctrl+v,從而轉換按鍵的正常意義。而且輸入ctrl+v後,螢幕上顯示的是" ^ "字元,接著輸入enter鍵後,螢幕上顯示的是" ^m "。類似地,退格鍵轉義後顯示為" ^h ",esc鍵轉義後顯示為" ^[ "。

這種用法可以用在任何ex命令中,而不僅僅是map命令。這就意味著我們可以在縮寫命令或替換命令中輸入換行符,退格符等。例如,對num定義如下所示的縮寫:

在插入模式中輸入num後,num便會自動展開為:

還有幾個需要注意的事項:

(1)豎線(|)在ex中具有特殊含義(作為多個ex命令的分隔符號),所以不能在插入模式的對映鍵中使用豎線。

(2)如果需要將控制字元作為對映字元,例如將" ctrl+a "對映為sequence命令序列,可以使用如下命令 " :map ctrl+a sequence ",但是有三個控制字元必須用" ctrl+v "進行轉義,分別為" ctrl+t ", " ctrl+w ", " ctrl+x "。 因此如果要對" ctrl+t "進行對映,則需要按以下方式輸入":map ctrl+v ctrl+t sequence "。但是實際測試時,並不是這樣,例如可以直接對" ctrl+x "進行對映,前面並不需要進行轉義。反倒是" ctrl+a "要進行轉義,難道書上又講錯了,這裡先記下來吧。

(3)對映序列中可以包含其他對映命令,也就是說允許巢狀對映序列。該功能是由vi編輯器的remap選項控制的,而且該選項預設是開啟的。

對映鍵的範例:

(1)大多數時候我們按" e "鍵將游標移動到單詞結尾是為了在單詞後面新增內容,因此可以做如下對映:

這樣在命令模式中輸入" e "鍵就可以直接移動到單詞結尾並進入插入模式。

(2)儲存乙個檔案並編輯下乙個檔案:

再次提醒,螢幕上顯示的" ^m "對應的按鍵為:先輸入" ctrl+v ",再輸入" enter "。

(3)將c/c++裡的某行**進行注釋:

這樣在命令模式中直接輸入g,就能對該行**進行注釋。其實方法還有很多,再給出一種用搜尋命令實現的方法:

插入模式中的對映鍵:

一般來說,對映應該只在命令模式中有用,因為在插入模式中輸入某個按鍵就應該代表輸入相應的文字,而不是代表執行相應的命令序列。但是,通過在map命令後面加上感嘆號(!),即可強制覆蓋按鍵的原有含義,以產生插入模式中的對映行為。

例如前面對" e "鍵進行如下的對映:"map e ea",這樣在命令模式中輸入" e ",就能夠直接將游標移動到單詞尾部並進入插入模式。但是如果在插入模式中使用" e "鍵,就代表輸入字母" e "。如果想在插入模式中達到同樣的效果,需要按以下方式定義:

這樣在插入模式中輸入" e "鍵也能夠將游標移動到當前單詞尾部並仍然保持為插入模式。但這樣就存在乙個問題:再也無法輸入文字" e "了。如果想讓字元" e "恢復正常的文字輸入方式,可以使用如下命令:" :unmap! e "(但是實際測試時該命令無法使" e "鍵恢復為輸入文字,難道書上又出錯了?)。

本章vi命令總結:

" :ab "," :unab "," :map "," :unmap ",轉義按鍵" ctrl+v "," :map! "," :unmap! "。

vi和vim編輯器

vi vim 是上linux非常常用的編輯器,很多linux發行版都預設安裝了vi vim vi vim 命令繁多但是如果使用靈活之後將會大大提高效率。vi是 visual inte ce 的縮寫,vim是vi improved 增強版的vi 在一般的系統管理維護中vi就夠用,如果想使用 加亮的話可...

Vi和Vim編輯器

vi編輯器是所有unix及linux系統下標準的編輯器,他就相當於windows系統中的記事本一樣.vim 具有程式編輯的能力,可以以字型顏色辨別語法的正確性,方便程式設計 因為程式簡單,編輯速度相當快速。vim可以當作vi的公升級版本,他可以用多種顏色的方式來顯示一些特殊的資訊。vim會依據副檔名...

vi和vim編輯器

所有的linux系統都會內建 vi文字編輯器 vim具有程式編輯的能力,可以看做是vi的增強版本 1 正常模式 在正常模式下,我們可以使用快捷鍵 以vim代開乙個檔案就直接進入正常模式了,在這個模式中可以使用 上下左右 按鍵來移動游標,你可以使用 刪除字元 或 刪除整行 來處理檔案內容,也可以使用 ...