Vim 編輯器的兼容模式

2021-03-06 Linux中國
編譯自: https://www.howtoforge.com/tutorial/vim-editor-modes-explained/ 
作者: Himanshu Arora
譯者: ch-cn

目前,在我們講述 Vim[1] 的教程中,討論過編輯器的模式行Modeline功能以及怎樣用插件[2]來擴展 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 的搜索順序[3]是:環境變量 VIMINIT、$HOME/.vimrc、環境變量 EXINIT, 和一個叫 exrc 的文件。通常情況下,會存在 $HOME/.vimrc 或 ~/.vimrc 這樣的文件,這個文件可看作是本地 vimrc。

我們談論的是什麼兼容性

就像我們談論 Vim 的兼容性模式和不兼容性模式那樣,這些模式的開啟和禁用會做出什麼樣的兼容性也值得了解。要了解這些,先要知道 Vim 是 VIMproved 的縮寫,像這個全名暗示的那樣,Vim 編輯器是 Vi 編輯器的改進版。

經過改進意味著 Vim 的功能集比 Vi 的更大。為了更好的理解這倆編輯器的區別,點這裡[4]。

當談論 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[5] 譯者:ch-cn 校對:wxy

本文由 LCTT[6] 原創編譯,Linux中國 榮譽推出

[1]: Vim - https://www.howtoforge.com/vim-basics

[2]: 插件 - https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-3/

[3]: 搜索順序 - http://vimdoc.sourceforge.net/htmldoc/starting.html#system-vimrc

[4]: 這裡 - http://askubuntu.com/questions/418396/what-is-the-difference-between-vi-and-vim

[5]: Himanshu Arora - https://www.howtoforge.com/tutorial/vim-editor-modes-explained/

[6]: LCTT - https://github.com/LCTT/TranslateProject

相關焦點

  • VIM編輯器學習
    Vim是一個類似於Vi的文本編輯器,不過在Vi的基礎上增加了很多新的特性,Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。 第一關是理解vim的設計思路,vim設計之初就是整個文本編輯都用鍵盤而非滑鼠來完成,鍵盤上幾乎每個鍵都有固定的用法,且vim的製作者希望用戶在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工作,將此模式設計為默認模式,初學者打開vim,如果直接輸入單詞,結果就會滴滴亂響,這是因為vim把用戶輸入的單詞理解為命令了。
  • Linux下vim編輯器的使用小技巧
    Vim是Linux作業系統中最常用一個編輯器。如配置文件的更改、環境變量的設置等等基本上都是在這個vim編輯器上完成。所以這是Linux系統管理員最常用的一個工具。不過這個工具雖然小,但是其有很多的實用小技巧。有些系統管理員可能並不知道。
  • Linux系列教程(十)——Linux文本編輯器vim
    結束了Linux常用命令的學習,接下來我們學習Linux最常用的文本編輯器命令 vim。其實最開始Linux系統的文本編輯器命令是 vi,後來出現了一個 vi 的增強版 vim,所以實際操作中我們還是使用增強版 vim。
  • 遊戲夜讀|vim,vim,vim
    比如:在作業系統中右鍵便可以輕鬆選擇vim打開文件了。vim是個老牌編輯器,當下最新的是v8.1,主要的作者只有一位:布拉姆·米勒 (Bram Moolenaar)。「Bram在1961年出生於荷蘭的利瑟(Lisse, Netherlands)。
  • 遊戲夜讀|vim一份極簡手冊
    到了後來,出現了一個預覽窗口能看到全文的編輯器創想,於是全屏編輯時代來臨,vim就是這個時代的一個優秀代表。搜索,下載,安裝,接著雙擊打開vim,來到一個歡迎頁面。首先,學會避免以自我為中心:不要按鍵盤上的字母"i"。映入眼帘的歡迎頁面有幾行介紹,包括幾個輸入提示,比如:查看版本、幫助、退出。
  • 初識Vi 文本編輯器 | Linux 中國
    可能每一個 Linux 和 BSD 發行版中都包含了 Vi,Vi 是一個輕量級的簡約型文本編輯器,由於其簡單簡潔的鍵盤快捷鍵和雙模式設計,很多用戶都喜歡它。  最初的 Vi 編輯器是由 的創建者 Bill Joy 編寫的應用程式。現代 Vi 的化身已經,包括多級撤銷、插入模式下更好的導航、行摺疊、語法高亮、插件支持等等。
  • vim命令使用總結
    vim簡介vim 是linux系統自帶的文本編輯器。vim 共有三種模式:命令模式:用vim打開文件就進入了命令模式;輸入模式:在命令模式輸入i/I/a/A/o/O就進入輸入模式;在輸入模式下按鍵esc,則退出輸入模式進入命令模式底線模式:在命令模式按下英文冒號:就進入了底線模式;二. vim
  • 十大最受歡迎的 React Native 應用開發編輯器
    作者丨 Murtaza Basrai譯者 丨 安翔市面上用於開發工作的編輯器非常多,筆者會經常因為不同的程式語言該如何選擇好用的編輯器而感到糾結。而在隨後從事 React Native 開發工作過程中,對相應的編輯器做了一些探索和研究,本文總結了一些非常適合移動應用開發的編輯器和 IDE。1.
  • linux-vi或vim命令
    vi編輯中中文亂碼,修改方法:set encoding=utf-8 或set encoding=utf8高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的::qx 開始記錄宏,並將結果存入寄存器xq 退出記錄模式@x 播放記錄在x寄存器中的宏命令
  • Vim,牛逼
    打開終端,鍵入「vim」,就可以進入啟動界面了,如下圖所示。Vim 有很多聰明的設計,所以很多其他工具也支持 Vim 模式,比如說 Visual Studio Code。很牛掰的一點是,Vim 逃離了滑鼠的「魔掌」,只通過鍵盤就可以肆意地操作文本。
  • 如何在使用 Vim 時訪問/查看 Python 幫助 | Linux 中國
    我是一名新的 Vim 編輯器用戶。我用它編寫 Python 代碼。有沒有辦法在 vim 中查看 Python 文檔而無需訪問網際網路?假設我的光標在 Python 的 print 關鍵字下,然後按下 F1,我想查看關鍵字 print 的幫助。如何在 vim 中顯示 python help() ?如何在不離開 vim 的情況下調用 pydoc3/pydoc 尋求幫助?
  • Linux-vi編輯器之簡單常用命令
    Ubuntu下的VI編輯器的使用1.實驗知識點2.Vi編輯器的工作文件3.Vi編輯器下文本的保存與退出實驗步驟練習一:切換到root用戶:1.請在/root這個目錄下建立一個vitest的目錄;接著下來,我要將 50 到 100 行之間的 man 改為MAN ,並且一個一個挑選是否需要修改;命令:在轉義模式下輸入:50,100s/man/Man/c8.修改完之後,突然反悔了,要全部復原;命令:在命令模式下輸入u9.
  • vim常用命令有哪些?Linux入門學習
    vim是一個文本編輯程序,沒有菜單,只有命令,且命令繁多。在運維培訓學習中,vim編輯器都有哪些知識點?有哪些命令需要掌握? 命令行模式下相關命令移動光標h:←左移l:→右移j:↓下移k:↑上移Ctr-r:反撤銷複製粘貼yy:複製當前行,n yy複製n行p:在光標所在位置向下新開闢一行,粘貼P:從光標所在行,開始粘貼可視模式
  • Vim 起步的五個技巧
    如今 Vim 是我最喜歡的 Linux 文本編輯器,也是開發者和系統管理者最喜愛的開源工具。我說的學習,指的是真正意義上的學習。想要精通確實很難,所以我只想要達到熟練的水平。我使用了這麼多年的 Linux ,我會的也僅僅只是打開一個文件,使用上下左右箭頭按鍵來移動光標,切換到插入模式,更改一些文本,保存,然後退出。但那只是 Vim 的最最基本的操作。
  • 15 款Python編輯器的優缺點,別再問我「選什麼編輯器」啦!
    有一個與 IDE 相似的術語——代碼編輯器(code editor)。我們先來探討二者的異同。什麼是代碼編輯器?代碼編輯器是一個能夠突出顯示語法和安排代碼版式的文本編輯器。高級代碼編輯器可以開發和修改代碼。IDE 和代碼編輯器有哪些共同優點?
  • Vim 入門:基礎 | Linux 中國
    真正的程式設計師,來自 xkcd[1]學生們可以使用像 Kate[2] 一樣的圖形文本編輯器,這也安裝在學校的電腦上了。對於那些可以使用 shell 但不習慣使用控制臺編輯器的學生,最流行的選擇是 Nano[3],它提供了很好的交互式菜單和類似於 Windows 圖形文本編輯器的體驗。
  • 在VIM中實現對嵌入式軟體的調試
    其強大的gdb調試工具可以方便地對嵌入式平臺上的程序進行跟蹤調試;而Linux下強悍的VIM編輯器,不僅可以方便地調用make文件對代碼進行編譯,而且通過腳本的配置還可輕鬆地成為高效的代碼編輯環境。流傳著這樣一種說法,「世界上的程式設計師分三種,一種使用Emacs,一種使用VIM,剩餘的是其他。」
  • Vim學習筆記整理
    >normal模式:進入vim不能編輯或者少按esc的不能編輯的模式;編輯模式:通過insert(插入)、append(追加)或者少新建一行o等等可以編輯內容模式;命令模式:類似退出 :wq這種模式;可視化模式:visual模式;(Visual
  • Linux 上 10 個最好的 Markdown 編輯器
    GNU EmacsEmacs 是 Linux 平臺上一款的流行文本編輯器。它是一個非常棒的、具備高擴展性和定製性的 Markdown 語言編輯器。ReTextReText 是為 Linux 和其它幾個 POSIX 兼容作業系統提供的簡單、輕量、強大的 Markdown 編輯器。
  • vim+py文件構造linux後門
    答案是可以使用,現如今的vim編輯器為了更好的支持python語言,默認是安裝了python擴展,通過vim的python擴展,也可以去啟動一個python程序。可通過「vim --version」查看是否已支持python擴展。