Vi_diff
Nvim :help
頁面,從 原始碼 使用 tree-sitter-vimdoc 解析器 產生。
Vim 和 Vi 的差異
Vim 對於可編輯的檔案只有少數限制。Vi 無法處理 <Nul>
字元和 128 以上的字元,有限制的行長度,以及其他許多限制。
最大行長度 2147483647 個字元 最大行數 2147483647 行 最大檔案大小 2147483647 位元組 (2 Gbyte),當長整數為 32 位元時。64 位元長整數則更大。也會受限於
交換檔 的可用磁碟空間。
E75檔案路徑長度 Unix 和 Win32: 1024 個字元,否則為 256 個字元 (或系統支援的長度)。擴展字串選項長度 Unix 和 Win32: 1024 個字元,否則為 256 個字元。最大顯示寬度 Unix 和 Win32: 1024 個字元,否則為 255 個字元。最大映射左側 (lhs) 50 個字元。不同高亮類型的數量:超過 30000 個。數字變數的範圍:-2147483648 到 2147483647 (在 64 位元系統上可能更大)。標籤檔中一行的最大長度:512 位元組。
undo 的資訊和暫存器中的文字都保存在記憶體中,因此當進行(大)的變更時,可用的(虛擬)記憶體量會限制 undo 的層級數量以及可以保存在暫存器中的文字。其他東西也保存在記憶體中:命令列歷史、Quickfix 模式的錯誤訊息等等。
支援不同的系統。Vim 可以在以下系統上使用
現代 Unix 系統 (BSD、Linux 等)
Windows (XP SP 2 或更高版本)
OS X
多層次的持續性 undo。
undo 'u' 回到過去,'
CTRL-R
' 再次前進。設定選項
'undolevels' 為要記住的變更次數 (預設為 1000)。設定
'undolevels' 為 0 以獲得與 Vi 相容的單層 undo。設定為 -1 表示完全不 undo。當緩衝區中的所有變更都已 undo 時,該緩衝區不再被視為已變更。您可以使用 :q 退出,而無需 <!>。當 undo 幾個變更,然後進行新的變更時,Vim 會在 undo 樹中建立一個分支。這表示您可以回到文字的任何狀態,不會有變更導致文字永遠遺失的風險。
undo-tree 當設定
'undofile' 選項時,undo 資訊會儲存在檔案中。這表示您可以退出 Vim,在先前編輯的檔案上啟動 Vim,並 undo 在退出 Vim 之前所做的變更。
圖形使用者介面 (GUI)。
gui 包含對 GUI 的支援:選單、滑鼠、捲軸等。您可以定義自己的選單。更好支援 CTRL/SHIFT/ALT 鍵與特殊鍵和滑鼠的組合。支援各種平台,例如 Win32。
多個視窗和緩衝區。
windows.txt Vim 可以將螢幕分割成多個視窗,每個視窗編輯不同的緩衝區或同一緩衝區的不同位置。緩衝區仍然可以載入 (和變更),但不會顯示在視窗中。這稱為隱藏緩衝區。已為此功能新增了許多命令和選項。Vim 也可以使用多個標籤頁,每個標籤頁都有一個或多個視窗。帶有標籤的行可以用來快速切換這些頁面。
tab-page
摺疊。
folding 一系列的行可以顯示為一個「摺疊」的行。這允許概覽檔案並快速移動文字區塊。可以手動建立摺疊、從檔案的語法、從縮排等建立摺疊。
Diff 模式。
diff-mode Vim 可以顯示檔案的兩個版本,並高亮顯示差異。相同的文字部分會被摺疊起來。可以使用命令將文字從一個版本移動到另一個版本。
外掛程式。
add-plugin 可以將外掛程式檔案放到正確的目錄中來擴展功能。這是一種輕鬆開始使用其他人編寫的 Vim 腳本的方法。外掛程式可以適用於所有類型的檔案,或特定於檔案類型。套件使這個過程更加容易。
packages
重複一系列命令。
q "q{c}" 開始將鍵入的字元記錄到名為
{c}
的暫存器中。後續的 "q" 停止記錄。然後可以使用 "@{c}" 命令執行暫存器。這對於重複複雜的操作非常有用。
可以使用
CTRL-O
執行單個 Normal 模式命令。這幾乎與按下
<Esc>
、輸入命令然後執行
a 相同。
Visual 模式。
Visual-mode Visual 模式可以用來首先高亮顯示一段文字,然後給出命令來對其執行某些操作。這是一種 (易於使用) 的替代方法,首先給出運算子,然後移動到要操作的文字結尾。
v 和
V 用於啟動 Visual 模式。
v 對字元起作用,而
V 對行起作用。移動游標以延伸 Visual 區域。它會在螢幕上高亮顯示。透過輸入 "o",可以移動 Visual 區域的另一端。Visual 區域可能會受到運算子的影響:d 刪除 c 更改 y 複製 > 或 < 插入或刪除縮排 ! 透過外部程式篩選 = 透過縮排篩選 : 啟動 Visual 行的
: 命令。gq 將文字格式化為
'textwidth' 欄位 J 合併行 ~ 交換大小寫 u 變為小寫 U 變為大寫
區塊運算子。
visual-block 使用 Visual 模式,可以選取文字的矩形區塊。使用
CTRL-V
啟動 Visual 模式。可以刪除區塊 ("d")、複製區塊 ("y") 或變更其大小寫 ("~"、"u" 和 "U")。可以使用 "p" 和 "P" 命令將刪除或複製的區塊放入文字中。
說明系統。
:help 說明顯示在視窗中。可以使用常用的命令來移動、搜尋字串等。可以使用標籤在說明檔案中跳轉,就像超文字連結一樣。
:help 命令接受一個參數,可以快速跳轉到有關主題的資訊。
<F1>
是快速存取說明系統的方式。可以使用
'helpfile' 選項設定說明索引檔案的名稱。
命令列編輯和歷史。
cmdline-editing 您可以使用游標鍵在命令列中的任何位置插入或刪除。可以使用向右/向左游標鍵向前/向後移動一個字元。可以使用 Shift + 向右/向左游標鍵向前/向後移動一個單字。可以使用
CTRL-B
/CTRL-E 前往命令列的開頭/結尾。(Vi:只能更改該行的最後一個字元) (Vi:按下
<Esc>
時,命令列會被執行。這對大多數人來說是意想不到的;因此在 Vim 中進行了更改。但是,當
<Esc>
是映射的一部分時,命令列會被執行。如果您也想在輸入
<Esc>
時使用 Vi 的行為,請使用 ":cmap ^V<Esc> ^V^M")
cmdline-history 命令列會被記住。可以使用向上/向下游標鍵召回先前的命令列。可以將
'history' 選項設定為要記住的行數。命令和搜尋模式有單獨的歷史記錄。
命令列完成。
cmdline-completion 在輸入命令列時 (在螢幕的底部),可以輸入
<Tab>
來完成
例子
命令 :e<Tab>
標籤 :ta scr<Tab>
選項 :set sc<Tab>
選項值 :set hf=<Tab>
檔案名稱 :e ve<Tab>
等等。
如果有多個符合項,CTRL-N
(下一個) 和 CTRL-P
(上一個) 將會瀏覽符合項。<Tab>
的作用類似於 CTRL-N
,但會環繞到第一個符合項。
可以將
'wildchar' 選項設定為命令列完成的字元,
<Tab>
是預設值。可以在 (不完整的) 通配符後輸入
CTRL-D
;將會列出所有符合項。
CTRL-A
將會插入所有符合項。
CTRL-L
將會插入符合項中最長共同的部分。
擴展搜尋模式。
pattern 有許多額外的項目可以匹配各種文字項目。例如:"\n" 可用於搜尋模式中以匹配換行符。"x\{2,4}" 匹配 "x" 2 到 4 次。"\\s" 匹配空白字元。
目錄、遠端和壓縮檔瀏覽。
netrw Vim 可以瀏覽檔案系統。只需編輯一個目錄。使用通常的命令在列表中移動,然後按
<Enter>
前往游標下的目錄或檔案。這也適用於透過 ftp、http、ssh 等遠端檔案。也可以瀏覽 Zip 和 tar 壓縮檔。
tar zip
編輯-編譯-編輯加速。
quickfix 可以使用
:make 命令來執行編譯並跳到第一個錯誤。將會解析包含編譯器錯誤訊息的檔案。Vim 會跳到第一個錯誤。
錯誤檔案中的每一行都會掃描檔案名稱、行號和錯誤訊息。可以將
'errorformat' 選項設定為類似 scanf 的字串列表,以處理來自多個編譯器的輸出。
在檔案中尋找匹配項。
:vimgrep Vim 可以在多個檔案中搜尋模式。這使用進階的 Vim 正規表示式模式,適用於所有系統,並且還可以用於搜尋壓縮檔案。
註解可以自動格式化。可以將
'comments' 選項設定為註解的開始和結束字元。這對於 C 程式碼效果最佳,但也適用於電子郵件(行首的 ">")和其他類型的文字。可以使用
= 運算子重新縮排行。
對於許多其他語言,存在縮排外掛程式來支援自動縮排。
30.3
自動命令。
autocommand 可以在讀取檔案、寫入檔案、跳到另一個緩衝區等時根據檔案名稱自動執行命令。這對於為 C 程式、文件、純文字、電子郵件等設定選項和映射很有用。這也使得編輯壓縮檔案成為可能。
Viminfo。命令列歷史記錄、標記和暫存器可以儲存在啟動時讀取的檔案中。這可用於在退出並重新啟動 Vim 後重複搜尋命令或命令列命令。也可以使用
'0 直接跳回上次編輯停止的位置。可以設定
'viminfo' 選項以選擇要儲存在 .viminfo 檔案中的項目。預設為關閉。
滑鼠支援。
mouse-using 滑鼠在 GUI 版本、Unix 的 xterm、帶 sysmouse 的 BSD、帶 gpm 的 Linux 和 Win32 中都受到支援。它可用於定位游標、選擇視覺區域、貼上暫存器等。
金鑰名稱的使用。
<> key-notation 特殊按鍵現在都有名稱,例如
<Up>
、
<End>
等。此名稱可用於映射中,以便輕鬆編輯它們。
編輯二進制檔案。
edit-binary Vim 可以編輯二進制檔案。您可以在可執行檔案中變更一些字元,而不會損壞它。Vim 不會移除 NUL 字元(它們在內部表示為
<NL>
)。
-b 命令列參數,用於開始編輯二進制檔案。
'binary' 選項由
-b 設定。防止為檔案中的最後一行新增
<EOL>
。
多語言支援。
multi-lang 可以編輯雙位元組或多位元組編碼的檔案。有 UTF-8 支援,可以同時編輯各種語言,而無需切換字型。
UTF-8 訊息和選單提供不同的語言版本。
將游標移動到行外。當設定
'virtualedit' 選項時,游標可以在整個螢幕上移動,即使在沒有文字的地方也是如此。這對於輕鬆編輯表格和圖形很有用。