Usr_02

Nvim :help 頁面,使用 tree-sitter-vimdoc 解析器從 原始碼 產生


VIM 使用者手冊 - 作者:Bram Moolenaar
在 Vim 中的第一步
本章提供足夠的資訊來使用 Vim 編輯檔案。雖然不快也不好,但至少可以編輯。花點時間練習這些指令,它們是接下來內容的基礎。
02.1 第一次執行 Vim 02.2 插入文字 02.3 移動游標 02.4 刪除字元 02.5 還原與重做 02.6 其他編輯指令 02.7 離開 02.8 尋求協助
下一章:usr_03.txt 移動游標 上一章:usr_01.txt 關於手冊 目錄:usr_toc.txt

第一次執行 Vim

要啟動 Vim,輸入以下指令
gvim file.txt
在 Unix 系統上,您可以在任何命令提示字元下輸入此指令。如果您執行的是 Microsoft Windows,請開啟命令提示字元並輸入該指令。在任何一種情況下,Vim 都會開始編輯名為 file.txt 的檔案。因為這是一個新檔案,所以您會看到一個空白視窗。您的螢幕看起來會像這樣
+---------------------------------------+
|#                                        |
|~                                        |
|~                                        |
|~                                        |
|~                                        |
|"file.txt" [New]                        |
+---------------------------------------+
        ('#' is the cursor position.)
波浪符號(~)行表示檔案中沒有的行。換句話說,當 Vim 沒有檔案可顯示時,它會顯示波浪符號行。在螢幕底部,訊息行會顯示檔案名為 file.txt,並顯示您正在建立一個新檔案。訊息資訊是暫時性的,其他資訊會覆蓋它。

VIM 指令

gvim 指令會使編輯器建立一個新的視窗進行編輯。如果您使用這個指令
vim file.txt
編輯會在您的命令視窗內進行。換句話說,如果您在 xterm 內執行,編輯器會使用您的 xterm 視窗。如果您使用的是 Microsoft Windows 下的命令提示字元,編輯會在該視窗內進行。視窗中的文字對於這兩個版本看起來會相同,但使用 gvim 您會有額外的功能,例如選單列。稍後會詳細介紹。

02.2 插入文字

Vim 編輯器是一個模態編輯器。這表示編輯器的行為會根據您所處的模式而有所不同。兩個基本模式稱為一般模式和插入模式。在一般模式下,您輸入的字元是指令。在插入模式下,字元會作為文字插入。由於您剛啟動 Vim,它會處於一般模式。要啟動插入模式,您輸入 "i" 指令(i 代表插入)。然後您可以輸入文字。文字會被插入到檔案中。如果您犯了錯誤,請不要擔心;您可以稍後修正它們。要輸入以下程式設計師的打油詩,這是您要輸入的內容
iA very intelligent turtle
Found programming Unix a hurdle
輸入 "turtle" 後,您按下 <Enter> 鍵開始新的一行。最後,您按下 <Esc> 鍵停止插入模式並回到一般模式。您現在在 Vim 視窗中有兩行文字
+---------------------------------------+
|A very intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
目前模式是什麼?
要查看您處於哪種模式,請輸入以下指令
:set showmode
您會注意到,當輸入冒號時,Vim 會將游標移動到視窗的最後一行。這是您輸入冒號指令的地方(以冒號開頭的指令)。按下 <Enter> 鍵完成此指令(所有以冒號開頭的指令都以此方式完成)。現在,如果您輸入 "i" 指令,Vim 會在視窗底部顯示 --INSERT--。這表示您處於插入模式。
+---------------------------------------+
|A very intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|-- INSERT --                                |
+---------------------------------------+
如果您按下 <Esc> 回到一般模式,最後一行會變成空白。

擺脫困境

Vim 新手遇到的問題之一是模式混淆,這是因為忘記自己處於哪種模式,或是不小心輸入了切換模式的指令所導致。要回到一般模式,無論您處於何種模式,請按下 <Esc> 鍵。有時您必須按兩次。如果 Vim 發出嗶聲,則表示您已經處於一般模式。

02.3 移動游標

回到一般模式後,您可以使用以下按鍵移動游標
h 左 hjkl
j 下 k 上 l 右
起初,這些指令可能看起來是隨機選擇的。畢竟,誰會想到用 l 代表右?但實際上,這些選擇有很好的理由:移動游標是編輯器中最常見的操作,而這些按鍵位於您右手的主列上。換句話說,這些指令的位置可以讓您以最快的速度輸入它們(尤其是當您用十指打字時)。
注意:您也可以使用方向鍵移動游標。但是,如果您這樣做,您會大大減慢您的編輯速度,因為要按下方向鍵,您必須將手從文字按鍵移到方向鍵。考慮到您可能每小時要這樣做數百次,這可能會花費大量的時間。此外,有些鍵盤沒有方向鍵,或將它們放置在不尋常的位置;因此,了解 hjkl 按鍵的用途在這些情況下會有所幫助。
記住這些指令的一種方法是 h 在左邊,l 在右邊,而 j 指向下。在圖片中
    k
h     l
  j
學習這些指令的最佳方法是使用它們。使用 "i" 指令插入更多文字行。然後使用 hjkl 按鍵移動並在某處插入一個單字。別忘了按下 <Esc> 回到一般模式。:Tutor 也是一種透過實作學習的好方法。
對於日本使用者,岩谷浩建議使用這個
Komsomolsk ^ | 黃河 <--- ---> 洛杉磯 | v 爪哇(島嶼,而非程式語言)

02.4 刪除字元

要刪除字元,將游標移到該字元上並輸入 "x"。(這是對舊式打字機的懷舊,當時您是透過在它們上面輸入 xxxx 來刪除東西的。)例如,將游標移動到第一行的開頭,然後輸入 xxxxxxx(七個 x)來刪除 "A very "。結果應該像這樣
+---------------------------------------+
|intelligent turtle                        |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
現在您可以插入新文字,例如輸入
iA young <Esc>
這會開始插入(i),插入單字 "A young",然後退出插入模式(最後的 <Esc>)。結果
+---------------------------------------+
|A young intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
刪除一行
要刪除整行,請使用 "dd" 指令。下一行會向上移動以填補空白
+---------------------------------------+
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
刪除換行符號
在 Vim 中,您可以將兩行連接在一起,這表示它們之間的換行符號會被刪除。"J" 指令會執行此操作。取這兩行
一個年輕聰明的
烏龜
將游標移動到第一行並按下 "J"
一個年輕聰明的烏龜

02.5 還原與重做

假設您刪除太多了。好吧,您可以再次輸入,但還有更簡單的方法。"u" 指令會還原上次編輯。看看實際情況:在使用 "dd" 刪除第一行之後,"u" 會將其帶回。另一個:將游標移動到第一行的 A
一個年輕聰明的烏龜
現在輸入 xxxxxxx 以刪除 "A young"。結果如下
聰明的烏龜
輸入 "u" 以還原上次刪除。該刪除移除了 g,因此還原會恢復該字元。
g 聰明的烏龜
下一個 "u" 指令會恢復倒數第二個刪除的字元
ng 聰明的烏龜
下一個 "u" 指令會給您 u,依此類推
ung 聰明的烏龜
oung 聰明的烏龜
young 聰明的烏龜
young 聰明的烏龜
一個年輕聰明的烏龜

重做

如果您還原太多次,您可以按下 CTRL-R(重做)來反轉先前的指令。換句話說,它會還原還原。要查看實際情況,請按下 CTRL-R 兩次。字元 A 和其後的空格會消失
young 聰明的烏龜
有一個特殊版本的還原指令,"U"(還原行)指令。還原行指令會還原對上次編輯的行所做的所有變更。輸入此指令兩次會取消先前的 "U"。
一個非常聰明的烏龜
xxxx 刪除 非常
一個 聰明的烏龜
xxxxxx 刪除 烏龜
一個 聰明
使用 "U" 還原行
一個非常聰明的烏龜
使用 "u" 還原 "U"
一個 聰明
"U" 指令本身就是一個變更,"u" 指令會還原該變更,而 CTRL-R 會重做該變更。這可能會有點令人困惑。別擔心,使用 "u" 和 CTRL-R,您可以回到您曾經擁有的任何情況。更多內容請參閱 32.2 節。

02.6 其他編輯指令

Vim 有大量的指令可以變更文字。請參閱 Q_in 及以下內容。以下是一些常用的指令。

附加

"i" 指令會在游標下的字元之前插入一個字元。這運作良好;但是,如果您想在行尾添加內容怎麼辦?為此,您需要將文字插入游標之後。這可以使用 "a"(附加)指令完成。例如,要將行變更
這對烏龜來說沒什麼意義。
變成
這對烏龜來說沒什麼意義!!!
將游標移動到行尾的點。然後輸入 "x" 以刪除句點。游標現在位於行尾的 turtle 中的 e 上。現在輸入
a!!!<Esc>
在 turtle 中的 e 之後附加三個驚嘆號
這對烏龜來說沒什麼意義!!!
開啟新的一行
"o" 指令會在游標下方建立一個新的空白行,並將 Vim 設定為插入模式。然後您可以輸入新行的文字。假設游標位於這兩行的第一行中的某處
一個非常聰明的烏龜
發現程式設計 Unix 有點難
如果您現在使用 "o" 指令並輸入新文字
oThat liked using Vim<Esc>
結果是
一個非常聰明的烏龜
喜歡使用 Vim
發現程式設計 Unix 有點難
"O" 指令(大寫)會在游標上方開啟一行。
使用計數
假設您想向上移動九行。您可以輸入 "kkkkkkkkk",或者您可以輸入指令 "9k"。事實上,您可以使用數字開頭許多指令。例如,在本章前面,您透過輸入 "a!!!<Esc>" 在行尾添加了三個驚嘆號。另一種方法是使用指令 "3a!<Esc>"。計數 3 告訴後面的指令將其效果增加三倍。同樣地,要刪除三個字元,請使用指令 "3x"。計數總是出現在其適用的指令之前。

02.7 離開

要離開,請使用 "ZZ" 指令。此指令會寫入檔案並離開。
注意: 與許多其他編輯器不同,Vim 不會自動建立備份檔案。如果您輸入「ZZ」,您的變更會被提交,且無法回頭。您可以設定 Vim 編輯器來產生備份檔案;請參閱 07.4

捨棄變更

有時您會進行一連串的變更,然後突然發現您在開始之前的情況比較好。別擔心;Vim 有一個退出並捨棄所有變更的指令。它是
:q!
別忘了按下 <Enter> 來完成指令。
對於那些對細節感興趣的人,此指令的三個部分分別是冒號 (:),它會進入命令列模式;q 指令,它會告訴編輯器退出;以及覆蓋指令修飾符號 (!)。需要覆蓋指令修飾符號的原因是 Vim 不願意捨棄變更。如果您只輸入「:q」,Vim 會顯示錯誤訊息並拒絕退出
E37:自上次變更後尚未寫入(使用 ! 來覆蓋)
透過指定覆蓋,您實際上是在告訴 Vim,「我知道我現在做的看起來很蠢,但我真的想要這樣做。」
如果您想繼續使用 Vim 編輯: 「:e!」指令會重新載入檔案的原始版本。

02.8 尋找說明

您一直想知道的一切都可以在 Vim 的說明檔案中找到。不要害怕發問!
如果您知道自己在尋找什麼,通常使用說明系統搜尋會比使用 Google 更容易。因為主題遵循特定的樣式指南。
此外,說明還有一個優點,就是它屬於您特定的 Vim 版本。您不會看到稍後新增的指令的說明。這些指令對您來說將無法使用。
要取得一般說明,請使用此指令
:help
您也可以使用第一個功能鍵 <F1>。如果您的鍵盤有 <Help> 鍵,它也可能有效。如果您沒有提供主題,「:help」會顯示一般說明視窗。Vim 的建立者在說明系統上做了一些非常聰明(或非常懶惰)的事情:他們將說明視窗變成一個正常的編輯視窗。您可以使用所有正常的 Vim 指令來瀏覽說明資訊。因此,h、j、k 和 l 分別向左、向下、向上和向右移動。要離開說明視窗,請使用您用來離開編輯器的相同指令:「ZZ」。這只會關閉說明視窗,而不會退出 Vim。
當您閱讀說明文字時,您會注意到一些文字被包在垂直線中(例如,help)。這表示一個超連結。如果您將游標放置在任何兩條垂直線之間,並按下 CTRL-](跳到標籤),說明系統會將您帶到指示的主題。(由於這裡不討論的原因,Vim 中超連結的術語是標籤。因此,CTRL-] 會跳到游標下單字所給定的標籤位置。)跳轉幾次後,您可能會想回到上一頁。CTRL-T(彈出標籤)會將您帶回先前的位置。CTRL-O(跳到較舊的位置)在這裡也很好用。在說明畫面的頂部,有一個標記 help.txt。這個在「*」字元之間的名稱被說明系統用來定義一個標籤(超連結目的地)。請參閱 29.1,以取得有關使用標籤的詳細資訊。
要取得特定主題的說明,請使用以下指令
:help {subject}
例如,要取得「x」指令的說明,請輸入以下內容
:help x
要瞭解如何刪除文字,請使用此指令
:help deleting
要取得所有 Vim 指令的完整索引,請使用以下指令
:help index
當您需要取得控制字元指令(例如,CTRL-A)的說明時,您需要使用前綴「CTRL-」拼寫它。
:help CTRL-A
Vim 編輯器有許多不同的模式。預設情況下,說明系統會顯示一般模式指令。例如,以下指令會顯示一般模式 CTRL-H 指令的說明
:help CTRL-H
要識別其他模式,請使用模式前綴。如果您想要插入模式版本的指令說明,請使用「i_」。對於 CTRL-H,這會為您提供以下指令
:help i_CTRL-H
當您啟動 Vim 編輯器時,可以使用幾個命令列引數。這些引數都以連字號 (-) 開頭。例如,要找出 -t 引數的作用,請使用指令
:help -t
Vim 編輯器有許多選項,可讓您設定和自訂編輯器。如果您想要取得選項的說明,您需要將其括在單引號中。例如,要找出 'number' 選項的作用,請使用以下指令
:help 'number'
所有模式前綴的表格可以在以下位置找到: help-summary
特殊按鍵括在角括號中。例如,要在插入模式下尋找向上箭頭鍵的說明,請使用此指令
:help i_<Up>
如果您看到您不理解的錯誤訊息,例如
E37:自上次變更後尚未寫入(使用 ! 來覆蓋)
您可以使用開頭的錯誤 ID 來尋找有關它的說明
:help E37
摘要: help-summary 1) 在輸入主題後使用 Ctrl-D,讓 Vim 顯示所有可用的主題。或按下 Tab 鍵來完成
:help some<Tab>
有關如何使用說明的更多資訊
:help helphelp
2) 追蹤垂直線中的連結,以取得相關說明。您可以從詳細的說明轉到使用者文件,其中從使用者的角度更詳細地描述了某些指令,而細節較少。例如,在
:help pattern.txt
您可以在簡介中看到使用者指南主題 03.9usr_27.txt
3) 選項括在單撇號中。要前往列表選項的說明主題
:help 'list'
如果您只知道您在尋找某個選項,您也可以執行
:help options.txt
來開啟說明頁面,其中描述了所有選項處理,然後使用正規表示式搜尋,例如 textwidth。某些選項有自己的命名空間,例如
:help cpo-<letter>
對於 'cpoptions' 設定的對應旗標,請將 <letter> 替換為特定旗標,例如
:help cpo-;
對於 'guioptions' 旗標
:help go-<letter>
4) 一般模式指令沒有前綴。要前往「gt」指令的說明頁面
:help gt
5) 插入模式指令以 i_ 開頭。刪除單字的說明
:help i_CTRL-W
6) 可視模式指令以 v_ 開頭。跳轉到可視區域另一側的說明
:help v_o
7) 命令列編輯和引數以 c_ 開頭。使用命令引數 % 的說明
:help c_%
8) Ex 指令總是從「:」開始,所以要前往「:s」指令的說明
:help :s
9) 專用於偵錯的指令以「>」開頭。要前往「cont」偵錯指令的說明
:help >cont
10) 按鍵組合。它們通常以一個字母開頭,表示它們可以使用的模式。例如
:help i_CTRL-X
會將您帶到插入模式下的 CTRL-X 指令系列,該指令可用於自動完成不同的事物。請注意,某些按鍵會始終以相同的方式書寫,例如 Control 將始終為 CTRL。對於一般模式指令,沒有前綴,並且該主題可在 :h CTRL-<字母> 中找到。例如
:help CTRL-W
相反地
:help c_CTRL-R
將描述在命令列中輸入指令時 CTRL-R 的作用,並且
:help v_CTRL-A
討論在可視模式中遞增數字,以及
:help g_CTRL-A
討論「g<C-A>」指令(例如,您必須按下「g」,然後按下 <CTRL-A>)。這裡的「g」代表一般指令「g」,它總是會預期第二個按鍵,然後才執行與以「z」開頭的指令類似的操作。
11) 正規表示式項目總是從 / 開始。因此,要取得 Vim 正規表示式中「\+」量詞的說明
:help /\+
如果您需要了解有關正規表示式的所有資訊,請從以下位置開始閱讀
:help pattern.txt
12) 暫存器總是從「quote」開始。要瞭解特殊的「:」暫存器
:help quote:
13) Vim Script 可在以下位置找到
:help eval.txt
該語言的某些方面可在 :h expr-X 中找到,其中「X」是一個字母。例如
:help expr-!
將會帶您前往描述 Vim Script 的「!」(非)運算子的主題。同樣重要的是
:help function-list
以尋找所有可用函數的簡短描述。Vim Script 函數的說明主題始終包含「()」,因此
:help append()
討論 append Vim Script 函數,而不是如何在目前的緩衝區中附加文字。
14) 對應會在說明頁面 :h map.txt 中討論。使用
:help mapmode-i
以找出有關 :imap 指令的資訊。也可以使用 :map-topic 來找出有關對應的特定子主題,例如
:help :map-local
適用於緩衝區本機對應,或
:help map-bar
說明如何在對應中處理「|」。
15) 指令定義會在 :h command-topic 中討論,因此請使用
:help command-bar
來找出有關自訂指令的「!」引數的資訊。
16) 視窗管理指令總是從 CTRL-W 開始,因此您可以在 :h CTRL-W_字母 中找到相關的說明。例如
:help CTRL-W_p
用於移動先前存取的視窗。您也可以存取
:help windows.txt
如果您正在尋找視窗處理指令,可以瀏覽並閱讀它們。
17) 使用 :helpgrep 在所有說明頁面中搜尋(也包括任何已安裝的外掛程式)。請參閱 :helpgrep 以瞭解如何使用它。要搜尋主題
:helpgrep topic
這會將您帶到第一個符合項。要前往下一個符合項
:cnext
所有符合項都可在快速修復視窗中找到,可以使用以下指令開啟
:copen
移動到您喜歡的符合項,然後按下 Enter 鍵以跳到該說明。
18) 使用者手冊。這以相當友好的方式描述了初學者的說明主題。從 usr_toc.txt 開始,以尋找目錄(您可能已經猜到)
:help usr_toc.txt
瀏覽內容以尋找感興趣的主題。「二合字母」和「輸入特殊字元」項目位於第 24 章,因此要前往該特定說明頁面
:help usr_24.txt
此外,如果您想要存取說明中的特定章節,可以直接存取章節編號,如下所示
:help 10.1
這會前往 usr_10.txt 中的第 10.1 章,並討論錄製巨集。
19) 醒目提示群組。總是從 hl-群組名稱開始。例如
:help hl-WarningMsg
討論有關 WarningMsg 高亮顯示群組。
20) 語法高亮顯示是以 :syn-topic 作為命名空間。例如:
:help :syn-conceal
討論關於 ":syn" 命令的 conceal 參數。
21) 快速修正(Quickfix)命令通常以 :c 開頭,而位置列表(location list)命令通常以 :l 開頭。
22) 自動命令事件可以透過其名稱找到。
:help BufWinLeave
若要查看所有可能的事件
:help events
23) 命令列開關總是使用 "-" 開頭。因此,若要查詢 Vim 中 -f 命令開關的說明,請使用:
:help -f
24) 可選功能總是使用 "+" 開頭。若要查詢關於 conceal 功能,請使用:
:help +conceal
25) 包含的檔案類型特定功能的說明通常以 ft-<filetype>-<functionality> 的形式提供。所以:
:help ft-c-syntax
討論關於 C 語法檔案及其提供的選項。有時,還會有關於自動完成(omni completion)
:help ft-php-omni
或檔案類型外掛程式的額外章節。
:help ft-tex-plugin
可以找到。
26) 錯誤和警告代碼可以直接在說明文件中查詢。因此:
:help E297
會直接帶你到交換檔錯誤訊息的描述,而
:help W10
討論關於「正在變更唯讀檔案」的警告。然而,有時這些錯誤代碼並沒有被描述,而是列在通常導致此錯誤的 Vim 命令中。因此:
:help E128
會帶你到 :function 命令。
下一章:usr_03.txt 移動
版權聲明:請參閱 manual-copyright vim:tw=78:ts=8:noet:ft=help:norl
主目錄
命令索引
快速參考