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|
--------------------------------------------------------------------------------
*02.1* 第一次執行 Vim
啟動 Vim 的命令如下:
gvim file.txt
在 UNIX 作業系統中,你可以在任意命令提示符下輸入這個命令。如果你用的是 Microsoft
Windows, 啟動一個 MS-DOS 視窗,再輸入這個命令。
無論哪一種方式,現在 Vim 開始編輯一個名為 file.txt 的檔案了。由於這是一個新建
檔案,你會得到一個空的視窗。螢幕看起來會象下面這樣:
+---------------------------------------+
|# |
|~ |
|~ |
|~ |
|~ |
|"file.txt" [New file] |
+---------------------------------------+
('#"是當前游標的位置)
以波紋線(~)開頭的行表示該行在檔案中不存在。換句話說,如果 Vim 開啟的檔案不能充滿
這個顯示的螢幕,它就會顯示以波紋線開頭的行。在螢幕的底部,有一個訊息行指示檔案
名為 file.txt 並且說明這是一個新建的檔案。這行資訊是臨時的,新的資訊可以覆蓋它。
VIM 命 令
gvim 命令建立一個新視窗用於編輯。如果你用的是這個命令:
vim file.txt
則編輯在命令視窗內進行。換句話說,如果你在 xterm 中執行,編輯器使用 xterm 視窗。
如果你用的是 Microsoft Window 的 MS-DOS 視窗,編輯器使用這個 MS-DOS 視窗。兩個
版本顯示出來的文字看起來是一樣的。但如果你用的是 gvim,就會有其他特性,如選單條。
後面會有更多的描述。
--------------------------------------------------------------------------------
*02.2* 插入文字
Vim 是一個多模式的編輯器。就是說,在不同模式下,編輯器的響應是不同的。在普通模式
下,你敲入的字元只是命令;而在插入模式,你敲入的字元就成為插入的文字了。
當你剛剛進入 Vim,它處在普通模式。通過敲入"i"命令(i是 Insert 的縮寫)可以啟動
插入模式,這樣你就可以輸入文字了,這些文字將被插入到檔案中。不用擔心輸錯了, 你還
能夠隨後修正它。要輸入下文的程式設計師打油詩,你可以這樣敲:
iA very intelligent turtle
Found programming UNIX a hurdle
輸入"turtle"後,你通過輸入回車開始一個新行。最後,你輸入 <Esc> 鍵退出插入模式而
回到普通模式。現在在你的 Vim 視窗中就有兩行文字了:
+---------------------------------------+
|A very intelligent turtle |
|Found programming UNIX a hurdle |
|~ |
|~ |
| |
+---------------------------------------+
我 在 什 麼 模 式?
要看到你在什麼模式,輸入如下命令:
:set showmode
你會發現當你敲入冒號後,Vim 把游標移到視窗的最後一行。那裡是你輸入“冒號命令”
(以冒號開頭的命令)的地方,敲入回車結束這個命令的輸入(所有的冒號命令都用
這種方式結束)。
現在,如果你輸入 "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 表示右的?但實際上,作這些選擇
是有理由的:移動游標是最常用的編輯器命令。而這些鍵位是在你本位的右手。也就是說:
這種鍵位的設定使你可以以最快的速度執行移動操作(特別是當你用十指輸入的時候)。
Note:
你還可以用方向鍵移動游標,但這樣會減慢你輸入的速度,因為你必須把你的手從
字母鍵移動到方向鍵。想象一下,你在一個小時內可要這樣做幾百次,這可要花
相當多的時間的。
而且,有一些鍵盤是沒有方向鍵的,或者放在一些很特別的地方。所以,
知道 hjkl 的用法在這些情況下就很有幫助了。
記住這些命令的一個方法是:h 在左邊,l 在右邊,j 指著下面。用圖表示如下:
k
h l
j
學習這些命令的最好方法是使用它。用 "i" 命令輸入更多的文字。然後用 hjkl 鍵移動
游標並在某些地方輸入一些單詞。別忘了用 <Esc> 切換回普通模式。|vimtutor|也是一個
練習的好辦法。
--------------------------------------------------------------------------------
*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" 命令
用於完成這個功能。
以下面兩行為例子:
A young intelligent
turtle
把游標移到第一行,然後按 "J":
A young intelligent turtle
--------------------------------------------------------------------------------
*02.5* 撤銷與重做
假設現在你刪得太多了。當然,你可以重新輸入需要的內容。不過,你還有一個更簡單的
選擇。"u" 命令撤銷上一個編輯操作。看看下面這個操作:先用 "dd" 刪除一行,再敲
"u",該行又回來了。
再給一個例子:把游標移到第一行的 A 上:
A young intelligent turtle
現在輸入 xxxxxxx 刪除 "A young"。結果如下:
intelligent turtle
輸入"u" 撤銷最後一個刪除操作。那個刪除操作刪除字元 g,所以撤銷命令恢復這個字元:
g intelligent turtle
下一個 u 命令恢復倒數第二個被刪除的字元:
ng intelligent turtle
下一個 u 命令恢復 u,如此類推:
ung intelligent turtle
oung intelligent turtle
young intelligent turtle
young intelligent turtle
A young intelligent turtle
Note:
如果你輸入 "u" 兩次,你的文字恢復原樣,那應該是你的 Vim 被配置在 Vi 相容
模式了。看這裡修正這個問題:|not-compatible|。
本文假定你工作在 "Vim 的方式"。你可能更喜歡舊的 Vi 的模式,但是你必須
小心本文中的一些小區別。
重 做
如果你撤銷得太多,你可以輸入CTRL-R(redo)回退前一個命令。換句話說,它撤銷
一個撤銷。要看執行的例子,輸入CTRL-R兩次。字元 A 和它後面的空格就出現了:
young intelligent turtle
有一個特殊版本的撤銷命令:"U" (行撤銷)。行撤銷命令撤銷所有在前一個編輯行
上的操作。 輸入這些命令兩次取消前一個 "U":
A very intelligent turtle
xxxx 刪除 very
A intelligent turtle
xxxxxx 刪除turtle
A intelligent
用 "U" 恢復行
A very intelligent turtle
用 "u" 撤銷 "U"
A intelligent
"U" 命令本身就是一個改變操作,"u" 命令撤銷該操作,CTRL-R 命令重做該操作。
有點亂吧, 但不用擔心,用 "u" 和 CTRL-R 命令你可以切換到任何你編輯過的狀態。
--------------------------------------------------------------------------------
*02.6* 其它編輯命令
Vim 有大量的命令可以修改文字。參見|Q_in|和下文。這裡是一些經常用到的:
添 加
"i" 命令在游標所在字元前面插入字元。一般情況下,這就夠用了,但如果你剛好想在
行尾加東西怎麼辦?要解決這個問題,你需要在文字後插入字元。這通過 "a" (append)
命令實現。
例如,要把如下行
and that's not saying much for the turtle.
改為
and that's not saying much for the turtle!!!
把游標移到行尾的句號上。然後輸入 "x" 刪除它。現在游標處於一行的尾部了,現在輸入
a!!!<Esc>
新增三個感嘆號到 turtle 的 "e" 後面:
and that's not saying much for the turtle!!!
開 始 一 個 新 行
"o" 命令在游標下方建立一個新的空行,並把 Vim 切換到插入模式。然後你可以在這個
新行內輸入文字了。
假定你的游標在下面兩行中第一行的某個地方:
A very intelligent turtle
Found programming UNIX a hurdle
如果你現在用 "o" 命令並輸入新的文字:
oThat liked using Vim<Esc>
結果會是:
A very intelligent turtle
That liked using Vim
Found programming UNIX a hurdle
"O" 命令(大寫)在游標上方開啟一個新行。
指 定 次 數
假定你想向上移動 9 行,你可以輸入 "kkkkkkkkk" 或者你可以輸入"9k"。實際上,
你可以在很多命令前面加一個數字。例如在這章的前面,你通過輸入 "a!!!<Esc>"
增加三個感嘆號。另一個方法是使用命令 "3a!<Esc>"。次數 3 要求把後面的命令
執行三次。同樣的,要刪除三個字元,可以使用 "3x"。次數總是放在要被處理多次
的命令的前面。
--------------------------------------------------------------------------------
*02.7* 退出
使用 "ZZ" 命令可以退出。這個命令儲存檔案並退出。
Note:
與其他編輯器不一樣,Vim 不會自動建立一個備份檔案。如果你輸入 "ZZ",
你的修改立即生效並且不能恢復。你可以配置 Vim 讓它產生一個備份檔案,
參見|07.4|。
放 棄 修 改
有時你會做了一系列的修改才突然發現還不如編輯之前。不用擔心,Vim 有“放棄修改
並退出”的命令,那就是:
:q!
別忘了按回車使你的命令生效。
這個命令執行的細節是:命令有三部分,包括冒號(:),它使 Vim 進入命令模式,
q 命令,它告訴 Vim 退出,而感嘆號是強制命令修飾符。
這裡,強制命令修飾符是必要的,它強制性地要求 Vim 放棄修改並退出。如果你只是
輸入":q",Vim 會顯示一個錯誤資訊並拒絕退出:
E37: No write since last change (use ! to override)
通過指定強制執行,你實際上在告訴 Vim:“我知道我所做的看起來很傻,但我長大了,
知道自己在做什麼。”
如果你放棄修改後還想重新編輯,用 ":e!" 命令可以重新裝載原來的檔案。
--------------------------------------------------------------------------------
*02.8* 尋求幫助
所有你想知道的東西,都可以在 Vim 幫助檔案中找到答案,隨便問!
要獲得一般的幫助用這個命令:
:help
你還可以用第一個功能鍵 <F1>。如果你的鍵盤上有一個 <Help> 鍵,可能也有效。
如果你不指定主題,":help" 將命令顯示一個總攬的幫助視窗。Vim 的作者在幫助系
統方面使用了一個很聰明的方案(也許可以說是很懶惰的方案):他們用一個普通的編輯窗
口來顯示幫助。你可以在幫助視窗中使用任何普通的 Vim 命令移動游標。所以,h,j,k
和 l 還是表示左,下,上和右。
要退出幫助視窗,用退出一個普通視窗的命令:"ZZ"。這隻會退出幫助視窗,而不會
退出 Vim。
當你閱讀幫助的時候,你會發現有一些文字被一對豎線括起來了(例如|help|)。這表示
一個超級連結。如果你把游標移到這兩個豎線之間並按 CTRL-](標籤跳轉命令), 幫助
系統會把你引向這個超級連結指向的主題。(由於不是本章的重點,這裡不詳細討論,
Vim 對超級連結的術語是 "標籤"(tag),所以 CTRL-] 實際是跳轉到游標所在單詞為名
的標籤所在的位置。)
跳轉幾次以後,你可能想回到原來的地方。CTRL-T(標籤退棧)把你送回前一個
跳轉點。CTRL-O (跳轉到前一個位置)也能完成相同的功能。
在幫助螢幕的頂上,有一個符號: *help.txt*。這個名字被幫助系統用來定義一個標籤
(也就是超級連結的目標)。
參見|29.1|可以瞭解更多關於標籤的內容。
要獲得特定主題的幫助,使用如下命令:
:help {主題}
例如,要獲得 "x" 命令的幫助,輸入如下命令:
:help x
要知道如何刪除文字,使用如下命令:
:help deleting
要獲得所有命令的幫助索引,使用如下命令:
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'
如果你看到一個你不能理解的錯誤資訊,例如:
E37: No write since last change (use ! to override)
你可以使用使用E開頭的錯誤號找關於它的幫助:
:help E37
移 動
在你插入或者刪除之前,你需要移動到合適的位置。Vim 有一大堆命令可以移動游標。
本章向你介紹最重要的那些。你可以在 |Q_lr| 下面找到這些命令的列表。
|03.1| 詞移動
|03.2| 移動到行首或行尾
|03.3| 移動到指定的字元
|03.4| 括號匹配
|03.5| 移動到指定的行
|03.6| 確定當前位置
|03.7| 滾屏
|03.8| 簡單查詢
|03.9| 簡單的查詢模式
|03.10| 使用標記
下一章:|usr_04.txt| 做小改動
前一章:|usr_02.txt| Vim 初步
目錄:|usr_toc.txt|
--------------------------------------------------------------------------------
*03.1* 詞移動
要移動游標向前跳一個詞,可以使用 "w" 命令。象大多數 Vim 命令一樣,你可以在命令前
加數字字首表示把這個命令重複多次。例如,"3w" 表示向前移動3個單詞。用圖表示如下:
This is a line with example text
--->-->->----------------->
w w w 3w
要注意的是,如果游標已經在一個單詞的詞首,"w" 移動到下一個單詞的詞首。
"b" 命令向後移動到前一個詞的詞首:
This is a line with example text
<----<--<-<---------<---
b b b 2b b
還有一個 "e" 命令可以移到下一個單詞的詞末,而 "ge" 則移動到前一個單詞的末尾:
This is a line with example text
<- <--- -----> ---->
ge ge e e
如果你在一行的最後一個單詞,"w" 命令將把你帶到下一行的第一個單詞。這樣你可以
用這個命令在一段中移動,這比使用 "l" 要快得多。"b" 則在反方向完成這個功能。
一個詞以非單詞字元結尾,例如 ".","-" 或者 ")"。要改變 Vim 使用的 "分詞符",
請參見 'iskeyword' 選項。
還可以以 "空白字元" 分割的 "大單詞" 移動。這不是我們通常意義的 "單詞”。這
就是為什麼稱之為 "大單詞" 的原因。如下圖所示:
ge b w e
<- <- ---> --->
This is-a line, with special/separated/words (and some more).
<----- <----- --------------------> ----->
gE B W E
ge b w e
組合運用這些大寫和小寫的命令,你可以很快地在一段中前後移動。
--------------------------------------------------------------------------------
*03.2* 移動到行首或行尾
"$" 命令把游標移動到當前行行尾。如果你的鍵盤上有 <End> 鍵,也可以完成相同的功能。
"^" 命令把游標移動到當前行的第一個非空字元,而 "0" 命令則移到一行的第一個字元,
<Home> 鍵也可以完成相同的功能。圖示如下:
^
<------------
.....This is a line with example text
<----------------- --------------->
0 $
(這裡 "....." 表示空白字元)
象大多數移動命令一樣,"$" 命令接受個次數字首。但是 "移動到一行的行尾n次" 沒
有什麼意義,所以它會使游標移動到另一行。例如,"1$" 移動到當前行的行尾,而
"2$" 則移動到下一行的行尾,如此類推。
"0" 命令不能加個數字首,因為 "0" 本身就是個數字。而且,出人意料地是,"^" 命
令也不支援數字字首。
--------------------------------------------------------------------------------
*03.3* 移動到一個指定的字元
單字元查詢命令是最有用的移動命令之一。"fx" 命令向前查詢本行中的字元 x。提示:
"f" 表示 "Find"。
例如,假定你在下面例子行的行首,而你想移動到單詞 "human" 的h那裡。只要執行
命令 "fh" 即可:
To err is human. To really foul up you need a computer.
---------->--------------->
fh fy
這個例子還演示了用 "fy" 命令移動到 "really" 的詞尾。
你可以在這個命令前面加數字字首,所以,你可以用 "3fl" 命令移動到 "foul" 的
"l":
To err is human. To really foul up you need a computer.
--------------------->
3fl
"F" 命令用於向左查詢:
To err is human. To really foul up you need a computer.
<---------------------
Fh
"tx" 命令與 "fx" 相似,但它只把游標移動到目標字元的前一個字元上。提示:"t"
表示 "To"。這個命令的反向版本是 "Tx"。
To err is human. To really foul up you need a computer.
<------------ ------------->
Th tn
這四個命令可以通過 ";" 命令重複,"," 命令則用於反向重複。無論用哪個命令,游標
永遠都不會移出當前行,哪怕是這兩行是連續的一個句子。
有時你啟動了一個查詢命令後才發現自己執行了一個錯誤的命令。例如,你啟動了一個
"f" 命令後才發現你本來想用的是 "F"。要放棄這個查詢,輸入 <Esc>。所以
"f<Esc>" 取消一個向前查詢命令而不做任何操作。 Note: <Esc> 可以中止大部分命令,
而不僅僅是查詢。
--------------------------------------------------------------------------------
*03.4* 括號匹配
當你寫程式的時候,你經常會遇到巢狀的()結構。這時,"%" 是一個非常方便的命令
了:它能匹配一對括號。如果游標在 "(" 上,它移動到對應的 ")" 上,反之,如果它在
")" 上,它移動到 "(" 上。
%
<----->
if (a == (b * c) / d)
<---------------->
%
這個命令也可適用於 [] 和 {}。(可用'matchpairs'選項定義)
當游標不在一個有用的字元上,"%" 會先向前找到一個。比如當游標停留在上例中的行
首時,"%" 會向前查詢到第一個 "("。然後會移動到它的匹配處。
if (a == (b * c) / d)
---+---------------->
%
--------------------------------------------------------------------------------
*03.5* 移動到指定的行
如果你是一個 C 或者 C++ 程式設計師,你對下面這樣的錯誤資訊應該非常熟悉:
prog.c:33: j undeclared (first use in this function)
這表示你可能要移動到 33 行去作一些修改了。那麼怎樣找到 33 行?一個辦法是執行
"9999k" 命令移到檔案頭,再執行 "32j" 下移到32行。這不是一個好辦法,但肯定有效。
更好的方法是使用 "G" 命令。加上一個次數字首,這個命令可以把你送到指定的行。
例如,"33G" 把你送到 33 行。(要用更好的方法在編譯器的錯誤列表中移動,參見
|usr_30.txt| 的 ":make" 命令部分。)
如果沒有數字字首,"G" 命令把游標移動到文末。移動到文首的命令是 "gg"。"1G"
也能完成這個功能,但稍複雜一點。
| first line of a file ^
| text text text text |
| text text text text | gg
7G | text text text text |
| text text text text
| text text text text
V text text text text |
text text text text | G
text text text text |
last line of a file V
另一個定位行的方法是使用帶數字字首的 "%" 命令。例如,"50%" 移動到檔案的中間,
而 "90%" 移到差不多結尾的位置。
前面的描述假定你想移動到檔案中的某一行,而不在乎它是否可見。那麼如何移動到視野
之內的一行呢?下圖演示了三個可以使用的命令:
+---------------------------+
H --> | text sample text |
| sample text |
| text sample text |
| sample text |
M --> | text sample text |
| sample text |
| text sample text |
| sample text |
L --> | text sample text |
+---------------------------+
提示:"H" 表示 "Home","M" 表示 "Middle" 而 "L" 表示 "Last"。
--------------------------------------------------------------------------------
*03.6* 確定當前位置
要確定你在檔案中的位置,有三種方法:
1. 使用 CTRL-G 命令,你會獲得如下訊息(假定 'ruler' 選項已經被關閉):
"usr_03.txt" line 233 of 650 --35%-- col 45-52
這裡顯示了你正在編輯的檔案的名稱,你所處的當前行的行號,全文的總行數,游標
以前的行佔全文的百分比,和你所處的列的列號。
有時你會看到一個分開的兩個列號。例如,"col 2-9"。這表示游標處於第二個字元
上,但由於使用了製表符,在螢幕上的位置是 9。
2. 設定 'number' 選項。這會在每行的前面加上一個行號:
:set number
要重新關閉這個選項:
:set nonumber
由於'number'是一個布林型別的選項,在它前面加上 "no" 表示關閉它。布林選項只會
有兩個值,on 或者 off。
Vim 有很多選項,除了布林型別的,還有數字或者字串型別的。在用到的時候會給
處一些例子的。
3. 設定 'ruler' 選項。這會在 Vim 視窗的右下角顯示當前游標的位置:
:set ruler
使用 'ruler' 的好處是它不佔多少地方,從而可以留下更多的地方給你的文字。
--------------------------------------------------------------------------------
*03.7* 滾屏
CTRL-U 命令向下滾動半屏。想象一下通過一個視口看著你的文字,然後把這個視口向上移動
該視口的一半高度。這樣,視窗移動到當前文字的上面,而文字則移到視窗的下面。不用擔心
記不住那邊是上。很多人都是這樣。
CTRL-D命令把視窗向下移動半屏,所以把文字向上移動半屏。
+----------------+
| some text |
| some text |
| some text |
+---------------+ | some text |
| some text | CTRL-U --> | |
| | | 123456 |
| 123456 | +----------------+
| 7890 |
| | +----------------+
| example | CTRL-D --> | 7890 |
+---------------+ | |
| example |
| example |
| example |
| example |
+----------------+
每次滾一行的命令是 CTRL-E(上滾)和 CTRL-Y(下滾)。可以把 CTRL-E 想象為是多給你
一行(one line Extra)。
向前滾動一整屏的命令是 CTRL-F(實際上會留下兩行不滾動)。反向的命令是 CTRL-B。
幸運地,CTRL-F 是向前 (forward) 滾動,CTRL-B 是向後 (backward) 滾動,這比較好記。
移動中的一個常見問題是,當你用 "j" 向下移動的時候,你的游標會處於螢幕的底部,
你可能希望,游標所在行處於螢幕的中間。這可以通過 "zz" 命令實現。
+------------------+ +------------------+
| some text | | some text |
| some text | | some text |
| some text | | some text |
| some text | zz --> | line with cursor |
| some text | | some text |
| some text | | some text |
| line with cursor | | some text |
+------------------+ +------------------+
"zt" 把游標所在行移動到螢幕的頂部,而 "zb" 則移動到螢幕的底部。Vim 中還有另外
一些用於滾動的命令,可以參見|Q_sc|。要使游標上下總保留有幾行處於視口中用作上下
文,可以使用'scrolloff'選項。
--------------------------------------------------------------------------------
*03.8* 簡單查詢
查詢命令是 "/String"。例如,要查詢單詞 "include",使用如下命令:
/include
你會注意到,當你輸入 "/" 的時候,游標移到了 Vim 視窗的最後一行,這與 "冒號命令"
一樣,在那裡你可以輸入要查詢的字串。你可以使用退格鍵 (退格箭頭或<BS>) 進行
修改,如果需要的時候還可以使用 <Left> 和 <Right> 鍵。
使用 <Enter> 開始執行這個命令。
Note:
字元.*[]^%//?~$有特殊含義。如果你要查詢它們,需要在前面加上一個 ""。
請參見下文。
要查詢下一個匹配可以使用 "n" 命令。用下面命令查詢游標後的第一個 #include:
/#include
然後輸入 "n" 數次。你會移動到後面每一個 #include。如果你知道你想要的是第幾個,
可以在這個命令前面增加次數字首。這樣,"3n" 表示移動到第三個匹配點。要注意,
"/" 不支援次數字首。
"?" 命令功能與 "/" 的功能類似,但是是反方向查詢:
?word
"N" 命令在反方向重複前一次查詢。因此,在 "/" 命令後執行 "N" 命令是向後查詢,
在 "?" 命令後執行 "N" 命令是向前查詢。
忽 略 大 小 寫
通常,你必須區分大小寫地輸入你要查詢的內容。但如果你不在乎大小寫。可以設定
'ignorecase' 選項:
:set ignorecase
如果你現在要查詢 "word",它將匹配 "word" 和 "WORD"。如果想再次區分大小寫:
:set noignorecase
歷 史 記 錄
假設你執行了三個查詢命令:
/one
/two
/three
現在,讓我們輸入 "/" 啟動一次查詢,但先不按下回車鍵。現在按 <Up>(上箭頭),Vim
把 "/three" 放到你的命令列上。回車就會從當前位置查詢 "three"。如果你不回車,
繼續按 <Up>,Vim 轉而顯示 "/two",而下一次 <Up> 變成 "/one"。
你還可以用 <Down> 命令在歷史記錄中反向查詢。
如果你知道前面用過的一個模式以什麼開頭,而且你想再使用這個模式的話,可以在輸入
<Up> 前輸入這個開頭。繼續前面的例子,你可以輸入 "/o<Up>",Vim 就會在命令列上
顯示 "/one"。
冒號開頭的命令也有歷史記錄。這允許你取回前一個命令並再次執行。這兩種歷史記錄
是相互獨立的。
在 文 本 中 查 找 一 個 單 詞
假設你在文字中看到一個單詞 "TheLongFunctionName" 而你想找到下一個相同的單詞。
你可以輸入 "/TheLongFunctionName",但這要輸入很多東西。而且如果輸錯了,Vim
是不可能找到你要找的單詞的。
有一個簡單的方法:把游標移到那個單詞下面使用 "*" 命令。Vim 會取得游標上
的單詞並把它作為被查詢的字串。
"#" 命令在反向完成相同的功能。你可以在命令前加一個次數:"3*" 查詢游標下
單詞第三次出現的地方。
查 找 整 個 單 詞
如果你輸入 "/the",你也可能找到 "there"。要找到以 "the" 結尾的單詞,可以用:
/the>
相關推薦
Linux學習—vim大全
狀態 設置 swp文件 ext fstab style 左右 使用 三種 vim--目錄vim的使用退出模式vim的三種主要模式命令模式vim的個性化配置產生.swp文件的深入解析一、vim的使用 vim + filename 編輯文件,當文件不存在
linux系統編輯神器 -vim用法大全
it 運維 vim編輯器文本編輯器,字處理器ASCIInano, sedvi: Visual Interfacevim: VI iMproved全屏編輯器,模式化編輯器vim模式:編輯模式(命令模式)輸入模式末行模式模式轉換:編輯-->輸入:i: 在當前光標所在字符的前面,轉為輸入模式; a:
vim快捷鍵及命令大全
定位游標: G 將游標定位到文字末尾行首 gg 將游標定位到文字啟始位置 0 (這個是零)定位到游標所在行行首 $ 定位到游標所在行行尾 數字G 跳轉到第n行 移動游標: h 向左移動 l 向右移動 j
VIM命令大全
在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮排從當前行起的下面n行。你可以試試把程式碼縮排任意打亂再用n==排版,相當於一般IDE裡的code format。使用gg=G可對整篇程式碼進行排版。 vim 選擇文字
進階Linux高手必懂的Vim命令大全
命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 vim 直接啟動vim vim filename 開啟vim並建立名為filename的檔案 檔案命令 開啟單個檔案 v
Linux vi/vim命令大全
命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 $ vim //直接啟動vim $ vim filename
VIM外掛大全,另外附VIM IDE 一鍵安裝包
之前發現沒圖片,常言道,沒圖說個JB,發一下: 這個是在xshell的效果,YY一下,在github上放置了vimide所需的一鍵安裝的外掛和一鍵安裝包,移除了導致卡死的vjde,在ubuntu,fedora,miint上測試通過,需要安裝vim-script
vim 操作命令大全
vim提供了:make來編譯程式,預設呼叫的是make, 如果你當前目錄下有makefile,簡單地:make即可。如果你沒有make程式,你可以通過配置makeprg選項來更改make呼叫的程式。 如果你只有一個abc.Java檔案,你可以這樣設定:set makeprg=javac\ abc.java 然
vim編輯器操作命令大全-絕對全
學習連結: vim命令大全 http://blog.csdn.net/scaleqiao/article/details/45153379 vim命令小技巧 http://www.codeceo.com/article/useful-vim-command.html
Linux vim命令大全
前言 首先介紹一下 vim vi 是 unix/linux 下極為普遍的一種文字編輯器, 大部分機器上都有 vi 有各種變種, 在不同的機器上常用不同的變種軟體 其中 vim 比較好用也用得比較廣泛 vim 是 Vi IMproved 的縮寫, 表示更好的 vi 本文就
vim操作大全
vim是我最喜歡的編輯器,也是Linux下第二強大的編輯器。 雖然emacs是公認的世界第一,我認為使用emacs並沒有使用vi進行編輯來得高效。 如果是初學vi,執行一下vimtutor是個聰明的決定。 (如果你的系統環境不是中文,而你想使用中文的vimtutor,就執
vim 設定大全,超級全
1.獲取幫助 WHAT PREPEND EXAMPLE ~ Normal mode command (nothing) :help x Visual mode command v_ :help v_u Insert mode command
linux中Vim命令大全
命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 vim 直接啟動vim vim filename 開啟vim並建立名為filename的檔案 檔案命令 開啟單個檔案
VIM使用大全
本章提供足夠的資訊使你用夠使用 Vim 來做基本的編輯。這裡提供的方法不一定是高效 快捷的。但起碼是有效的。花些時間去練習這些命令,這是後面的知識的基礎。 |02.1| 第一次執行 Vim |02.2| 插入文字 |02.3| 移動游標 |
vim快捷鍵整理大全
前言:在linux下學習了很久,可是操作卻還是小學生一樣,唉,於是把整理的linux下vim的命令分享給大家,有了這些快捷鍵相信相信大家在linux下學習都會得心應手的。 一、移動游標 1、左移h
vi 與 vim 快捷按鍵說明大全
1 一般指令模式 1.1 移動遊標 按鍵 說明 h 或向左方向鍵 遊標向左移動一個字元 j 或向下方向鍵 遊標向下移動一個字元 k 或向上方向鍵 遊標向上移動一個字元 l 或向右方向鍵 遊
VIM命令大全(圖+文)
mark sco 17. 光標位置 數據 自動跳轉 技術 數字 ref 在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n==排版,相當於一般IDE裏的code format
Linux - vim安裝 配置與使用
格式 only ctx net height border term mona 方便 一 Vim 簡單介紹 曾經一直用vi,近期開始使用 vim,以下將兩者做一下比較。 vi和vim都是多模式編輯器,不同的是vim 是vi的升級版本號,它不僅兼容vi的全部指令,並且
keycode 大全,javascript 再也不用操心我不知道的keycode了
end acer als doc rac amd capture 瀏覽器 ket keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 =
端口占用解決方案大全,最方便快速的解除端口被占用,強制解除占用端口
強制解除端口占用 切換mysql windows 綠色環境搭建 解除端口占用 強制解除端口占用可以使用我最新開發的新版本PHPWAMP8.8.8.8(截止目前最新版)PHPWAMP最新版支持自定義Mysql版本和自定義PHP版本,是目前唯一集成了VC運行庫的真正純綠色軟件。最新版PHPWA