[轉]Vim常用90%的命令

本文章轉載來自[Vim簡明教程]http://blog.csdn.net/niushuai666/article/details/7275406
后來又找到該文章一開始的出處[簡明Vim練級攻略]http://coolshell.cn/articles/5426.html
另附[游戲:VIM大冒險]http://coolshell.cn/articles/7166.html

第一級 – 存活

安裝 vim
啟動 vim
什么也別干辐宾!請先閱讀

當你安裝好一個編輯器后震肮,你一定會想在其中輸入點什么東西货葬,然后看看這個編輯器是什么樣子灿巧。但vim不是這樣的,請按照下面的命令操作:
啟 動Vim后,vim在 Normal 模式下丈探。
讓我們進入 Insert 模式,請按下鍵 i 拔莱。(陳皓注:你會看到vim左下角有一個–insert–字樣碗降,表示隘竭,你可以以插入的方式輸入了)
此時,你可以輸入文本了讼渊,就像你用“記事本”一樣动看。
如果你想返回 Normal 模式,請按 ESC
鍵爪幻。

現在菱皆,你知道如何在 InsertNormal 模式下切換了。下面是一些命令挨稿,可以讓你在 Normal 模式下幸存下來:

i→ Insert 模式仇轻,按 ESC回到 Normal 模式.
x→ 刪當前光標所在的一個字符。
:wq→ 存盤 + 退出 (:w 存盤, :q 退出) (陳皓注::w 后可以跟文件名)
dd → 刪除當前行奶甘,并把刪除的行存到剪貼板里
p → 粘貼剪貼板
推薦:
hjkl(強例推薦使用其移動光標篷店,但不必需) →你也可以使用光標鍵 (←↓↑→). 注: j就像下箭頭。
:help <command> → 顯示相關命令的幫助臭家。你也可以就輸入 :help
而不跟命令疲陕。(陳皓注:退出幫助需要輸入:q)

你能在vim幸存下來只需要上述的那5個命令,你就可以編輯文本了侣监,你一定要把這些命令練成一種下意識的狀態(tài)。于是你就可以開始進階到第二級了臣淤。
當是橄霉,在你進入第二級時,需要再說一下 Normal 模式邑蒋。在一般的編輯器下姓蜂,當你需要copy一段文字的時候,你需要使用 Ctrl
鍵医吊,比如:Ctrl-C
钱慢。也就是說,Ctrl鍵就好像功能鍵一樣卿堂,當你按下了功能鍵Ctrl后束莫,C就不在是C了,而且就是一個命令或是一個快鍵鍵了草描,
在VIM的Normal模式下览绿,所有的鍵就是功能鍵了**。這個你需要知道穗慕。
標記:

  • 下面的文字中饿敲,如果是 Ctrl-λ
  • 我會寫成 <C-λ>.以 : 開始的命令你需要輸入 <enter>回車,例如 — 如果我寫成 :q 也就是說你要輸入 :q<enter>.

第二級 – 感覺良好

上面的那些命令只能讓你存活下來逛绵,現在是時候學習一些更多的命令了怀各,下面是我的建議:(陳皓注:所有的命令都需要在Normal模式下使用倔韭,如果你不知道現在在什么樣的模式,你就狂按幾次ESC鍵)
各種插入模式

  • a → 在光標后插入
  • o→ 在當前行后插入一個新行
  • O → 在當前行前插入一個新行
  • cw → 替換從光標所在位置后到一個單詞結尾的字符

簡單的移動光標

  • 0 → 數字零瓢对,到行頭
  • ^ → 到本行第一個不是blank字符的位置(所謂blank字符就是空格寿酌,tab,換行沥曹,回車等)
  • $ → 到本行行尾
  • g_→ 到本行最后一個不是blank字符的位置份名。
  • /pattern → 搜索 pattern 的字符串(陳皓注:如果搜索出多個匹配,可按n鍵到下一個)

拷貝/粘貼
(陳皓注:p/P都可以妓美,p是表示在當前位置之后僵腺,P表示在當前位置之前)

  • P→ 粘貼
  • yy→ 拷貝當前行當行于 ddP

Undo/Redo

  • u → undo
  • <C-r> → redo

打開/保存/退出/改變文件(Buffer)

  • :e <path/to/file> → 打開一個文件
  • :w → 存盤
  • :saveas <path/to/file> → 另存為 <path/to/file>
  • :x, ZZ 或 :wq → 保存并退出 (:x 表示僅在需要時保存壶栋,ZZ不需要輸入冒號并回車)
  • :q! → 退出不保存 :qa! 強行退出所有的正在編輯的文件辰如,就算別的文件有更改。
  • :bn 和 :bp → 你可以同時打開很多文件贵试,使用這兩個命令來切換下一個或上一個文件琉兜。(陳皓注:我喜歡使用:n到下一個文件)

花點時間熟悉一下上面的命令,一旦你掌握他們了毙玻,你就幾乎可以干其它編輯器都能干的事了豌蟋。但是到現在為止,你還是覺得使用vim還是有點笨拙桑滩,不過沒關系梧疲,你可以進階到第三級了。

第三級 – 更好运准,更強幌氮,更快

先恭喜你!你干的很不錯胁澳。我們可以開始一些更為有趣的事了该互。在第三級,我們只談那些和vi可以兼容的命令韭畸。
更好
下面宇智,讓我們看一下vim是怎么重復自己的:
.→ (小數點) 可以重復上一次的命令
N<command> → 重復某個命令N次
下面是一個示例,找開一個文件你可以試試下面的命令:

  • 2dd→ 刪除2行
  • 3p → 粘貼文本3次
  • 100idesu [ESC]
    → 會寫下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu “
  • .→ 重復上一個命令—— 100 “desu “
  • .3. → 重復 3 次 “desu” (注意:不是 300胰丁,你看普筹,VIM多聰明啊).

更強
你要讓你的光標移動更有效率,你一定要了解下面的這些命令隘马,千萬別跳過太防。

  1. NG→ 到第 N 行 (陳皓注:注意命令中的G是大寫的,另我一般使用 : N 到第N行,如 :137 到第137行)
  1. gg → 到第一行蜒车。(陳皓注:相當于1G讳嘱,或 :1)
  2. G → 到最后一行。
  3. 按單詞移動:
  1. w → 到下一個單詞的開頭酿愧。
  2. e → 到下一個單詞的結尾沥潭。
    >如果你認為單詞是由默認方式,那么就用小寫的e和w嬉挡。默認上來說钝鸽,一個單詞由字母,數字和下劃線組成(陳皓注:程序變量)
    >如果你認為單詞是由blank字符分隔符庞钢,那么你需要使用大寫的E和W拔恰。(陳皓注:程序語句)


    Word moves example

下面,讓我來說說最強的光標移動:

% : 匹配括號移動基括,包括 (, {, [. (陳皓注:你需要把光標先移到括號上)

  • 和 #: 匹配光標當前所在的單詞颜懊,移動光標到下一個(或上一個)匹配單詞(*是下一個,#是上一個)

相信我风皿,上面這三個命令對程序員來說是相當強大的河爹。
更快
你一定要記住光標的移動,因為很多命令都可以和這些移動光標的命令連動桐款。很多命令都可以如下來干:
<start position><command><end position>

例如 0y$

命令意味著:

  • 0 → 先到行頭
  • y → 從這里開始拷貝
  • $ → 拷貝到本行最后一個字符

你可可以輸入 ye咸这,從當前位置拷貝到本單詞的最后一個字符。
你也可以輸入 y2/foo 來拷貝2個 “foo” 之間的字符串魔眨。

還有很多時間并不一定你就一定要按y才會拷貝媳维,下面的命令也會被拷貝:

  • d (刪除 )
  • v (可視化的選擇)
  • gU (變大寫)
  • gu (變小寫)
  • 等等

(陳皓注:可視化選擇是一個很有意思的命令,你可以先按v冰沙,然后移動光標侨艾,你就會看到文本被選擇执虹,然后拓挥,你可能d,也可y袋励,也可以變大寫等)

第四級 – Vim 超能力

你只需要掌握前面的命令侥啤,你就可以很舒服的使用VIM了。但是茬故,現在盖灸,我們向你介紹的是VIM殺手級的功能。下面這些功能是我只用vim的原因磺芭。
在當前行上移動光標: 0 ^ $ f F t T , ;

  • 0 → 到行頭
  • ^ → 到本行的第一個非blank字符
  • $ → 到行尾
  • g_ → 到本行最后一個不是blank字符的位置赁炎。
  • fa → 到下一個為a的字符處,你也可以fs到下一個為s的字符钾腺。
  • t, → 到逗號前的第一個字符徙垫。逗號可以變成其它字符讥裤。
  • 3fa → 在當前行查找第三個出現的a。
  • F 和 T → 和 f 和 t 一樣姻报,只不過是相反方向己英。


    Line moves

還有一個很有用的命令是 dt"→ 刪除所有的內容,直到遇到雙引號—— "吴旋。

區(qū)域選擇 <action>a<object> 或 <action>i<object>
在visual 模式下损肛,這些命令很強大,其命令格式為
<action>a<object> 和 <action>i<object>

  • action可以是任何的命令荣瑟,如 d (刪除), y (拷貝), v (可以視模式選擇)治拿。
  • object 可能是: w 一個單詞, W 一個以空格為分隔的單詞褂傀, s 一個句字忍啤, p
    一個段落。也可以是一個特別的字符:"仙辟、 '同波、 )、 }叠国、 ]未檩。

假設你有一個字符串 (map (+) ("foo")).而光標鍵在第一個 o 的位置。

  • vi" → 會選擇 foo.
  • va" → 會選擇 "foo".
  • vi) → 會選擇 "foo".
  • va) → 會選擇("foo").
  • v2i) → 會選擇 map (+) ("foo")
  • v2a) → 會選擇 (map (+) ("foo"))


    Text objects selection

塊操作: <C-v>
塊操作粟焊,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • ^ → 到行頭
  • <C-v> → 開始塊操作
  • <C-d> → 向下移動 (你也可以使用hjkl來移動光標冤狡,或是使用%,或是別的)
  • I-- [ESC] → I是插入项棠,插入“--”悲雳,按ESC鍵來為每一行生效。


    Rectangular blocks

    在Windows下的vim香追,你需要使用 <C-q> 而不是 <C-v> 合瓢,<C-v> 是拷貝剪貼板。

自動提示: <C-n> 和 <C-p>
在 Insert 模式下透典,你可以輸入一個詞的開頭晴楔,然后按 <C-p>或是<C-n>,自動補齊功能就出現了……

Completion

宏錄制: qa 操作序列 q, @a, @@

  • qa 把你的操作記錄在寄存器 a峭咒。
  • 于是 @a 會replay被錄制的宏税弃。
  • @@ 是一個快捷鍵用來replay最新錄制的宏。

示例
在一個只有一行且這一行只有“1”的文本中凑队,鍵入如下命令:

  • qaYp<C-a>q
    →qa 開始錄制
    Yp 復制行.
    <C-a> 增加1.
    q 停止錄制.
  • @a → 在1下面寫下 2
  • @@ → 在2 正面寫下3
  • 現在做 100@@ 會創(chuàng)建新的100行则果,并把數據增加到 103.
    Macros

    可視化選擇: v,V,<C-v>
    前面,我們看到了 <C-v>的示例 (在Windows下應該是<C-q>),我們可以使用 v 和 V西壮。一但被選好了导匣,你可以做下面的事:
  • J → 把所有的行連接起來(變成一行)
  • < 或 > → 左右縮進
  • = → 自動給縮進 (陳皓注:這個功能相當強大,我太喜歡了)


    Autoindent

在所有被選擇的行后加上點東西:

  • <C-v>
  • 選中相關的行 (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
  • $ 到行最后
  • A, 輸入字符串茸时,按 ESC贡定。


    Append to many lines

分屏: :split 和 vsplit
.
下面是主要的命令,你可以使用VIM的幫助 :help split. 你可以參考本站以前的一篇文章VIM分屏可都。

  • :split → 創(chuàng)建分屏 (:vsplit創(chuàng)建垂直分屏)
  • <C-w><dir> : dir就是方向缓待,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏渠牲。
  • <C-w>_ (或 <C-w>|) : 最大化尺寸 (<C-w>| 垂直分屏)
  • <C-w>+ (或 <C-w>-) : 增加尺寸


    Split

結束語
上面是作者最常用的90%的命令旋炒。
我建議你每天都學1到2個新的命令。
在兩到三周后签杈,你會感到vim的強大的瘫镇。

有時候,學習VIM就像是在死背一些東西答姥。
幸運的是,vim有很多很不錯的工具和優(yōu)秀的文檔鹦付。
運行vimtutor直到你熟悉了那些基本命令尚粘。
其在線幫助文檔中你應該要仔細閱讀的是 :help usr_02.txt.
你會學習到諸如 !,
目錄敲长,寄存器郎嫁,插件等很多其它的功能。

學習vim就像學彈鋼琴一樣祈噪,一旦學會泽铛,受益無窮。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末辑鲤,一起剝皮案震驚了整個濱河市盔腔,隨后出現的幾起案子,更是在濱河造成了極大的恐慌遂填,老刑警劉巖铲觉,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈蝙,死亡現場離奇詭異吓坚,居然都是意外死亡,警方通過查閱死者的電腦和手機灯荧,發(fā)現死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門礁击,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事哆窿×戳遥” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵挚躯,是天一觀的道長强衡。 經常有香客問我,道長码荔,這世上最難降的妖魔是什么漩勤? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮缩搅,結果婚禮上越败,老公的妹妹穿的比我還像新娘。我一直安慰自己硼瓣,他們只是感情好究飞,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著堂鲤,像睡著了一般亿傅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘟栖,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天袱蜡,我揣著相機與錄音,去河邊找鬼慢宗。 笑死坪蚁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的镜沽。 我是一名探鬼主播敏晤,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缅茉!你這毒婦竟也來了嘴脾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蔬墩,失蹤者是張志新(化名)和其女友劉穎译打,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體拇颅,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡奏司,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了樟插。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韵洋。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡竿刁,死狀恐怖,靈堂內的尸體忽然破棺而出搪缨,到底是詐尸還是另有隱情食拜,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布副编,位于F島的核電站负甸,受9級特大地震影響,放射性物質發(fā)生泄漏痹届。R本人自食惡果不足惜惑惶,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望短纵。 院中可真熱鬧带污,春花似錦、人聲如沸香到。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悠就。三九已至千绪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梗脾,已是汗流浹背荸型。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留炸茧,地道東北人瑞妇。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像梭冠,于是被迫代替她去往敵國和親辕狰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容

  • 1. vim 選擇文本控漠,刪除蔓倍,復制,粘貼 文本的選擇盐捷,對于編輯器來說偶翅,是很基本的東西,也經常被用到碉渡,總結如下:v ...
    路癡千行閱讀 3,284評論 0 0
  • 命令歷史 以:和/開頭的命令都有歷史紀錄聚谁,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟動vim 在命令...
    im螞蟻閱讀 30,747評論 3 48
  • 目錄(?)[-] 關于Vim 1 Vim的幾種模式 啟動Vim 文檔操作 光標的移動 1 基本移動 2 翻屏 3 ...
    SunnyLeong閱讀 8,658評論 0 32
  • vim 選擇文本爆价,刪除垦巴,復制,粘貼 文本的選擇铭段,對于編輯器來說骤宣,是很基本的東西,也經常被用到序愚,總結如下: v 從...
    壹首簡單的歌閱讀 881評論 0 7
  • 一憔披、Objective-C Objective-C為C語言添加了面向對象特性,是其超集爸吮。Objective-C使用...
    dreamymood閱讀 452評論 1 2