Nvim :help
頁面,使用 tree-sitter-vimdoc 解析器,從 原始碼 產生 而來。
<BS>
鍵。它可以刪除游標前的字元。<Del>
鍵對游標下(後)的字元執行相同的操作。當您輸入整個錯誤的單字時,請使用 CTRL-W
CTRL-W
CTRL-U
將其刪除。這會保留游標後的文字和縮排。只會刪除從第一個非空白字元到游標之間的文字。當游標位於下一行 "fallen" 的 "f" 上時,按下 CTRL-U
會執行以下操作CTRL-U
<Esc>4blraA
<Esc>
返回四個單字 4b 移動到 "o" 的上方 l 將其替換為 "a" ra 重新開始插入模式 A<C-Left><C-Left><C-Left><C-Left><Right><Del>a<End>
<C-Left>
<C-Left>
<C-Left>
<C-Left>
移動到 "o" 的上方 <Right>
刪除 "o" <Del>
插入 "a" a 移至行尾 <End>
<End>
鍵)。這些特殊按鍵在編寫不離開插入模式的映射時最有用。額外的輸入在那時並不重要。以下是您可以在插入模式中使用的按鍵概述<C-Home>
到檔案開頭 <PageUp>
向上移動一整個螢幕 <Home>
到行首 <S-Left>
向左一個單字 <C-Left>
向左一個單字 <S-Right>
向右一個單字 <C-Right>
向右一個單字 <End>
到行尾 <PageDown>
向下移動一整個螢幕 <C-End>
到檔案結尾:set showmatch現在,當您輸入像 "(example)" 這樣的文字時,當您輸入 ) 時,Vim 會短暫地將游標移動到匹配的 (,保持在那裡半秒鐘,然後移回您正在輸入的位置。如果沒有匹配的 (,Vim 會發出嗶聲。那麼您就知道您可能在某處忘記了 (,或者輸入了太多 )。匹配也會顯示在 [] 和 {} 配對中。您不必等待輸入下一個字元,只要 Vim 看到它,游標就會移回,並且插入會像以前一樣繼續。您可以使用 'matchtime' 選項來變更 Vim 等待的時間。例如,要讓 Vim 等待一秒半
:set matchtime=15時間以十分之一秒為單位指定。
CTRL-P
,Vim 會猜測其餘部分。例如,假設您正在建立一個 C 程式並想輸入以下內容CTRL-P
自動完成單字。Vim 會搜尋以游標前的文字開頭的單字。在這種情況下,它是 "ch_",它與單字 ch_array 匹配。因此,輸入 CTRL-P 會產生以下內容CTRL-P
,Vim 會再次搜尋完成游標前單字的單字。由於游標前沒有任何內容,它會向後找到第一個單字,即 "ch_array"。再次輸入 CTRL-P
會給您下一個匹配的單字,在本例中為 "total"。第三次 CTRL-P
會進一步向後搜尋。如果沒有其他內容,則會導致編輯器用完單字,因此它會返回到原始文字,即沒有任何內容。第四次 CTRL-P 會導致編輯器從 "ch_array" 重新開始。CTRL-N
。由於搜尋會環繞檔案結尾,CTRL-N
和 CTRL-P
會找到相同的匹配項,但順序不同。提示:CTRL-N
是下一個匹配項,而 CTRL-P
是上一個匹配項。CTRL-X
CTRL-F
檔案名稱 CTRL-X
CTRL-L
整行 CTRL-X
CTRL-D
巨集定義(也包含在 include 檔案中) CTRL-X
CTRL-I
目前和 include 檔案 CTRL-X
CTRL-K
字典中的單字 CTRL-X
CTRL-T
辭典中的單字 CTRL-X
CTRL-]
標籤 CTRL-X
CTRL-V
Vim 命令列CTRL-X
CTRL-F
為例。這將尋找檔案名稱。它會掃描目前目錄中的檔案,並顯示每個與游標前單字匹配的檔案。例如,假設您在目前目錄中有以下檔案CTRL-X
CTRL-F
。現在 Vim 會查看目前目錄中的檔案,並完成目前的單字 "sub"。第一個匹配項是 sub_count.c。這不是您想要的,因此您輸入 CTRL-N
來匹配下一個檔案。此匹配項是 sub_done.c。再次輸入 CTRL-N
會帶您到 sub_exit.c。結果是CTRL-X
CTRL-F
。這將匹配 "/usr"(這是 Unix 上的情況)CTRL-N
,您將返回 "/u"。相反,要接受 "/usr/" 並深入一個目錄層級,請再次使用 CTRL-X
CTRL-F
CTRL-X
CTRL-O
。顯然,這裡的 O 代表 Omni,這樣您就更容易記住它。讓我們以編輯 C 原始碼為例{ struct foo *p; p->游標位於 "p->" 之後。現在輸入
CTRL-X
CTRL-O
。Vim 會為您提供一個替代方案清單,這些方案是 "struct foo" 包含的項目。這與使用 CTRL-P
完全不同,後者會完成任何單字,而此處只有 "struct foo" 的成員才有效。filetype plugin on或
filetype plugin indent on對於 C 程式碼,您需要建立標籤檔案並設定 'tags' 選項。這在 ft-c-omni 中進行了說明。對於其他檔案類型,您可能需要執行類似的操作,請參閱下面的 compl-omni-filetypes。它僅適用於特定的檔案類型。請檢查 'omnifunc' 選項的值,以瞭解它是否有效。
CTRL-A
,編輯器會插入您上次處於插入模式時輸入的文字。例如,假設您有一個以以下內容開頭的檔案"file.h" ~ /* Main program begins */ ~您透過在第一行開頭插入 "#include " 來編輯此檔案
#include "file.h" ~ /* Main program begins */ ~您使用命令 "j^" 下移到下一行的開頭。現在您開始插入新的 "#include" 行。因此您輸入
i CTRL-A結果如下
#include "file.h" ~ #include /* Main program begins */ ~之所以插入「#include "」是因為
CTRL-A
會插入前一個插入的文字。現在你輸入「main.h」<Enter> 來完成這一行。#include "file.h" ~ #include "main.h" ~ /* Main program begins */ ~
CTRL-@
命令會執行 CTRL-A
,然後退出插入模式。這是一個快速重複相同插入的方法。CTRL-Y
命令會插入游標上方的字元。當你要複製前一行時,這很有用。例如,你有這行 C 程式碼:CTRL-Y
14 次,直到游標位於「next」的「n」上。CTRL-Y
直到下一個「next」。CTRL-E
命令的作用類似 CTRL-Y
,但它會插入游標下方的字元。CTRL-R
{暫存器}
會插入暫存器的內容。這有助於避免輸入長單字。例如,你需要輸入:"vyiw「v」是暫存器指定符,「yiw」是複製內單字。現在編輯要插入新行的檔案,並輸入首幾個字母:
CTRL-R
v 來插入函數名稱。<BS>
或其他特殊字元,它們會被視為從鍵盤輸入。如果你不希望發生這種情況(你真的希望 <BS>
被插入到文字中),請使用命令 CTRL-R
CTRL-R
{暫存器}
。:iabbrev ad advertisement現在,當你輸入「ad」時,整個單字「advertisement」將被插入到文字中。這會在你輸入一個不能作為單字一部分的字元時觸發,例如空格。
:iabbrev JB Jack Benny身為程式設計師,我使用兩個相當不尋常的縮寫:
:iabbrev #b /**************************************** :iabbrev #e <Space>****************************************/這些用於建立框線註解。註解以 #b 開始,它會繪製頂線。然後我輸入註解文字,並使用 #e 來繪製底線。請注意,#e 縮寫以空格開頭。換句話說,前兩個字元是空格-星號。通常 Vim 會忽略縮寫和展開之間的空格。為避免此問題,我將空格拼寫為七個字元:<, S, p, a, c, e, >。
:abbreviate teh the你可以新增一整串這些。每次發現常見錯誤時,就新增一個。
:abbreviate i #e ****************************************/ i #b /**************************************** i JB Jack Benny i ad advertisement ! teh the第一欄的「i」表示插入模式。這些縮寫僅在插入模式中有效。其他可能的字元是:
:edit ad
:abbreviate @f fresh你可以使用此命令刪除它:
:unabbreviate @f當你輸入此命令時,你會注意到 @f 被展開為「fresh」。別擔心,Vim 仍然會理解它(除非你有「fresh」的縮寫,但這不太可能)。要刪除所有縮寫:
:abclear「:unabbreviate」和「:abclear」也有插入模式(「:iunabbreviate 和 :iabclear」)和命令列模式(「:cunabbreviate」和「:cabclear」)的變體。
:abbreviate @a adder :imap dd disk-door現在當你輸入 @a 時,你會得到「adisk-doorer」。這不是你想要的。為了避免這種情況,請使用「:noreabbrev」命令。它的作用與「:abbreviate」相同,但避免了產生的字串被用於對應。
:noreabbrev @a adder幸運的是,縮寫的結果被對應的情況不太可能發生。
CTRL-V
命令用於以字面方式插入下一個字元。換句話說,該字元的任何特殊含義都將被忽略。例如:CTRL-V <Esc>插入一個跳脫字元。因此你不會離開插入模式。(不要在
CTRL-V
後面輸入空格,這只是為了讓它更容易閱讀)。CTRL-V
用於貼上文字。使用 CTRL-Q
而不是 CTRL-V
。另一方面,在 Unix 上,CTRL-Q
在某些終端機上無法運作,因為它具有特殊含義。CTRL-V
{數字}
來插入十進位數字為 {數字}
的字元。例如,字元編號 127 是 <Del>
字元(但不一定是 <Del>
鍵!)。要插入 <Del>
,請輸入:CTRL-V 127你可以用這種方式輸入最多 255 個字元。當你輸入少於兩位數字時,非數字字元會終止命令。為了避免需要輸入非數字字元,請在前面加上一或兩個零以形成三位數字。接下來的所有命令都會插入一個
<Tab>
,然後是一個點。CTRL-V
9. CTRL-V
09. CTRL-V
009.CTRL-V
後面使用「x」。CTRL-V x7f這也適用於最多 255 個字元 (
CTRL-V
xff)。你可以使用「o」將字元輸入為八進位數字,另有兩種方法可讓你輸入最多 16 位元和 32 位元的數字(例如,對於 Unicode 字元)。CTRL-V o123 CTRL-V u1234 CTRL-V U12345678
CTRL-K Co要找出有哪些二合字母可用,請使用以下命令:
:digraphsVim 將顯示二合字母表。以下是其中的三行:
CTRL-K
Pd 所得到的二合字母是字元(£)。這是字元編號 163(十進位)。Pd 是磅的簡寫。大多數二合字母的選擇都會給你關於它們將產生字元的提示。如果你仔細查看清單,就會了解其中的邏輯。如果該組合沒有二合字母,你可以交換第一個和第二個字元。因此,CTRL-K
dP 也有效。由於「dP」沒有二合字母,Vim 也會搜尋「Pd」二合字母。:digraph a" ä這定義了
CTRL-K
a" 會插入一個 ä 字元。你也可以使用十進位數字指定字元。這定義了相同的二合字母。:digraph a" 228有關二合字母的詳細資訊,請參閱此處:二合字母 另一種插入特殊字元的方法是使用鍵盤對應。有關詳細資訊,請參閱此處:45.5
<Esc>
離開插入模式,執行一般模式命令,然後使用「i」或「a」重新進入插入模式。有一個更快的方法。使用 CTRL-O
{命令}
,你可以從插入模式執行任何一般模式命令。例如,要從游標刪除到行尾:CTRL-O D你只能以這種方式執行一個一般模式命令。但是你可以指定暫存器或計數。更複雜的範例:
CTRL-O "g3dw這會刪除到第三個單字,並將其放入暫存器 g 中。