Vim 編輯器的相容模式
目前,在我們講述 Vim 的教程中,討論過編輯器的模式行功能以及怎樣用外掛來擴充套件 Vim 的功能集。可正如我們所知,Vim 提供了非常多的內建功能:因此在本教程中更進一步,我們來談談在該編輯器啟動時的可用模式。
但在我們開始之前,請注意在本教程中提及的所有例子、命令及用法說明都是在 Ubuntu 14.04 上測試的,我們測試用的 Vim 版本是 7.4 。
Vim 中的相容模式與不相容模式
為了更好理解上述的 Vim 模式,你有必要先去了解下此編輯器初始化過程的一個重要方面。
系統級及本地 vimrc 檔案
當 Vim 啟動時,編輯器會去搜尋一個系統級的 vimrc 檔案來進行系統範圍內的預設初始化工作。
這個檔案通常在你係統裡 $VIM/vimrc
的路徑下,如果沒在那裡,那你可以透過在 Vim 裡面執行 :version
命令來找到它的正確存放位置。比如說,在我這裡,這個命令的相關部分的輸出結果如下:
...
...
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
...
...
...
可以看到那個系統 vimrc 檔案確實位於 $VIM/vimrc
,但我檢查了我機子上沒設定過 $VIM
環境變數。所以在這個例子裡 - 正如你在上面的輸出所看到的 - $VIM 在我這的路徑是 /usr/share/vim
,是一個回落值(LCTT 譯註:即如果前面失敗的話,最終採用的結果)。於是我試著在這個路徑尋找 vimrc ,我看到這個檔案是存在的。如上即是我的系統 vimrc 檔案,就如前面提過的那樣 - 它在 Vim 啟動時會被讀取。
在這個系統級 vimrc 檔案被讀取解析完後,編輯器會查詢一個使用者特定的(或者說本地的)vimrc 檔案。這個本地 vimrc 的搜尋順序是:環境變數 VIMINIT
、$HOME/.vimrc
、環境變數 EXINIT
, 和一個叫 exrc
的檔案。通常情況下,會存在 $HOME/.vimrc
或 ~/.vimrc
這樣的檔案,這個檔案可看作是本地 vimrc。
我們談論的是什麼相容性
就像我們談論 Vim 的相容性模式和不相容性模式那樣,這些模式的開啟和禁用會做出什麼樣的相容性也值得了解。要了解這些,先要知道 Vim 是 VIMproved 的縮寫,像這個全名暗示的那樣,Vim 編輯器是 Vi 編輯器的改進版。
經過改進意味著 Vim 的功能集比 Vi 的更大。為了更好的理解這倆編輯器的區別,點這裡。
當談論 Vim 的相容和不相容模式時,我們所說的相容性是指 Vim 相容 Vi。在相容模式下執行時,Vim 大部分增強及改善的功能就不可用了。不管怎樣,要記住這種模式下,Vim 並不能簡單等同 Vi - 此模式只是設定一些類似 Vi 編輯器工作方式的預設選項。
不相容模式 - 不用多說 - 使得 Vim 用起來跟 Vi 不相容,也使得使用者可以用到它的所有增強、改善及特徵。
怎麼啟用/禁用這些模式?
在 Vim 中嘗試執行 :help compatible
命令,接著你會看到如下語法:
'compatible' 'cp' boolean (預設開啟 ,當 |vimrc| 或 |gvimrc| 存在時關閉)
描述中說到相容模式預設開啟的,不過當 vimrc 檔案存在時會關閉。但說的是哪種 vimrc 檔案呢?答案是本地 vimrc。深入研究下 :help compatible
命令給出的詳情,你會發現下面內容說得更清楚:
事實上,這意味著當一個 |vimrc| 或 |gvimrc| 檔案存在時,Vim 會用預設的 Vim,否則它會用 Vi 預設的。(注:如果系統級的 vimrc 或 gvimrc 檔案中帶有 |-u| 引數,則不會這樣。)。
那麼在 Vim 啟動時,實際上進行的動作是,首先會解析系統 vimrc 檔案 - 在這時處於相容性模式預設開啟狀態。現在,無論何時發現一個使用者(或成為本地) vimrc ,不相容模式都會開啟。:help compatible-default
命令說的很清楚:
在 Vim 啟動時,‘compatible’選項是開啟的。這將在 Vim 開始初始化時應用。但是一旦之後發現使用者級 vimrc 檔案,或在當前目錄有一個 vimrc 檔案,抑或是
VIMINIT
環境變數已設定,Vim 就會被設為不相容模式。
假如你想無視預設的行為,要在編輯器開始解析系統 vimrc 檔案時開啟不相容模式,你可以透過新增如下命令到那個檔案的開頭來完成這個操作。
:set nocompatible
其他有用細節
這兒是一些關於這些模式的更有用的細節:
現在透過建立一個 .vimrc 檔案來設定或重置相容性會有一個副作用:(鍵盤)對映(
Mapping
)在解釋的時候會有衝突。這使得在用諸如回車控制符<CR>
等情況時會有影響。如果對映關係依賴於相容性的某個特定值,在給出對映前設定或者重置它。上述行為能夠用以下方式能覆蓋:
- 如果給出
-N
命令列引數,即使不存在 vimrc 檔案, ‘不相容模式’ 也會啟用。- 如果給出
-C
命令列引數,即使存在 vimrc 檔案, ‘相容模式’ 也會啟用。- 如果應用了
-u {vimrc}
引數,‘相容模式’將會啟用。- 當 Vim 的可執行檔案的名稱以
ex
結尾時,那這個效果跟給出-C
引數一樣:即使存在一個 vimrc 檔案,‘相容模式’ 也會啟用,因為當 Vim 以 “ex” 的名稱啟用時,就會讓 Vim 的工作表現得像 “前任” 一樣(LCTT 譯註:意即 Vim 像 Vi 一樣工作)。 ```
結論
我們都覺得,你可能不會發現你自己有機會處於一種你需要開啟 Vim 的 Vi 相容模式的情形中,但是那並不意味著你應該不知道 Vim 編輯器的初始化過程。畢竟,你絕不會知道這些知識什麼時候會幫到你。
via: https://www.howtoforge.com/tutorial/vim-editor-modes-explained/
作者:Himanshu Arora 譯者:ch-cn 校對:wxy
相關文章
- vim 列編輯模式模式
- vim編輯器
- vi和vim的編輯模式模式
- VIM編輯器的巨集操作
- vim編輯器常用的命令
- LINUX VIM編輯器Linux
- 『學了就忘』vim編輯器基礎 — 94、vim編輯器介紹
- 03_vim編輯器的使用
- 編輯器之神:VIM 的基本操作
- 高效使用Vim編輯器--Vim編輯器常用命令學習筆記筆記
- Linux-vim文字編輯器-三種模式-vim裡的替換-vim檢視模式-對比檔案Linux模式
- Linux編輯器Vim簡介Linux
- Vim 編輯器常用命令
- Git清空VIM編輯器內容Git
- Linux精講——vim編輯器Linux
- Vim編輯器常用命令
- Linux系統中的Vim編輯器Linux
- vim編輯器有哪些模式?學習linux需要學什麼模式Linux
- 使用 Vi/Vim 編輯器:基礎篇
- centos7安裝vim編輯器CentOS
- Linux系統下Vim編輯器的三種模式主要包含什麼?Linux模式
- 『學了就忘』vim編輯器基礎 — 95、命令模式中的相關命令模式
- 『學了就忘』vim編輯器基礎 — 96、末行模式中的相關命令模式
- 『學了就忘』vim編輯器基礎 — 97、vim使用技巧
- Linux– 檔案編輯器 vi/vim(1)Linux
- 編輯器之神VIM 總結 基礎部分
- Linux編輯器vim鍵盤詳解Linux
- 火爆Github的這個編輯器能超越Vim麼?Github
- 3 個可以替代 Emacs 和 Vim 的文字編輯器Mac
- Word 中出現公式不能編輯問題(相容模式)公式模式
- Linux 筆記分享五:VIM 文字編輯器Linux筆記
- linux下用vi,vim編輯時退出編輯模式(wq)無法儲存退出Linux模式
- Linux系列開坑記(二)-神的編輯器VimLinux
- 設定Vim編輯器裡Tab的長度,行號
- Vim沒上榜?Top 20編輯器的排名竟然這樣的......
- Linux編輯器Vim常用命令講解Linux
- 如何安裝和使用純文字編輯器 vi/vim
- Linux學習筆記(九)Vim文字編輯器的使用Linux筆記