Vim 快速指南



Vim - 簡介

Vim 編輯器是當今我們使用的更流行的文字編輯器之一。它是 Vi 編輯器的克隆,由 Bram Moolenaar 編寫。它是一個跨平臺編輯器,可在大多數流行平臺上使用,例如 Windows、Linux、Mac 和其他 UNIX 變體。在本節中,我們將討論以下內容:

  • 簡介
  • Vim 的特性
  • 為什麼建立 Vim?

簡介

Vim 是 **Vi IMproved** 的縮寫。它是 Bram Moolenaar 編寫的免費開源文字編輯器。它於 1991 年首次釋出用於 UNIX 變體,其主要目標是增強 1976 年釋出的 Vi 編輯器。

Vim 被認為是 Vi 編輯器的克隆。像 Vi 一樣,它也是以命令為中心的編輯器。學習 Vim 的一個優勢是——它隨處可用。使用任何 UNIX 變體,如 Linux、Mac、HP-UX、AIX 和許多其他變體,Vim 預設都存在。Vim 傳統上沒有 GUI,但現在有一個名為 gVim 的單獨安裝程式,它提供了 GUI。

Vim 的特性

本節討論 Vim 的一些重要特性:

  • 記憶體佔用非常低

  • 它是命令為中心的。你可以用少量命令執行復雜的文字相關任務

  • 它高度可配置,並使用簡單的文字檔案來儲存其配置

  • Vim 有許多可用的外掛。可以使用這些外掛以極大的方式擴充套件其功能

  • 它支援多個視窗。使用此功能,螢幕可以分割成多個視窗

  • 與多個視窗一樣,它也支援多個緩衝區

  • 它支援多個標籤,允許處理多個檔案

  • 它支援錄製功能,允許以重複的方式錄製和播放 Vim 命令

為什麼建立 Vim

Vim 基於 Bill Joy 於 1976 年建立的原始 Vi 編輯器。在 90 年代,Vi 在 Vi 和 Emacs 編輯器之間存在的所謂的“編輯器大戰”中落後了。因此,Bram 實現了許多 Emacs 社群用來論證為什麼 Emacs 比 Vi/Vim 更好的缺失功能。

Vim - 安裝和配置

Vim 是一個輕量級軟體包,其安裝非常簡單。在本節中,我們將討論以下內容:

  • 在 Windows 平臺上安裝
  • 在基於 Debian 的 Linux 上安裝
  • 在基於 RPM 的 Linux 上安裝

在 Windows 平臺上安裝

Vim 沒有任何特定要求。它是一個簡單的軟體包,提供了所有依賴項。

安裝

  • 要下載 Vim,請訪問 vim.org

  • 點選左側面板的“下載”選項

  • 點選 PC - MS-DOS 和 MS-Windows 選項

  • 從此頁面下載 .exe 安裝程式。在編寫本教程時,安裝程式名稱為 gvim80.exe

  • 雙擊安裝程式並按照螢幕上的說明完成安裝

配置

Vim 將其配置儲存在一個名為 _vimrc 的簡單文字檔案中,該檔案位於使用者的 home 目錄下。

  • 要在終端中查詢當前使用者的 home 目錄,請執行以下命令:

$ echo %userprofile%
  • 導航到 home 目錄並建立一個名為 _vimrc 的新檔案。確保此檔案沒有任何副檔名。

  • 在文字編輯器中開啟此檔案,輸入以下文字並儲存:

set nu
  • 現在,開啟檔案時,Vim 將顯示行號。稍後我們將向此檔案新增更多選項。

在基於 Debian 的 Linux 上安裝

與 Windows 相比,在 Linux 平臺上安裝非常簡單。本節介紹在基於 Debian 的 Linux 上的安裝和配置。

安裝

  • 在終端中執行以下命令:

$ sudo apt-get update 
$ sudo apt-get install vim
  • 要確保 Vim 正確安裝,請執行以下命令:

$ which vim
  • 它應該列印 Vim 二進位制檔案的路徑。在我的情況下,它是:

/usr/bin/vim

配置

Vim 將其配置儲存在一個名為 .vimrc 的簡單文字檔案中,該檔案位於使用者的 home 目錄下。

  • 要在終端中查詢當前使用者的 home 目錄,請執行以下命令:

$ echo $HOME
  • 導航到 home 目錄並建立一個名為 .vimrc 的新檔案。確保此檔案沒有任何副檔名。

  • 在文字編輯器中開啟此檔案,輸入以下文字並儲存:

set nu
  • 現在,開啟檔案時,Vim 將顯示行號。稍後我們將向此檔案新增更多選項。

在基於 RPM 的 Linux 上安裝

本節介紹在基於 RPM 的 Linux 上的安裝和配置。

安裝

  • 在終端中執行以下命令:

$ su - 
$ yum install vim
  • 要確保 Vim 正確安裝,請執行以下命令:

$ which vim
  • 它應該列印 Vim 二進位制檔案的路徑。在我的情況下,它是:

/usr/bin/vim

配置

Vim 將其配置儲存在一個名為 .vimrc 的簡單文字檔案中,該檔案位於使用者的 home 目錄下。

  • 要在終端中查詢當前使用者的 home 目錄,請執行以下命令:

$ echo $HOME
  • 導航到 home 目錄並建立一個名為 .vimrc 的新檔案。確保此檔案沒有任何副檔名。

  • 在文字編輯器中開啟此檔案,輸入以下文字並儲存:

set nu
  • 現在,開啟檔案時,Vim 將顯示行號。稍後我們將向此檔案新增更多選項。

Vim - 其它類似編輯器

Vim 是原始 Vi 編輯器的克隆。在本節中,我們將討論其他 Vi 克隆。本節的主要目的是瞭解其他克隆及其與原始 Vi 編輯器的相容性。

在本節中,我們將討論以下內容:

  • Vi
  • Stevie
  • Elvis
  • nvi
  • vile
  • 與原始 Vi 的相容性

Vi

Vi 是 Visual 的縮寫。它最初為 UNIX 建立的面向螢幕的文字編輯器。Vi 的原始程式碼由 Bill Joy 於 1976 年編寫,並首次在 BSD 平臺上釋出。Vi 是 ed 編輯器的擴充套件,當時最常見。

Vim 是第一個引入多種模式的編輯器。文字編輯、文字選擇和命令執行分別有單獨的模式。Vim 編輯器支援所有這些模式。本教程的後續部分將介紹這些模式。

Stevie

Stevie 編輯器是為 Atari ST 平臺開發的。它於 1987 年釋出,是 ST Editor for VI Enthusiasts 的縮寫。

它非常簡單,只提供了原始 Vi 編輯器的一小部分子集。但是,它為遷移到 Atari ST 平臺的使用者提供了熟悉的環境。

Elvis

Elvis 的主要目的是消除 Stevie 編輯器的限制。Stevie 曾經將整個檔案載入到 RAM 中,Elvis 透過引入緩衝區消除了此限制。它還在其中添加了一些功能,例如語法高亮顯示、多個視窗支援、網路支援和簡單的 GUI。

nvi

nvi 代表 new Vi。它是 AT&T 實驗室和加州大學伯克利分校計算機科學研究組 (CSRC) 之間許可證糾紛的結果。Vi 基於 ed 編輯器,並受 AT&T 的許可,這限制了他們將 Vi 與 BDS 一起分發。因此,他們重寫了 Vi 並將其在 BSD 許可下發布。

Vim

Vim 是 Vi 的改進版本,它添加了許多 Vi 缺乏的功能。它添加了許多有用的功能,例如:

  • 多個視窗/標籤/緩衝區
  • Vim 指令碼語言的引入
  • 超過 200 種語言的語法高亮顯示
  • 與編譯器、直譯器和偵錯程式的整合

Vile

Vile 是 Vi like Emacs 的縮寫,它試圖將兩個編輯器的流行功能結合到一箇中。Vile 的一些流行功能是:

  • 每種檔案型別一種編輯模式
  • Vile 過程語言的引入
  • 命名函式,根據使用者選擇繫結鍵

與原始 Vi 的相容性

儘管上述編輯器被認為是 Vi 克隆,但它們與原始 Vi 不完全相容。下表顯示了有關其相容性的更多詳細資訊:

克隆 Vi 相容性 說明
STEVIE 10% 有限的功能是通用的
Vile 10% 有限的功能和 Vi 模式是通用的
Elvis 80% 更多功能是通用的
nvi 95% 更多功能是通用的
Vim 99% 幾乎與 Vi 相同,並具有一些附加功能

Vim - 熟悉Vim

從本節開始,我們將開始實際操作 Vim。在本節中,我們將討論以下內容:

  • 啟動 Vim

  • Vim 模式

  • 建立新檔案

  • 以只讀模式檢視檔案

  • 編輯現有檔案

啟動 Vim

Vim 有點不同於今天的基於 GUI 的編輯器。它可以從 GUI 和終端啟動和使用。

使用圖形啟動器

  • 要從圖形啟動器啟動 Vim,只需雙擊 gVim 圖示。它將開啟編輯器視窗,如下所示:

Graphical

使用終端

在終端中使用 Vim 在 Windows 和 Linux 平臺上都相同。執行以下步驟以從終端啟動和退出 Vim:

  • 開啟終端並輸入 vim 命令,如下所示:

$ vim
  • 它將在終端中開啟 Vim,如下所示:

Terminal
  • 要關閉它,請按 Esc 鍵,然後按冒號 (:) 和 q。在 Vim 中,q 命令代表退出。此命令將顯示在編輯器本身的左下角:

Terminal One

Vim 模式

Vim 支援多種模式。本節討論一些將在日常生活中使用的重要模式。

命令模式

這是 Vim 啟動時的預設模式。我們可以在此模式下輸入編輯器命令。我們可以在此模式下使用各種命令,例如複製、貼上、刪除、替換等等。我們將在後面的部分討論這些命令。

注意 - 從這裡開始,任何沒有冒號的 Vim 命令都表示我們在此模式下執行該命令。

插入模式

你可以使用此模式輸入/編輯文字。要從預設命令模式切換到插入模式,請按 i 鍵。它將顯示編輯器左下角的當前模式。

一旦進入插入模式,我們就可以輸入任何文字。下圖顯示了這一點:

Modes

使用 Escape 鍵從此模式切換回命令模式。

命令列模式

此模式也用於輸入命令。此模式中的命令以冒號 (:) 開頭。例如,在上一節中,退出命令在此模式下輸入。我們可以從命令模式或插入模式進入此模式。

  • 要從命令模式切換到此模式,只需鍵入冒號

  • 要從插入模式切換到此模式,請按 Escape 並鍵入冒號

在下圖中,左下角的冒號表示行模式。

Commandline

注意 - 從這裡開始,任何以冒號開頭的 Vim 命令都表示我們在此模式下執行該命令。

可視模式

在此模式下,我們可以直觀地選擇文字並在選定的部分上執行命令。

  • 要從命令模式切換到可視模式,請鍵入 v

  • 要從任何其他模式切換到可視模式,請首先按 Escape 切換回命令模式,然後鍵入 v 切換到可視模式

在下圖中,左下角顯示可視模式。

建立新檔案

執行以下步驟以建立和儲存新檔案:

  • 執行以下命令以開啟 Vim

$ vim
  • 在 Vim 中鍵入以下命令

:edit message.txt

    如果檔案已存在,它將重新載入檔案

  • 切換到插入模式

i
  • 輸入一些文字

  • 切換回命令模式

Esc
  • 將更改儲存到檔案

:w

現在將建立 message.txt 檔案。

  • 退出 Vim

:q

以只讀模式開啟檔案

使用 –R 選項以只讀模式開啟檔案

$ vim -R message.txt

在下圖中,左下角顯示只讀模式:

Open File

或者,你可以使用 view 命令來獲得相同的結果。

$ view message.txt

編輯現有檔案

執行以下步驟以編輯現有檔案:

  • 使用 Vim 開啟檔案

$ vim message.txt
  • 切換到插入模式並在其中輸入一些文字。

i
  • 不儲存更改就退出編輯器

:q!

  • 使用以下命令儲存更改並退出編輯器:

:wq

Vim - 獲取幫助

Vim是一個功能豐富的編輯器,因此記住它的所有功能是很困難的。但是不用擔心,我們隨時可以尋求幫助。幸運的是,Vim自身提供了幫助。

在本節中,我們將討論以下內容:

  • 訪問幫助手冊
  • 特定主題的幫助
  • 在手冊中搜索幫助短語
  • 訪問線上幫助

訪問幫助手冊

幫助手冊與Vim編輯器一起提供,內容非常全面。要訪問幫助,請執行以下命令:

:help

Access

特定主題的幫助

幫助手冊將顯示關於Vim的全部幫助資訊。但是,如果我們只對特定主題感興趣呢?Vim也為此提供了命令,語法如下:

:help <topic-name>

在上面的命令中,用您感興趣的主題替換<topic-name>。例如,要訪問關於Vim模式的幫助,請執行以下命令:

:help modes

Specific

在手冊中搜索幫助短語

只有知道主題名稱才能搜尋特定主題。但是,如果不知道幫助主題的確切名稱怎麼辦?在這種情況下,您可以使用以下命令:

:helpgrep <phrase>

例如,要訪問關於Vim中導航的幫助,請執行以下命令:

:helpgrep navigation

Search

訪問線上幫助

Vim還提供線上幫助。要訪問線上幫助:

Vim - 編輯

Vim提供了許多命令,使編輯功能非常強大。本章將討論以下內容:

  • 插入
  • 追加
  • 開啟新行
  • 替換
  • 更改
  • 替換
  • 連線

在游標前插入文字

要在游標前插入文字,請執行以下步驟:

  • 要在游標前插入文字,請執行以下步驟
  • 切換到插入模式
i

在行首插入文字

假設您位於行的中間,並且想要在當前行的開頭插入文字,則執行以下步驟:

  • 切換到命令模式
Esc
  • 啟用插入模式
I

此操作將游標移動到當前行的開頭,並將Vim切換到插入模式。

在游標後追加文字

要在游標後追加文字,請執行以下步驟:

  • 切換到命令模式並將游標移動到適當的位置
Esc
  • 切換到插入模式
a

此操作將游標向後移動一個位置,並將Vim切換到插入模式。

在行尾追加文字

假設您位於行的中間,並且想要在當前行的末尾追加文字,則執行以下步驟:

  • 切換到命令模式
Esc
  • 切換到插入模式
A

此操作將游標移動到行尾,並將Vim切換到插入模式。

在游標下方開啟新行

假設您位於行的中間,並且想要在當前行的下方開啟新行,則執行以下步驟:

  • 切換到命令模式
Esc
  • 切換到插入模式
o

此操作將在當前行下方插入空行,並將Vim切換到插入模式。

在游標上方開啟新行

假設您位於行的中間,並且想要在當前行的上方開啟新行,則執行以下步驟:

  • 切換到命令模式
Esc
  • 切換到插入模式
o

此操作將在當前行上方插入空行,並將Vim切換到插入模式。

替換文字

假設您要替換單個字元,請執行以下步驟:

  • 切換到命令模式
Esc
  • 將游標移動到適當的位置
  • 切換到插入模式
s

此操作將刪除游標下的字元,並將Vim切換到插入模式。要替換整行,請使用:

s

此操作將刪除整行,並將Vim切換到插入模式。

更改文字

假設您要更改當前行中的文字,請執行以下步驟:

  • 切換到命令模式
Esc
  • 執行以下命令:
cc

這類似於使用S進行替換操作。

要從當前游標位置更改文字,請執行以下命令:

C

此操作將刪除當前游標位置後的文字,並將Vim切換到插入模式。

替換文字

要替換單個字元,請執行以下步驟:

  • 切換到命令模式
Esc
  • 將游標移動到適當的位置
  • 執行以下命令:
r
  • 輸入要替換的字元。

請注意,此命令不會將Vim切換到插入模式。

要替換整行,請執行:

R

它將Vim切換到替換模式,如下圖所示:

Replace

連線文字

要連線兩行,請執行以下步驟:

  • 切換到命令模式
Esc
  • 將游標移動到相應的行
  • 執行以下命令:
J

Vim - 導航

Vim對高階導航有很好的支援。本章將討論一些流行的導航技巧,這些技巧有助於提高生產力。

基本導航

在基本導航中,我們可以按位置向左、向右、向上和向下導航。可以使用以下命令:

序號 命令和說明
1 h

將游標向左移動一個位置

2 l

將游標向右移動一個位置

3 k

將游標向上移動一行

4 j

將游標向下移動一行

要執行多位置導航,請將數字與這些命令一起使用。例如,要將游標從當前行向下導航10行,請執行以下命令:

10j

您也可以將數字與其餘命令一起使用。

除此之外,以下命令還可以執行一些有用的導航操作。

序號 命令和說明
1 0

將游標移動到當前行首

2 $

將游標移動到當前行尾

3 Ctrl + f

向下滾動整頁

4 Ctrl + b

向上滾動整頁

導航到行

可以使用以下命令導航到特定行:

序號 命令和說明
1 :n

跳轉到第n行

2 :0

跳轉到檔案開頭

3 :$

跳轉到檔案結尾

單詞導航

我們可以使用以下命令進行單詞導航:

序號 命令和說明
1 w

將游標移動到下一個單詞的開頭

2 e

將游標移動到當前單詞的結尾

3 b

將游標移動到前一個單詞的開頭

使用跳轉

Vim使用跳轉列表跟蹤您的導航。您可以透過該列表向後和向前移動。

跳轉列表透過跟蹤檔名、行號和列號來跟蹤您訪問過所有位置。

要檢視跳轉列表,請執行以下命令:

:jumps

以下命令基於跳轉列表:

序號 命令和說明
1 Ctrl + o

跳轉回上一個位置

2 Ctrl + i

跳轉到下一個位置

Vim - 再次學習編輯

我們之前已經看到了基本的編輯操作。讓我們瞭解Vim的其他一些編輯功能。在本節中,我們將討論以下內容:

  • 緩衝區
  • 交換檔案
  • 剪下、複製、刪除、貼上操作
  • 撤消和重做操作

緩衝區

緩衝區是Vim使用的臨時記憶體。當我們在編輯器中開啟檔案時,Vim會將其內容從磁碟驅動器載入到記憶體(RAM)。每當我們編輯檔案時,實際上都是在編輯緩衝區中的檔案。一旦我們完成編輯並儲存檔案,只有緩衝區內容才會傳輸到相應的檔案。

交換

交換區是Vim建立的檔案,用於定期儲存緩衝區內容。在編輯檔案時,由於各種原因,我們的更改可能會丟失,Vim提供交換檔案來提供資料恢復。

要獲取交換檔案的實際名稱,請執行以下命令:

:swapname

例如,在我的情況下,名稱為message.txt.swp,如下圖所示:

Swap

剪下、複製和貼上操作

我們經常對文字執行剪下、複製和貼上操作。Vim提供以下命令來執行這些操作(y表示提取,p表示貼上操作):

序號 命令和說明
1 x

刪除游標位置的字元

2 X

刪除游標位置之前的字元

3 y

複製游標位置的單個字元

4 p

在游標位置後貼上字元

5 P

在游標位置前貼上字元

多位置命令

我們也可以將剪下、複製和貼上命令與單詞和句子一起使用。下表顯示了這一點:

序號 命令和說明
1 dw

刪除游標位置的單詞

2 D

從游標位置刪除整行

3 dd

刪除整行

4 Y

複製整行

5 yy

複製整行

要執行多行/多字操作,只需將數字與命令一起使用即可。您也可以將此語法與其他命令一起使用。例如,要刪除3個單詞,請使用:

3dw

撤消

我們可以撤消單個或多個操作。要執行一次撤消操作,請執行:

u

要執行多次撤消操作,請將數字與同一命令一起使用。例如,以下命令將撤消最後3個操作:

3u

除此之外,要撤消所有操作,請執行以下命令:

U

重做

重做是撤消的反向操作。執行任何命令來執行重做操作。

Ctrl + r
OR
: red

Vim - 搜尋

搜尋是一個非常常見的操作,也是我們大多數時間都會使用的一種操作。在本章中,我們將看到一些允許有效執行這些操作的命令。

在本節中,我們將討論以下內容:

  • 搜尋設定
  • 在當前檔案中搜索
  • 在多個檔案中搜索
  • 在幫助檔案中搜索

搜尋相關設定

要執行增量搜尋,請執行以下命令:

:set incsearch

要突出顯示搜尋結果,請執行以下命令:

:set hlsearch

此命令將自動突出顯示當前匹配項。例如,在下圖中,fox單詞被突出顯示:

Related

要停用增量和突出顯示搜尋,請執行以下命令:

:set noincsearch
:set nohlsearch

在當前檔案中搜索

向前搜尋

使用以下命令執行向前搜尋:

序號 命令和說明
1 /<expression>

向前搜尋表示式

2 n

查詢下一個匹配項。這與查詢下一個相同

3 N

查詢上一個匹配項。這與查詢上一個相同

4 //

重複上一次向前搜尋

向後搜尋

使用以下命令執行向後搜尋:

序號 命令和說明
1 ?<expression>

向後搜尋表示式

2 n

查詢上一個匹配項。這與查詢上一個相同

3 N

查詢下一個匹配項。這與查詢下一個相同

4 ??

重複上一次向後搜尋

搜尋游標下的單詞

將游標放在任何單詞下,並執行以下命令來執行搜尋操作:

序號 命令和說明
1 *

搜尋當前單詞的下一個匹配項

2 #

搜尋當前單詞的上一個匹配項

在多個檔案中搜索

使用vimgrep命令,我們可以在多個檔案中搜索<expression>。例如,以下命令在所有文字檔案中搜索字串 - Jarvis

:vimgrep Jarvis *.txt

請注意,要轉到下一個和上一個匹配項,我們必須使用以下命令:

序號 命令和說明
1 :cn

轉到表示式的下一個匹配項

2 :cN

轉到表示式的上一個匹配項

Vim - 多檔案操作

Vim是一個非常強大的編輯器。它支援許多高階功能,可以處理多個檔案、緩衝區和視窗。在本節中,我們將討論以下內容:

  • 多個檔案
  • 多個緩衝區
  • 多個標籤
  • 多個視窗

多個檔案

假設您正在編輯一個檔案,並且想要在同一個Vim會話中開啟另一個檔案。在這種情況下,您可以使用Vim的編輯命令。下表顯示了這些命令:

序號 命令和說明
1 :e

載入新檔案到緩衝區進行編輯

2 :edit

與:e相同

3 :e <tab>

列出當前目錄中要編輯的檔案

4 :edit <tab>

與:e <tab>相同

多個緩衝區

我們已經瞭解了Vim緩衝區是什麼。Vim支援多個緩衝區。以下命令在使用緩衝區時將很有用:

序號 命令和說明
1 :badd <file>

將檔案新增到新緩衝區

2 :bN

切換到第N個緩衝區。例如,要切換到第3個緩衝區,請使用:b3

3 :bnext

切換到緩衝區列表中的下一個緩衝區

4 :bprevious

切換到緩衝區列表中的上一個緩衝區

5 :buffers

列出所有緩衝區

6 :bfirst

切換到第一個緩衝區

7 :blast

切換到最後一個緩衝區

8 :ball

載入所有緩衝區

例如,以下命令將新檔案新增到緩衝區:

Multiple

現在,緩衝區中有兩個檔案。執行以下命令以顯示此內容:

:buffers

它將顯示以下輸出:

Buffer

多個標籤

像其他編輯器一樣,我們也可以在Vim中開啟多個標籤頁。下表描述了與標籤頁相關的命令:

序號 命令和說明
1 :tabnew

開啟新標籤頁

2 :tabnew <file>

在新標籤頁中開啟檔案

3 :tabclose

關閉當前標籤頁

4 :tabnext

切換到下一個標籤頁

5 :tabprevious

切換到上一個標籤頁

6 :tabfirst

切換到第一個標籤頁

7 :tablast

切換到最後一個標籤頁

例如,下圖顯示了多個標籤頁

Tabs

多個視窗

在Vim中,我們可以使用以下命令建立新視窗:

序號 命令和說明
1 :new <file>

開啟新視窗

2 :new <file>

在新視窗中開啟檔案

在下圖中,我們可以看到在執行以下命令後,當前Vim視窗被分成兩部分:

$vim message.txt
:new

Window

Vim - 標記

Vim支援書籤功能。使用此功能,我們可以使檔案內的導航速度更快。在本章中,我們將討論以下內容:

  • 建立書籤
  • 跳轉到書籤
  • 列出所有書籤
  • 刪除書籤
  • 區域性書籤
  • 全域性書籤

建立書籤

要建立書籤,請執行以下命令:

m{bookmark-name}

在上面的例子中,bookmark-name是單個字母字元。例如,以下命令建立名為a的書籤。

ma

跳轉到書籤

建立書籤後,我們可以跳轉到該位置。可以使用以下命令跳轉到書籤:

序號 命令和說明
1 `{bookmark-name}

移動到書籤的確切位置。請注意,此字元是反引號

2 ‘{bookmark-name}

跳轉到書籤行的開頭。請注意,此字元是單引號

列出所有書籤

要列出所有書籤,請執行以下命令:

:marks

下圖顯示了當前檔案的書籤列表

Bookmarks

刪除書籤

要刪除書籤,請執行以下命令:

:delmarks {bookmark-name}

例如,以下命令刪除名為a的書籤。

:delmarks a

區域性書籤和全域性書籤

當您開啟多個檔案並且想要轉到任何一個開啟檔案中特定位置時,您可以使用Vim的全域性標記功能。

如果書籤名稱是大寫字母,則它是全域性書籤。上述命令適用於區域性和全域性書籤。

Vim - 宏

宏是錄製和播放功能。當它與Vim命令結合使用時,它將成為一個非常強大的組合。在本節中,我們將討論以下內容:

  • 開始錄製
  • 執行Vim操作
  • 停止錄製
  • 播放錄製

開始錄製

要開始錄製,請按q鍵,然後按任何小寫字母作為宏名稱。例如,在下面的示例中,我使用了“a”作為宏名稱

Recording

執行Vim操作

在此步驟中,您可以執行任何Vim操作,例如:剪下、複製、刪除、替換等等。您可以透過執行以下命令檢視這些操作:

:registers

例如,以下命令顯示執行了貼上和刪除操作:

Perform

停止錄製

完成操作後,再次按q鍵停止錄製。現在錄製模式將消失,如下所示:

Stop

播放

要播放,請執行以下命令:

@{macro-name}

例如,要執行宏“a”,請執行以下命令:

@a

要多次播放相同的宏,請使用數字。例如,要執行相同的宏10次,請執行以下命令:

10@a

Vim - 暫存器

Vim提供了許多暫存器。我們可以將這些暫存器用作多個剪貼簿。此功能在處理多個檔案時非常有用。在本章中,我們將討論以下內容:

  • 將文字複製到暫存器
  • 從暫存器貼上文字
  • 列出可用的暫存器
  • 暫存器型別

將文字複製到暫存器

對於複製,我們可以使用正常的yank命令,即yy,並使用以下語法將其儲存在暫存器中:

“<register-name><command>

例如,要將文字複製到暫存器“a”,請使用以下命令:

“ayy

從暫存器貼上文字

要從暫存器貼上文字,請使用:

“<register-name>p

例如,以下命令從暫存器“a”複製文字:

“ap

列出可用的暫存器

要列出所有可用的暫存器,請使用以下命令

:registers

暫存器型別

Vim支援以下型別的暫存器:

未命名暫存器

未命名暫存器用“”表示。Vim將刪除或複製的文字儲存在此暫存器中

命名暫存器

我們可以使用26個命名暫存器;我們可以使用a-z或A-Z。預設情況下,vim不使用這些暫存器。

如果我們使用小寫暫存器名稱,則內容將被覆蓋;如果我們使用大寫名稱,則內容將被附加到該暫存器中。

編號暫存器

我們可以使用0到9個命名暫存器。Vim用yank和delete命令中的文字填充這些暫存器。

  • 編號暫存器0包含最近一次yank命令的文字。
  • 編號暫存器1包含最近一次delete或change命令刪除的文字

預設暫存器

以下是預設暫存器:

序號 暫存器和說明
1 %

當前檔案的名稱

2 #

當前視窗的備用檔案的名稱

3 :

最近執行的命令

4 .

包含最後插入的文字

5

最後使用的暫存器

Vim - 摺疊

當檔案內容為大文字時,摺疊功能將很有用。使用此功能,我們只能顯示檔案的選定部分。此功能在使用程式語言時尤其有用。在本章中,我們將討論以下內容:

  • 啟用和停用摺疊功能
  • 各種摺疊操作

摺疊啟用和停用

要啟用摺疊,請使用以下命令:

:set foldenable 
:set foldmethod = indent

要停用摺疊,請使用以下命令

:set nofoldenable

摺疊操作

關閉摺疊

要摺疊程式碼,請轉到任何方法並執行以下命令:

zc

例如,下圖顯示了此操作的結果:

Close

開啟摺疊

要開啟摺疊,請使用以下命令:

zo

下圖顯示了此操作的結果:

Open

關閉所有摺疊

要關閉所有摺疊,請執行以下命令

zM

下圖顯示了此操作的結果

Folds

展開所有

要展開所有內容,請執行以下操作:

zR

下圖顯示了此操作的結果:

Unfold

Vim - 比較差異

類似於UNIX diff命令,我們可以使用Vim以更好的方式顯示diff。它將以彩色方式顯示diff。在本章中,我們將討論以下內容:

  • 顯示檔案之間的差異
  • 啟用和停用diff模式
  • diff模式下的導航
  • 應用diff視窗中的更改

顯示差異

要顯示檔案之間的差異,請執行以下命令:

$ vimdiff <file> <file> 
OR 
$ vim –d <file> <file>

例如,以下命令顯示差異:

Show

在上圖中,以洋紅色突出顯示的文字是公共的。其餘文字以紅色突出顯示,這表示公共文字之後存在一些差異。

啟用和停用diff模式

如果您已經在vim中並且想要執行diff操作,則可以使用以下命令之一:

diffsplit

使用以下命令執行水平分割:

:diffsplit filename

Split

上圖顯示我們正在比較兩個檔案,即message-1.txt和message-2.txt。

垂直diffsplit

要執行垂直分割,請使用以下命令:

:vert diffsplit <filename>

它將開啟以下視窗:

Vertical

上圖顯示我們正在比較兩個檔案,即message-1.txt和message-2.txt。

diff模式下的導航

diff模式下的導航略有不同。例如,當您從一個視窗滾動文字時,相鄰視窗的文字也會滾動。這稱為scrollbind。要啟用此功能,請使用:

:set scrollbind

要停用此功能,請使用:

:set noscrollbind

如果您在此模式下編輯檔案,則使用以下命令更新diff:

:diffupdate

在diff視窗之間切換

要在diff視窗之間切換,請執行以下命令:

Ctrl + w Ctrl + w

請注意,我們必須按兩次Ctrl + w。

跳轉到上一個更改

在diff視窗中,執行以下命令以跳轉到上一個更改:

[c

跳轉到下一個更改

在diff視窗中,執行以下命令以跳轉到下一個更改:

]c

應用diff視窗中的更改

在當前diff視窗中應用更改

要將更改從相鄰的diff視窗應用到當前diff視窗,請執行:

:diffget

例如,如果您在左側視窗中,並且想要將更改從右側視窗應用到當前視窗,則將執行上述命令。

將更改從當前窗格應用到另一個窗格

要將更改從當前diff視窗應用到相鄰的diff視窗,請執行:

:diffput

例如,如果您在左側視窗中,並且想要將更改從當前視窗應用到右側視窗,則將執行上述命令。

Vim - 外掛

使用外掛,我們可以擴充套件Vim的功能。Vim支援許多外掛,其中大多數都是免費提供的。本章是關於Vim外掛的,我們將討論以下內容:

  • 外掛管理
  • 一些有用的外掛

外掛管理

本節討論外掛管理。Vim提供了各種外掛管理器,但我們不會使用任何外掛管理器,而是將手動執行所有這些步驟以更好地理解。一旦您理解了這些步驟,就可以使用外掛管理器。

安裝外掛

要安裝任何外掛,請執行以下步驟:

  • 在使用者的home目錄中建立.vim/bundle目錄
  • 將外掛複製到此目錄中
  • 在vim中設定runtimepath

讓我們在Vim中安裝badwolf外掛。它是一個vim的配色方案。

$ mkdir -p ~/.vim/bundle 
$ cd ~/.vim/bundle/ 
$ git clone https://github.com/sjl/badwolf.git 
$ echo "set runtimepath^ = ~/.vim/bundle/badwolf" > ~/.vimrc

現在外掛已安裝,因此我們可以使用badwold配色方案,如下所示:

:colorscheme badwolf

更新外掛

如果我們仔細觀察,外掛只是一個檔案的集合,如果我們想要更新該外掛,則只需從~/.vim/bundle更新相應的外掛目錄。

刪除外掛

在Vim中刪除外掛非常簡單。要刪除外掛,請執行以下步驟:

  • 從~/.vim/bundle刪除外掛目錄
  • 適當地修改runtimepath

一些有用的外掛

以下是某些有用的Vim外掛的列表

序號 名稱和說明
1 DumpX

反彙編C/C++程式碼

2 awk.vim

AWK指令碼的縮排

3 Pathogen

Vim包管理器

4 git-switcher.vim

根據git分支的切換自動儲存和載入vim會話

5 Pyflakes

為python檔案提供lint

Vim - 將Vim用作IDE

我們可以配置Vim將其用作IDE。在本節中,我們將討論以下內容

  • 語法高亮
  • 智慧縮排
  • 反彈
  • 執行shell命令
  • 配置ctags和csope
  • 自動完成和自動建議

語法高亮

語法高亮是IDE的重要功能之一。要啟用語法高亮,請使用:

:syntax on

例如,下圖顯示了C程式碼的語法高亮:

Syntax

要停用語法高亮,請使用:

:syntax off

停用語法高亮後,它將顯示以下輸出:

Output

智慧縮排

要執行自動和智慧縮排,請使用以下命令:

: set autoindent 
: set smartindent

此外,您可以使用以下命令自動縮排C程式碼:

: set cindent

反彈

如果您使用的程式語言使用花括號來組合多個語句,那麼%鍵將是您的朋友。此鍵將快速跳轉到花括號的開始和結束位置。

例如,您位於第11行並執行%命令,則它會將游標移動到第4行。下圖顯示了這一點:

Bounce

執行shell命令

要從Vim編輯器使用者執行單個命令,請使用:

:!<command>

例如,要執行pwd命令,請使用以下語法:

:!pwd

但是,如果您想要多個shell命令,請執行以下命令:

:shell

上述命令將提供終端訪問許可權,您可以在其中執行多個命令。完成後,只需鍵入 exit 命令即可返回 Vim 會話。

配置 ctags 和 cscope

ctags 和 cscope 的組合提供了許多有用的功能,例如跳轉到函式定義、跳轉到函式宣告、查詢函式呼叫、搜尋檔案等等。請執行以下步驟來配置這些工具:

  • 使用以下命令生成 tags:
$ ctags <file>

此命令將生成一個名為 tags 的新檔案。

  • 使用以下命令為 vim 提供 tag 檔案:
:set tags = tag
  • 現在將游標移動到函式名稱下,然後按 Ctrl + ] 跳轉到函式定義。
  • 使用 **Ctrl + t** 返回到上一個位置。

要安裝和配置 cscope,請執行以下步驟:

  • 安裝 cscope
$ sudo apt-get install cscope
  • 生成 ctags 並啟動主視窗
$ cscope –R

Cscope
  • 使用 Ctrl + d 關閉 cscope 視窗

自動完成和自動建議

我們可以使用以下命令進行自動完成:

序號 命令和說明
1 Ctrl + x Ctrl + N

單詞補全

2 Ctrl + x Ctrl + L

行補全

3 Ctrl + x Ctrl + F

檔名補全

請注意,必須在插入模式下使用這些命令。

Vim - 遠端檔案編輯

很多時候我們需要處理遠端伺服器。並且經常編輯這些遠端伺服器上的檔案。編輯這些檔案的一個顯而易見的解決方案是登入到遠端伺服器並編輯檔案。但是有時從本地機器編輯這些檔案比較方便,因為我們可能在本地系統上安裝和配置了各種外掛。在本章中,我們將討論以下內容:

  • 訪問遠端檔案
  • 瞭解 netread 和 netwrite
  • 其他支援的協議

訪問遠端檔案

Vim 使用以下語法支援遠端檔案編輯:

$vim scp://user@server.com/filepath

在上面的例子中,vim 將識別它必須使用 scp 協議,並將使用該協議訪問檔案。例如:

$ vim scp://jarvis@remote-server.com//tmp/message.txt

上述命令將開啟遠端伺服器上的 /tmp/message.txt 檔案。它將使用 SCP 協議和 jarvis 使用者的憑據進行身份驗證。

使用 nread 和 nwrite

Vim 支援 nread 和 nwrite 功能,分別代表網路讀取和網路寫入。上一節顯示了在啟動 Vim 時訪問遠端檔案的方法。但是,如果您已經在 Vim 中,該怎麼辦?然後您可以使用以下命令:

:Nread scp://jarvis@localhost//tmp/message.txt

除了讀取之外,我們還可以直接修改遠端伺服器上的檔案。在這種情況下,請使用 Nwrite 命令,如下所示:

:Nwrite scp://jarvis@localhost//tmp/message.txt

開啟檔案後,您可以使用常規的 Vim 命令。

其他支援的協議

除了 SCP 之外,Vim 還支援以下協議:

  • FTP
  • SFTP
  • HTTP(只讀)
  • rsync

Vim - 提示和技巧

現在我們對 Vim 有了相當的瞭解。讓我們討論一些 Vim 的技巧和竅門來提高生產力。在本節中,我們將討論以下內容:

  • 將空格轉換為製表符,反之亦然
  • 突出顯示拼寫錯誤的單詞
  • 單詞補全
  • 逐字元複製行
  • 縮排程式碼
  • 更改檔案格式

將空格轉換為製表符,反之亦然

將製表符轉換為空格

如果您正在編輯檔案,並且想要將輸入的製表符轉換為空格,則執行以下命令:

:set expandtab

請注意,此命令不會將現有的製表符更改為空格。要實現此目的,請執行以下命令:

:set tabstop = 4 shiftwidth = 4 expandtab 
:retab

在上面的命令中,我們指示 Vim 將製表符轉換為 4 個空格。

將空格轉換為製表符

要將空格轉換為製表符,請執行以下命令:

:set noexpandtab :retab!

突出顯示拼寫錯誤的單詞

我們可以指示 Vim 突出顯示拼寫錯誤的單詞。為此,請執行以下命令:

:set spell

下圖突出顯示了 Vim 中拼寫錯誤的單詞:

Spelled

單詞補全

Vim 還提供單詞補全功能。為此,請在插入模式下執行以下命令:

Ctrl + p

Completion

逐行復制字元

使用以下命令逐字元複製和貼上行:

序號 命令和說明
1 Ctrl + y

複製和貼上游標上方的文字

2 Ctrl + e

複製和貼上游標下方的文字

請注意,我們必須在插入模式下使用這些命令。

縮排程式碼

如果您有未縮排的程式碼要縮排,請執行以下命令:

=%

例如,如果您有如下未縮排的程式碼:

Indent

然後轉到第 4 行並執行 =% 命令。它將縮排程式碼如下:

Indent Code

更改檔案格式

要將檔案格式更改為 UNIX,請執行以下命令:

:set ff = unix

要將檔案格式更改為 DOS,請執行以下命令:

:set ff = dos

Vim - 個性化設定

我們可以根據需要個性化 Vim。在本節中,我們將討論以下內容:

  • 配置檔案
  • 更改字型
  • 更改配色方案
  • 個性化高亮顯示
  • 狀態列

配置檔案

對於 Vim 配置檔案,可以位於使用者級別或全域性級別。使用者特定設定將儲存在使用者級檔案中,而全域性設定將儲存在全域性級檔案中。

Vimrc 檔案

全域性 vimrc

要在編輯器中查詢全域性 vimrc 檔案,請執行以下命令:

:echo $VIM

:echo \%VIM\%

在 Linux 上,此檔案位於 /usr/share/vim 目錄下,而在 Windows 上,它位於 C:\Program Files\Vim 資料夾下。

本地 vimrc

本地 vimrc 將位於使用者的 home 目錄下。例如,在 Linux 上,它位於 /home/ 目錄下,而在 Windows 上,它位於 C:\Documents and Settings\/ 資料夾下。

請注意,在 Windows 上,檔名將是 _vimrc,而在 Linux 上,它將是 .vimrc。

Gvimrc

全域性 gvimrc

在 Linux 上,此檔案位於 /usr/share/gvim 目錄下,而在 Windows 上,它位於 C:\Program Files\Vim 資料夾下。

本地 gvimrc

本地 gvimrc 將位於使用者的 home 目錄下。例如,在 Linux 上,它位於 /home/ 目錄下,而在 Windows 上,它位於 C:\Documents and Settings\/ 資料夾下。

請注意,在 Windows 上,檔名將是 _gvimrc,而在 Linux 上,它將是 .gvimrc。

exrc

exrc 檔案用於向後相容。如果存在 vimrc 或 gvimrc 檔案,則會忽略這些檔案。

全域性 exrc

在 Linux 上,此檔案位於 /usr/share/vim 目錄下,而在 Windows 上,它位於 C:\Program Files\Vim 資料夾下。

本地 exrc

本地 exrc 將位於使用者的 home 目錄下。例如,在 Linux 上,它位於 /home/ 目錄下,而在 Windows 上,它位於 C:\Documents and Settings\/_exrc 資料夾下。

更改字型

要更改字型,請在 gVim 中執行以下命令:

:set guifont = courier

上述命令將字型更改為 courier。

更改配色方案

要更改配色方案,請執行以下命令:

:colorscheme <tab>

當您按下 Tab 鍵時,它將顯示 Vim 可用的配色方案。

個性化高亮顯示

突出顯示特定列之後的字元

執行以下命令以突出顯示大於 73 的列:

:match ErrorMsg /\%>73v.\+/

下圖顯示了這一點:

Personal

以下是此命令的描述:

序號 命令和說明
1 \%>

匹配列之後

2 73

這是列號

3 V

它應該只適用於虛擬列

4 .\+

匹配一個或多個字元

新增行號

要新增行號,請執行以下命令:

:set number

要停用此功能,請執行以下命令:

:set nonumber

設定行號寬度

要設定行號寬度,請執行以下命令:

:set numberwidth = <num>

拼寫檢查

要啟用拼寫檢查,請執行以下命令:

:set spell

要設定拼寫語言,請執行以下命令:

:set spelllang = <language>

例如,要設定德語,請使用以下命令:

:set spelllang = de

縮寫

使用縮寫,我們可以為長字串建立快捷方式。例如,以下命令建立名為“quick”的縮寫。

:abbr quick the quick brown fox

如果您鍵入“quick”並按下 Tab 鍵,它將被替換為“the quick brown fox”字串。

我們可以用它來糾正一些錯字。例如,以下命令就是這樣做的:

:abr teh the

狀態列

狀態列顯示在編輯器的底部。要啟用狀態列,請執行以下命令:

:set laststatus = 2

要將其從當前會話中刪除,請執行以下命令:

:set laststatus = 0

Vim - 總結

Vim 是一個非常強大的編輯器,現在您可以開始使用它了。掌握 Vim 將真正提高您的生產力。使用 Vim,您可以使用少量命令解決許多複雜的任務。您可以參考以下文件以瞭解更多關於 Vim 的資訊。

Vim 官方文件

您可以從以下網站訪問 Vim 的官方文件:

https://www.vim.org/

Vim 指令碼指南

您可以透過編寫指令碼來進一步增強 vim。它有自己的指令碼語言。要了解更多資訊,請訪問以下連結:

https://vim.sourceforge.io/scripts/index.php

Vim 外掛

Vim 外掛進一步擴充套件了其功能並提高了您的效率。您可以安裝、配置甚至為 Vim 編寫外掛。您可以參考其官方網站上的相關文件。

廣告
© . All rights reserved.