VIM總結

*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 
This is a line with example text 
---->
ge ge e e
如果你在一行的最後一個單詞,"w" 命令將把你帶到下一行的第一個單詞。這樣你可以用
這個命令在一段中移動,這比使用 "l" 要快得多。"b" 則在反方向完成這個功能。
一個詞以非單詞字符結尾,例如 ".","-" 或者 ")"。要改變 Vim 認爲是單詞組成部分
的字符,請參見 'iskeyword' 選項。
還可以用空白字符分隔的 "字串" (大寫的 WORD) 移動。這不是我們通常意義的 "單
詞"。這就是爲什麼使用大寫形式的 WORD 的原因。按字串移動的命令也全都是大寫的,
如下圖所示:
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* 移動到行首或行尾
"$" 命令把光標移動到當前行行尾。如果你的鍵盤上有 鍵,也可以完成相同的功
能。
"^" 命令把光標移動到一行的第一個非空字符,而 "0" 命令則移到一行的第一個字符,
鍵也可以完成相同的功能。圖示如下:
^
.....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. 
To err is human. To really foul up you need a computer. 

Th tn
這四個命令可以通過 ";" 命令重複,"," 命令則用於反向重複。無論用哪個命令,光標
永遠都不會移出當前行,哪怕這兩行是連續的一個句子。
有時你啓動了一個查找命令後才發現自己執行了一個錯誤的命令。例如,你啓動了一個
"f" 命令後才發現你本來想用的是 "F"。要放棄這個查找,輸入 。所以 "f"
取消一個向前查找命令而不做任何操作。 備註: 可以中止大部分命令,而不僅僅
是查找。
*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 窗口的最後一行,這與 "冒號命令" 一樣,
在那裏你可以輸入要查找的字符串。你可以使用退格鍵 (退格箭頭或 ) 進行修改,
如果需要的時候還可以使用 和 鍵。
使用 開始執行這個命令。
備註:
字符 .*[]^%/\?~$ 有特殊含義。如果你要查找它們,需要在前面加上一個
"\"。請參見下文。
要查找下一個匹配可以使用 "n" 命令。用下面命令查找光標後的第一個 #include:
/#include
然後輸入 "n" 數次。你會移動到其後每一個 #include。如果你知道你想要的是第幾個,
可以在這個命令前面增加計數前綴。這樣,"3n" 表示移動到第三個匹配點。要注意,
"/" 不支持計數前綴。
"?" 命令功能與 "/" 的功能類似,但進行反方向查找:
?word
"N" 命令在反方向重複前一次查找。因此,在 "/" 命令後執行 "N" 命令是反向查找,在
"?" 命令後執行 "N" 命令是正向查找。
忽 略 大 小 寫
通常,你必須區分大小寫地輸入你要查找的內容。但如果你不在乎大小寫。可以設置
'ignorecase' 選項:
:set ignorecase
如果你現在要查找 "word",它將匹配 "word" 和 "WORD"。如果想再次區分大小寫:
:set noignorecase
歷 史 記 錄
假設你執行了三個查找命令:
/one
/two
/three
現在,讓我們輸入 "/" 啓動一次查找,但先不按下回車鍵。現在按 (上箭頭),Vim
把 "/three" 放到你的命令行上。回車就會從當前位置查找 "three"。如果你不回車,繼
續按 ,Vim 轉而顯示 "/two",而下一次 變成 "/one"。
你還可以用 命令在歷史記錄中反向查找。
如果你知道前面用過的一個模式以什麼開頭,而且你想再使用這個模式的話,可以在輸入
前輸入這個開頭。繼續前面的例子,你可以輸入 "/o",Vim 就會在命令行上
顯示 "/one"。
冒號開頭的命令也有歷史記錄。這允許你取回前一個命令並再次執行。這兩種歷史記錄是
相互獨立的。
在 文 本 中 查 找 一 個 單 詞
假設你在文本中看到一個單詞 "TheLongFunctionName" 而你想找到下一個相同的單詞。
你可以輸入 "/TheLongFunctionName",但這要輸入很多東西。而且如果輸錯了,Vim 是
不可能找到你要找的單詞的。
有一個簡單的方法:把光標移到那個單詞下面使用 "*" 命令。Vim 會取得光標上的
單詞並把它作爲被查找的字符串。
"#" 命令在反向完成相同的功能。你可以在命令前加一個計數:"3*" 查找光標下單
詞第三次出現的地方。
查 找 整 個 單 詞
如果你輸入 "/the",你也可能找到 "there"。要找到以 "the" 結尾的單詞,可以用:
/the\>
"\>" 是一個特殊的記號,表示只匹配單詞末尾。類似地,"\
/\
這不會匹配 "there" 或者 "soothe"。注意 "*" 和 "#" 命令也使用了 "詞首" 和
"詞尾" 標記來匹配整個單詞 (要部分匹配,使用 "g*" 和 "g#")
高 亮 匹 配
當你編輯一個程序的時候,你看見一個變量叫 "nr"。你想查一下它在哪被用到了。你可
以把光標移到 "nr" 下用 "*" 命令,然後用 n 命令一個個遍歷。
這裏還有一種辦法。輸入這個命令:
:set hlsearch
現在如果你查找 "nr",Vim 會高亮顯示所有匹配的地方。這是一個很好的確定變量在哪
被使用,而不需要輸入更多的命令的方法。
要關掉這個功能:
:set nohlsearch
這樣做,下一次查找時你又需要切換回來。如果你只是想去掉高亮顯示,用如下命令:
:nohlsearch
這不會復位 hlsearch 選項。它只是關閉高亮顯示。當你執行下一次查找的時候,高亮功
能會被再次激活。使用 "n" 和 "N" 命令時也一樣。
調 節 查 找 方 式
有一些選項能改變查找命令的工作方式。其中有幾個是最基本的:
:set incsearch
這個命令使 Vim 在你輸入字符串的過程中就顯示匹配點。用這個功能可以檢查是否會被
找到正確的匹配,這時輸入 就可以真正地跳到那個地方。否則,繼續輸入更多
的字符可以修改要查找的字符串。
:set nowrapscan
這個設置使得找到文件結尾後停止查找。或者當你往回查找的時候遇到文件開頭停止查
找。默認情況下 'wrapscan' 的狀態是 "on"。所以在找到文件尾的時候會自動折返到文
件頭。
插 曲
如果你喜歡前面的選項,而且每次用 Vim 都要設置它,那麼,你可以把這些命令寫到
Vim 的啓動文件中。
編輯 |
not-compatible
| 中提到的文件,或者用如下命令確定這個文件在什麼地
方:
:scriptnames
編輯這個文件,例如,象下面這樣:
:edit ~/.vimrc
然後在文中加一行命令來設置這些選項,就好像你在 Vim 中輸入一樣,例如:
Go:set hlsearch
"G" 移動到文件的結尾,"o" 開始一個新行,然後你在那裏輸入 ":set" 命令。
最後你用 結束插入模式。然後用如下命令存盤:
ZZ
現在如果你重新啓動 Vim,'hlsearch' 選項就已經被設置了。
*03.9* 簡單的查找模式
Vim 用正則表達式來定義要查找的對象。正則表達式是一種非常強大和緊湊的定義查找模
式的方法。但是非常不幸,這種強大的功能是有代價的,因爲使用它需要掌握一些技巧。
本章我們只介紹一些基本的正則表達式。要了解更多的關於查找模式和命令,請參考
|
usr_27.txt
|。你還可以在 |
pattern
| 中找到正則表達式的完整描述。
行 首 與 行 尾
^ 字符匹配行首。在美式英文鍵盤上,它在數字鍵 6 的上面。模式 "include" 匹配一行
中任何位置的單詞 include。而模式 "^include" 僅匹配在一行開始的 include。
$ 字符匹配行尾。所以,"was$" 僅匹配在行尾的單詞 was。
我們在下面的例子中用 "x" 標記出被 "the" 模式匹配的位置:
the solder holding one of the chips melted and the 
xxx xxx xxx
用 "/the$" 則匹配如下位置:
the solder holding one of the chips melted and the 
xxx
而使用 "/^the" 則匹配:
the solder holding one of the chips melted and the 
xxx
你還可以試着用這個模式:"/^the$",它會匹配僅包括 "the" 的行。並且不包括空格。
例如包括 "the " 的行是不會被這個模式匹配的。
匹 配 任 何 單 個 字 符
點 "." 字符匹配任何字符。例如,模式 "c.m" 匹配一個字符串,它的第一個字符是 c,
第二個字符是任意字符,而第三個字符是 m。例如:
We use a computer that became the cummin winter. 
xxx xxx xxx
匹 配 特 殊 字 符
如果你確實想匹配點字符,可以在前面加一個反斜槓去消除它的特殊含義。
如果你用 "ter." 模式去查找,會匹配這些地方:
We use a computer that became the cummin winter. 
xxxx xxxx
但如果你查找 "ter\.",只會匹配第二個位置。
*03.10* 使用標記
當你用 "G" 命令跳到另一個地方,Vim 會記住你從什麼地方跳過去的。這個位置成爲一
個標記,要回到原來的地方,使用如下命令:
``
` 用單引號 ' 也可以。
如果再次執行這個命令你會跳回去原來的地方,這是因爲 ` 記住了自己跳轉前的位
置。
一般,每次你執行一個會將光標移動到本行之外的命令,該移動即被稱爲一個 "跳轉" 。
這包括查找命令 "/" 和 "n" (無論跳轉到多遠的地方)。但不包括 "fx" 和 "tx" 這些行
內查找命令或者 "w" 和 "e" 等詞移動命令。
另外 "j" 和 "k" 不會被當做是一次 "跳轉",即使你在前面加上計數前綴使之移動
到很遠的地方也不例外。
`` 命令可以在兩個位置上跳來跳去。而 CTRL-O 命令則跳到一個 "較老" 的地方 (提
示: O 表示 older)。CTRL-I 則跳到一個 "較新" 的地方 (提示:I 在鍵盤上緊靠着
O)。考慮如下命令序列:
33G
/^The
CTRL-O
你首先跳到第 33 行,然後查找以 "The" 開頭的一行,然後用 CTRL-O 你會跳回到 33
行。再執行 CTRL-O 你會跳到最初的地方。現在你使用 CTRL-I,就又跳到 33 行。而再
用一次 CTRL-I 你又會到達找到 "The" 的地方。
| example text ^ |
33G | example text | CTRL-O | CTRL-I
| example text | |
V line 33 text ^ V
| example text | |
/^The | example text | CTRL-O | CTRL-I
V There you are | V
example text
備註:
CTRL-I 的功能與 一樣。
":jumps" 命令能輸出一個你可以跳往的位置的列表。最後一個你使用的標記會用 ">" 符
號標記出來。
有 名 字 的 標 記 *bookmark*
Vim 允許你在文本中放置自定義的標記。命令 "ma" 用 a 標記當前的光標位置。你可以
在文本中使用 26 個標記 (a 到 z)。這些標記是不可見的,只是一個由 Vim 記住的位
置。
要跳到一個你定義的標記,可以使用命令 `{mark},這裏 {mark} 是指定義標記的那
個字母。所以,移到標記 a 的命令是:
`a
命令 'mark (單引號加上一個標記) 會移到標記所在行的行首。這與 `mark 命令是不同
的,後者同時移到標記標記的列上。
標記在需要處理一個文件的兩個相關地方的時候非常有用。假設你在處理文件末的時候需
要查看文件首的一些內容。
先移動到文件首,設置一個標記 s (start,開始):
ms
然後移動到你需要處理的地方,再設置一個標記 e (end,結束):
me
現在你可以隨意移動,當你需要看開頭的地方,可以使用這個命令移到那裏:
's
然後使用 '' 跳回來。或者用 'e 跳到你正在處理的文件尾部的地方。
這裏使用 s 和 e 作標記名沒有特別的含義,只是爲了好記而已。
你可以用如下命令取得所有的標記的列表:
:marks
你會注意到有一些特殊的標記,包括:
' 跳轉前的光標位置
" 最後編輯的光標位置
[ 最後修改的開始位置
] 最後修改的結束位置

 

 

詞典簡表

前言

Vim是一個超級牛的編輯器,可以說是專爲程序員設計的編輯器,強大的有些不可思議。不過其學習曲線稍顯陡峭,前兩天在網上找到一個小圖表,比較全,如果對錶中所列的命令學習熟悉以後,處理日常的文本就已經足夠,所以貼出來,大家參考參考。

Vim的牛B之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在於這些命令大都可以進行組合,比如,9yy命令表示複製9行內容,9表示要複製的行數,同樣100dd表示刪除100行,當數字和命令合作的時候,就比單純的命令更強大,同樣,c命令表示擦除,w表示word即單詞,那麼cw就表示擦除一個單詞,c5w就表示刪除5個單詞等等。將這些簡單命令合成在一起,就可以發揮出難以想象的強大功能,而且可以使你的編輯工作充滿樂趣。

宏命令(Macros)

高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的:

:qx開始記錄宏,並將結果存入寄存器xq退出記錄模式@x播放記錄在x寄存器中的宏命令

稍微解釋一下,當在normal模式下輸入:qx後,你對文本的所有編輯動作將會被記錄下來,再次輸入q即退出了記錄模式,然後輸入@x對剛纔記錄下來的命令進行重複,此命令後可跟數字,表示要重複多少次,比如@x20,可以重複20次。這個在文本的批處理中是非常有用的。

同時編輯多個文件

在vim衆多的插件中,有一個叫minibuffer的插件,就是下面所說的標籤頁功能了,可以支持同時編輯多個文件。

標籤命令:tabe fn在一個新的標籤頁中編輯文件fn
gt切換到下一個標籤頁
gT切換到上一個標籤頁
:tabr切換到第一個標籤頁
:tabl切換到最後一個標籤頁
:tabm [N]把當前tab移動到第N個tab之後

對,正如你所想象的那樣,跟eclipse, ue等的標籤頁是一個意思!

窗口命令
ctrl+w s水平分割窗口
ctrl+w w切換窗口
ctrl+w q退出當前窗口(由於同時有多個文件,此命令不會影響其他窗口)
ctrl+w v垂直分割窗口其他

vim在保存之前不會對文件做實際的修改,只是加載到緩衝區中,對文件的編輯其實是對緩衝區的編輯,直到:w時纔會存入物理文件。

:e file把file加載到新的緩衝區中
:bn跳轉到下一個緩衝區
:bd刪除緩衝區(關閉文件)
:sp fn分割窗口,並將fn加載到新的窗口中
退出編輯器
:w將緩衝區寫入文件,即保存修改
:wq 保存修改並退出:x保存修改並退出
:q退出,如果對緩衝區進行過修改,則會提示
:q!強制退出,放棄修改
查找替換
/pattern 向後搜索字符串pattern
?pattern 向前搜索字符串patternn下一個匹配(如果是/搜索,則是向下的下一個,?搜索則是向上的下一個)N上一個匹配(同上)
:%s/old/new/g搜索整個文件,將所有的old替換爲new
:%s/old/new/gc 搜索整個文件,將所有的old替換爲new,每次都要你確認是否替換
複製粘貼
dd刪除光標所在行
dw 刪除一個字(word)
x刪除當前字符
X刪除前一個字符
D刪除到行末
yy複製一行,此命令前可跟數字,標識複製多行,如6yy,表示從當前行開始複製6行
yw複製一個字
y$複製到行末
p粘貼粘貼板的內容到當前行的下面
P粘貼粘貼板的內容到當前行的上面
]p有縮進的粘貼,vim會自動調節代碼的縮進"a將內容放入/存入a寄存器,可以支持多粘貼板

附:比如常用的一個寄存器就是系統寄存器,名稱爲+,所以從系統粘貼板粘貼到vim中的命令爲"+p,注意此處的+不表示操作符,二十一個寄存器。

移動光標

在vim中移動光標跟其他的編輯器中有很大的區別,不過一旦學會了,就會飛速的在文本中移動了。

h,j,k,l上,下,左,右
ctrl-f上翻一頁
ctrl-b下翻一頁
%跳到與當前括號匹配的括號處,如當前在{,則跳轉到與之匹配的}處
w跳到下一個字首,按標點或單詞分割
W跳到下一個字首,長跳,如end-of-line被認爲是一個字
e跳到下一個字尾
E跳到下一個字尾,長跳
b跳到上一個字
B跳到上一個字,長跳
0跳至行首,不管有無縮進,就是跳到第0個字符
^跳至行首的第一個字符$跳至行尾gg跳至文件的第一行
gd跳至當前光標所在的變量的聲明處
[N]G跳到第N行,如0G,就等價於gg,100G就是第100行
fx在當前行中找x字符,找到了就跳轉至
;重複上一個f命令,而不用重複的輸入fx
tx與fx類似,但是隻是跳轉到x的前一個字符處Fx跟fx的方向相反
),(跳轉到上/下一個語句
*查找光標所在處的單詞,向下查找
#查找光標所在處的單詞,向上查找
`.跳轉至上次編輯位置
在屏幕上移動
H移動光標到當前屏幕上最上邊的一行
M移動光標到當前屏幕上中間的一行
L移動光標到當前屏幕上最下邊的一行
書籤
ma把當前位置存成標籤a`a跳轉到標籤a處
編輯
r替換一個字符
J將下一行和當前行連接爲一行
cc刪除當前行並進入編輯模式
cw刪除當前字,並進入編輯模式
c$擦除從當前位置至行末的內容,並進入編輯模式
s刪除當前字符並進入編輯模式
S刪除光標所在行並進入編輯模式
xp交換當前字符和下一個字符
u撤銷
ctrl+r重做
.重複上一個編輯命令
~切換大小寫,當前字符
g~iw切換當前字的大小寫
gUiw將當前字變成大寫
guiw將當前字變成小寫
>>將當前行右移一個單位
<<將當前行左移一個單位(一個tab符
)==自動縮進當前行
插入模式
i從當前光標處進入插入模式I進入插入模式,並置光標於行首
a追加模式,置光標於當前光標之後
A追加模式,置光標於行末
o在當前行之下新加一行,並進入插入模式
O在當前行之上新加一行,並進入插入模式Esc退出插入模式
可視模式標記文本
v進入可視模式,單字符模式
V進入可視模式,行模式
ctrl+v進入可視模式,列模式,類似於UE的列模式
o跳轉光標到選中塊的另一個端點
U將選中塊中的內容轉成大寫
O跳轉光標到塊的另一個端點
aw選中一個字
ab選中括號中的所有內容,包括括號本身
aB選中{}括號中的所有內容
ib選中括號中的內容,不含括號
iB選中{}中的內容,不含{}
對標記進行動作
>塊右移
<塊左移
y複製塊
d刪除塊
~切換塊中內容的大小寫

好了,這張簡表就說到這裏,當然它涵蓋的範圍有限,但是正如片頭說的那樣,vim的強大之處在於這些命令可以組合起來使用,那樣才能體現出其強大的編輯功能。我在網上找到的這個文檔也順便貼出來,大家可以同時參考。如果有機會,我儘量找些例子來說明這些命令在實際中的用法,那樣纔可以更好的使用它,提高我們的工作效率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章