編譯自: https://opensource.com/article/18/5/shortcuts-vi-text-editor
作者: Dan Sonnenschein
那些常見編輯任務的快捷鍵可以使 Vi 編輯器更容易使用,更有效率。
學習使用 vi 文本編輯器 確實得花點功夫,不過 vi 的老手們都知道,經過一小會兒的鍛鍊,就可以將基本的 vi 操作融匯貫通。我們都知道“肌肉記憶”,那麼學習 vi 的過程可以稱之為“手指記憶”。
當你抓住了基礎的操作竅門之後,你就可以定製化地配置 vi 的快捷鍵,從而讓其處理的功能更為強大、流暢。我希望下面描述的技術可以加速您的協作、編程和數據操作。
在開始之前,我想先感謝下 Chris Hermansen(是他僱傭我寫了這篇文章)仔細地檢查了我的另一篇關於使用 vi 增強版本 Vim 的文章。當然還有他那些我未採納的建議。
首先,我們來說明下面幾個慣例設定。我會使用符號
使用 map 命令來進行按鍵的映射。第一個例子是 write 命令,通常你之前保存使用這樣的命令:
:w
雖然這裡只有三個鍵,不過考慮到我用這個命令實在是太頻繁了,我更想“一鍵”搞定它。在這裡我選擇逗號鍵,它不是標準的 vi 命令集的一部分。這樣設置:
:map , :wCTRL-v
這裡的 CTRL-v 事實上是對
在上面的映射中,右邊的部分會在屏幕中顯示為 :w^M,其中 ^ 字符就是指代 control,完整的意思就是 CTRL-m,表示就是系統中一行的結尾。
目前來說,就很不錯了。如果我編輯、創建了十二次文件,這個鍵位映射就可以省掉了 2*12 次按鍵。不過這裡沒有計算你建立這個鍵位映射所花費的 11 次按鍵(計算 CTRL-v 和 : 均為一次按鍵)。雖然這樣已經省了很多次,但是每次打開 vi 都要重新建立這個映射也會覺得非常麻煩。
幸運的是,這裡可以將這些鍵位映射放到 vi 的啟動配置文件中,讓其在每次啟動的時候自動讀取:文件為 .exrc,對於 vim 是 .vimrc。只需要將這些文件放在你的用戶根目錄中即可,並在文件中每行寫入一個鍵位映射,之後就會在每次啟動 vi 生效直到你刪除對應的配置。
在繼續說明 map 其他用法以及其他的縮寫機制之前,這裡在列舉幾個我常用提高文本處理效率的 map 設置:
映射顯示為:map X :xCTRL-v
上面的 map 指令的意思是寫入並關閉當前的編輯文件。其中 :x 是 vi 原本的命令,而下面的版本說明之前的 map 配置可以繼續用作第二個 map 鍵位映射。
映射顯示為:map v :e
上面的指令意思是在 vi 編輯器內部切換文件,使用這個時候,只需要按 v 並跟著輸入文件名,之後按
映射顯示為:map CTRL-vCTRL-e :e
# 在這裡是 vi 中標準的符號,意思是最後使用的文件名。所以切換當前與上一個文件的方法就使用上面的映射。
映射顯示為map CTRL-vCTRL-r :!spell %>err &CTRL-v
(注意:在兩個例子中出現的第一個 CRTL-v 在某些 vi 的版本中是不需要的)其中,:! 用來運行一個外部的(非 vi 內部的)命令。在這個拼寫檢查的例子中,% 是 vi 中的符號用來指代目前的文件, > 用來重定向拼寫檢查中的輸出到 err 文件中,之後跟上 & 說明該命令是一個後臺運行的任務,這樣可以保證在拼寫檢查的同時還可以進行編輯文件的工作。這裡我可以鍵入 verr
還用很多字符串輸入的縮寫,也使用了各種 map 命令,比如:
:map! CTRL-o \fI
:map! CTRL-k \fP
這個映射允許你使用 CTRL-o 作為 groff 命令的縮寫,從而讓讓接下來書寫的單詞有斜體的效果,並使用 CTRL-k 進行恢復。
還有兩個類似的映射:
:map! rh rhinoceros
:map! hi hippopotamus
上面的也可以使用 ab 命令來替換,就像下面這樣(如果想這麼用的話,需要首先按順序運行: 1、 unmap! rh,2、umap! hi):
:ab rh rhinoceros
:ab hi hippopotamus
在上面 map! 的命令中,縮寫會馬上的展開成原有的單詞,而在 ab 命令中,單詞展開的操作會在輸入了空格和標點之後才展開(不過在 Vim 和我的 vi 中,展開的形式與 map! 類似)。
想要取消剛才設定的按鍵映射,可以對應的輸入 :unmap、 unmap! 或 :unab。
在我使用的 vi 版本中,比較好用的候選映射按鍵包括 g、K、q、 v、 V、 Z,控制字符包括:CTRL-a、CTRL-c、 CTRL-k、CTRL-n、CTRL-p、CTRL-x;還有一些其他的字符如 #、 *,當然你也可以使用那些已經在 vi 中有過定義但不經常使用的字符,比如本文選擇 X 和 I,其中 X 表示刪除左邊的字符,並立刻左移當前字符。
最後,下面的命令
:map
:map!
:ab
將會顯示,目前所有的縮寫和鍵位映射。
希望上面的技巧能夠更好地更高效地幫助你使用 vi。
via: https://opensource.com/article/18/5/shortcuts-vi-text-editor
作者: Dan Sonnenschein 選題: lujun9972 譯者: sd886393 校對: wxy
本文由 LCTT 原創編譯, Linux中國 榮譽推出
閱讀更多 Linux技術 的文章