給程式設計師的Vim入門圖解說明

December 8th, 2009 by vgod | 瀏覽:28,297人次

12-09 Update: The English version of Vim Visual Cheat Sheet is also available. PNG, PDF)

(更新: 在圖內加入基本指令表和說明以及PDF版,方便大家列印出來貼在牆上隨時查看。)

剛在寫那篇關於vi和文字編輯器的文章時,本來想附上一個vim的超簡單入門連結,但找了一下都沒有很滿意的,所以決定自己動手先來畫個入門用的說明圖。

vim-cheat-sheet-full
PDF版下載

vim-cheat-sheet-diagram

這個圖把vim中基本的移動方法都畫上去了,為了方便programmer,特別列出了很多只有寫程式才會用的按鍵。除了這些以外,其實還有一些好用的東西我還沒想到怎麼畫上去比較好(像是tags、沒有標準快速鍵的tab、man..),如果大家有idea歡迎提供。

這些圖示依照移動的單位大小分為以下幾個種類,分別用不同顏色標示:
(注意,這不是完整的vim快速鍵列表,只是我覺得比較常用的鍵而已。)

字元(character)
h
j
k
l
單字(word)
w
下一個word
W
下一個word(跳過標點符號)
b
前一個word
e
跳到目前word的尾端
行(line)
0
跳到目前行的開頭
^
跳到目前行第一個非空白字元
$
跳到行尾
段落(paragraph)、區塊(block)
{
上一段(以空白行分隔)
}
下一段(以空白行分隔)
[{
跳到目前區塊開頭
]}
跳到目前區塊結尾
%
跳到目前對應的括號上(適用各種括號,有設定好的話連HTML tag都能跳)
螢幕(screen)、絕對位置
H
螢幕頂端
M
螢幕中間
L
螢幕底部
:x
xG
跳到第x行(x是行號)
搜尋(search)
/xxxx
搜尋xxxx
#
往前搜尋目前游標所在的字(word)
*
往後搜尋目前游標所在的字(word)
fx
在目前行往後搜尋字元x
gd
跳到目前游標所在的字(word)的定義位置(寫程式用, 跳到定義變數/函式的地方)
分割視窗
:split
分割視窗(可加檔名順便開啟另一檔案)
:diffsplit xxx
以分割視窗和檔案xxx做比較(diff)
Ctrl-W p
跳到前一個分割視窗(在兩個分割窗來回切換)
Ctrl-W j
跳到下面的分割窗
Ctrl-W h
跳到左邊的分割窗
Ctrl-W k
跳到上面的分割窗
Ctrl-W l
跳到右邊的分割窗
自動補齊(Auto-completion) (在Insert Mode中使用)
Ctrl-N
自動補齊檔案內的下一個可能字(word)
Ctrl-P
自動補齊檔案內的上一個可能字(word)
Ctrl-X Ctrl-F
自動補齊檔名

39 Responses to “給程式設計師的Vim入門圖解說明”

  1. MyAvatars 0.2 Tweets that mention 給程式設計師的Vim入門圖解說明 | vgod’s blog -- Topsy.com Says:

    [...] This post was mentioned on Twitter by Tsung-Hsiang Chang, MacTalks. MacTalks said: 給程式設計師的Vim入門圖解說明 http://ff.im/-cyVEG [...]

  2. MyAvatars 0.2 walkingice Says:

    因為使用寬螢幕的關係,分割視窗個人偏好使用 :vsp (vertical split)

    - 回覆留言(Reply)

    Cornelius Reply:

    C-w v 就可以少打兩個字元了 :-) )

    - 回覆留言(Reply)

  3. MyAvatars 0.2 vincicat Says:

    呃….其實vim最應該強調的是最基本的操作,因為和一般的editor差太大 (不論GUI還是console的)

    一般模式
    esc (切入/離開命令模式, save/quit都要在命令模式做…)
    i (進入輸入模式[Insert mode],不然沒法打字…)

    命令模式
    :w (save)
    :q (end program)
    :u (undo)

    Find, replace, copy & paste都有特殊按鍵…方法有幾個,不詳述了

    - 回覆留言(Reply)

    vgod Reply:

    這張圖以游標移動為主,基本操作應該要另外畫一張圖了 :p

    - 回覆留言(Reply)

    vgod Reply:

    我後來把基本命令也加到圖中了, 感謝你的意見 :P

    - 回覆留言(Reply)

  4. MyAvatars 0.2 zxjllyyin Says:

    请问vgod,用的是什么绘图工具,这张图表做的很好看.

    - 回覆留言(Reply)

    vgod Reply:

    我用Mac上的OmniGraffle畫的。

    - 回覆留言(Reply)

  5. MyAvatars 0.2 Gocrazy Says:

    可不可以順便請版主介紹一下 常用的vim plug-in
    例如寫java時常用的
    Mac上Eclipse好慢阿~

    - 回覆留言(Reply)

    Cornelius Reply:

    java 的 plugin 很多
    像是

    javabrowser – Shows java file class, package in a tree as in IDEs. Java source browser.

    editjava – lookup source file for classname under cursor

    java-apidoc.vim – Java API documentation viewer (JavaDoc)

    javacomplete – Omni Completion for JAVA

    - 回覆留言(Reply)

  6. MyAvatars 0.2 $4 Says:

    Cool Stuff~ :D
    BTW, c9s 有弄一個 vim-taiwan 的討論區有興趣的朋友可以來交流 :)
    http://groups.google.com/group/vim-taiwan

    - 回覆留言(Reply)

  7. MyAvatars 0.2 vim rocks Says:

    漏掉 gg=G 阿阿阿阿阿

    - 回覆留言(Reply)

    vgod Reply:

    剛又更新了一次,把gg和G加進去了。
    其實我也蠻想放=的,但似乎沒地方塞了orz..

    - 回覆留言(Reply)

  8. MyAvatars 0.2 dryman Says:

    將編刪指令加上動作,如d3w就是刪除三個字
    使用者可以隨意組合~

    補充:ctrl-w H/J/K/L會將目前的視窗弄到最左/下/上/右
    而且會盡量變成最大化,這個功能也蠻好用的

    ctrl-W o 將目前視窗唯一化
    ctrl-w ctrl-w跳到下一個視窗

    - 回覆留言(Reply)

    vgod Reply:

    好用指令真是太多了 要塞在小小的表中真是困難呀orz..

    - 回覆留言(Reply)

  9. MyAvatars 0.2 dryman Says:

    有個command我覺得最重要
    就是用ctrl-[ 來取代esc,這樣手指就不用離開鍵盤中央
    我覺得這樣對於使用normal mode的意願會增加
    而不是在insert mode慢慢地移動上下左右鍵

    - 回覆留言(Reply)

    vgod Reply:

    的確, 我把這個鍵也加到圖上了:)

    - 回覆留言(Reply)

  10. MyAvatars 0.2 Charlie Brown Says:

    您好!我想學習 使用vi編輯器,來撰寫程式~
    我以前都是使用IDE開發平台,像是Visual Studio, XCode,以及其他的Ultraedit等等

    很久以前就聽說vi很好用~但是,一直沒有機會可以踏入
    想了解一下,大家都用vi開發什麼類型的程式呢?如“視窗程式(任何平台)“ “手機程式(任何平台)“ “網頁(這個我有看過)“

    在IDE有許多東西都會幫你準備好,所以如果我換vi的話,我是否都要將IDE準備好的東西,寫成template等等之類的

    不好意思,問題有點亂!感謝大家@@“

    - 回覆留言(Reply)

    vgod Reply:

    我用vim寫*所有*的程式。

    我不確定你說的IDE幫你準備好的東西包括什麼,如果只是一些code template,那的確就自己先寫一份就行了。比較難轉換的是compile, deploy這種事,通常還要順便學個make、ant之類的工具才行。當然不想研究這些的話,也可以呼叫原本IDE的command指令來做這些事,或是乾脆用IDE裡面的vi plugin。但我個人推薦自己寫makefile就是了,這樣可以順便了解IDE底下到底做了什麼事,如果有特殊需求也方便自己動手做而不用在IDE裡找設定找半天。

    - 回覆留言(Reply)

    Charlie Brown Reply:

    恩!我了解了!我也來踏入vi的領域!
    基本上,我也想了解ㄧ下哪個方向是比較好的,像是您說

    “自己寫makefile就是了,這樣可以順便了解IDE底下到底做了什麼事,如果有特殊需求也方便自己動手做而不用在IDE裡找設定找半天“

    表示從這個方像去學習可以了解更多的東西是不錯的

    非常感謝您!

    - 回覆留言(Reply)

  11. MyAvatars 0.2 dryman Says:

    基本上各種程式都可以開發啊XD
    最近在籌劃在Ptt開一個Editor版,主要用來討論vim和emacs
    歡迎前來捧場:)

    - 回覆留言(Reply)

    vgod Reply:

    期待開板:)

    - 回覆留言(Reply)

    Charlie Brown Reply:

    我會常過去的!
    謝謝您!

    - 回覆留言(Reply)

    dryman Reply:

    結果連署完成兩個禮拜了Editor版都還沒開成… so sad
    目前只能等了(已寄信催了,卻沒有回覆)
    如果開好了還望大家多多捧場 :)

    - 回覆留言(Reply)

  12. MyAvatars 0.2 PowerOp Says:

    這應該要來個英文版的!

    - 回覆留言(Reply)

    vgod Reply:

    其實已經做了:p

    - 回覆留言(Reply)

  13. MyAvatars 0.2 [UNIX] Vim 命令圖解說明 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY Says:

    [...] Windows 或者是 UNIX 系統上面非常強大的編輯器,在 vgod’s blog 看到一篇:『給程式設計師的Vim入門圖解說明』,原作者提供了 pdf 以及 png [...]

  14. MyAvatars 0.2 早起 Says:

    很棒的教程~~

    - 回覆留言(Reply)

  15. MyAvatars 0.2 Azone’s Blog » 给程序员的Vim入门图解说明 Says:

    [...] 文章来源:http://blog.vgod.tw/2009/12/08/vim-cheat-sheet-for-programmers/ 发表评论 | Trackback 目前还没有任何评论. [...]

  16. MyAvatars 0.2 bolo Says:

    很有用,谢谢分享了

    - 回覆留言(Reply)

  17. MyAvatars 0.2 邱焜 Says:

    是个好东西,现bookmark了

    - 回覆留言(Reply)

  18. MyAvatars 0.2 pangpig的记录集 » Blog Archive Says:

    [...] 命令图解包括中文和英文版,并提供 PNG 及 PDF 格式,可从 vgod’s blog 下载。 This entry was posted on , 2009年12月25日 at 12:55 上午 and is filed under Linux. [...]

  19. MyAvatars 0.2 yehchge Says:

    你好,看到你這篇文章後,讓我開始想要學習Vim, 所以我就到網站上
    下載了Vim 7.2 for windowsXp的版本回來,再學習的過程中, 使用
    Ctags和TagList的套件時,發現如果文件在有中文的路徑下使用TagList
    會發生個錯誤:
    Taglist: Failed to generate tags for C:\Documents and Settings\yehchge\桌面\test.php
    ………. 的錯誤, 上網 Google了好久,好像都沒有解決的方法,
    好像在解析中文路徑的時候,會出現這樣的問題,不知是否有解決的方法?? 謝謝!

    - 回覆留言(Reply)

  20. MyAvatars 0.2 roga's blog » 我目前使用的 .vimrc 設定檔 Says:

    [...] vim – 很多進階的用法,作者對 vim 非常熟稔,也寫了很多很棒的文章。 給程式設計師的Vim入門圖解說明 – 這陣子推薦非常多人看。 vi / vim 圖解鍵盤指令 – [...]

  21. MyAvatars 0.2 glynn Says:

    有三個我常用的command是

    自動內縮
    set autoindent

    用空格取代tab
    set expandtab

    和滑鼠整合(可是在mac下沒辦法和touchpad整合…)
    set mouse=a

    - 回覆留言(Reply)

  22. MyAvatars 0.2 shalock Says:

    o 在游標下方插入一空白行並進入insert mode

    這個也蠻好用的

    - 回覆留言(Reply)

  23. MyAvatars 0.2 常用Vim操作命令集合 - 不名一格 Says:

    [...] Vim常用操作命令-1-移动:h/j/k/l: 左/下/上/右 移一格w : 向后词移动 (前面加数字移动多少个词)b : 向前词移动 (前面加数字移动多少个词)e : 向后移到词末ge : 向前移到词末$ : 行末0 : 行首tx : 向右查找本行的x并移到那儿(大写时向左)33G : 移到文件的第33行 *G = shift+ggg : 文件首行G : 文件尾行33% : 文件的33%处H/M/L : 屏幕的首/中/尾行zt/zz/zb : 当前行移到屏幕的首/中/底部-2-跳转:” : 回到跳转来的地方CTRL-O : 跳到一个 “较老” 的地方CTRL-I : 则跳到一个 “较新” 的地方-3-查找:/ : 向下查找(后加关键字)? : 向上查找(后加关键字)n : 下一条符合的记录-4-编辑:i : 转换到插入模式x : 删除当前字符. : 重复最后一次的修改操作(同PS里ctrl+f执行滤镜)u : 撤销操作CTRL-R : 重做p : 将删除的字符插入到当前位置(put)-5-保持退出操作::q : 退出:q! : 不保存退出ZZ : 保存后退出:e! : 放弃修改重新编辑Vim命令壁纸两张适合于初学者的VIM命令图解:原文:给程式设计师的Vim入门图解说明下面这张壁纸也是不错的东东: [...]

  24. MyAvatars 0.2 andy Says:

    請問一下,vim有自動生成程式碼的功能嗎?因為目前寫一些類別其部分程式碼都是固定的,但卻不知道如何著手…..

    - 回覆留言(Reply)

  25. MyAvatars 0.2 est Says:

    This is coo; :D

    - 回覆留言(Reply)

Leave a Reply