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

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
自動補齊檔名

107 thoughts on “給程式設計師的Vim入門圖解說明

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

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

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

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

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

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

    • 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

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

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

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

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

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

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

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

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

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

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

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

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

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

        非常感謝您!

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

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

  9. Pingback: Azone’s Blog » 给程序员的Vim入门图解说明

  10. Pingback: pangpig的记录集 » Blog Archive

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

  12. Pingback: roga's blog » 我目前使用的 .vimrc 設定檔

  13. 有三個我常用的command是

    自動內縮
    set autoindent

    用空格取代tab
    set expandtab

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

  14. Pingback: 常用Vim操作命令集合 - 不名一格

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

  16. Pingback: 转 : 2010 Ruby on Rails 書單 與 練習作業 – Refactoring Thoughts

  17. 學長你好,我是一中的學弟。
    我想請問一下用vim處理數百行以上的程式時,有沒有什麼技巧呢?
    因為我總覺得程式稍微長一點,vim就變得比較難操作…
    例如雖然我可以用d3d刪除三行,可是如果我要刪除25行這麼多,還得去數/去算到底是多少行…
    行還有行號可以看,如果要操作的是字元就頭昏眼花了@@
    我也試著按v把要操作的部份選起來,但是用鍵盤來選取也不太方便…
    另外vim的折疊功能我也不太會操作,到底要怎麼指定他把一整段{}或()內的折起來呢?

    對了,其實這篇回應的重點是,學長你今年暑假可以回來開鍋嗎XDD
    (我是現任電研社長~)

  18. Pingback: Next Step...

  19. Pingback: Vim 小抄 與 入門投影片 | TechNow 當代科技

  20. 我是因為要學vim才搭上你的部落格的喔,
    果然vim都是高手在用的編輯器,希望我現在學還不算太晚。但
    就算有點晚,至少還是給我遇到了.

  21. Pingback: VIM教程与学习资料汇总(2010-02-19更新) | 善用佳软

  22. Pingback: 转 : 2010 Ruby on Rails 書單 與 練習作業 | Refactoring Thoughts

  23. Pingback: VIM教程与学习资料汇总 | 追随我心

  24. Pingback: links for 2010-11-03 | Midashuang's Blog

  25. Pingback: Vim 命令图解  | Linux爱好者

  26. Pingback: 常用Vim操作命令集合 | 成都网站建设

  27. Pingback: 学习VIM(教程汇总) | AABC博客

  28. Pingback: VIM教程与学习资料汇总-web调色板|学习web知识,调出精彩web人生

  29. Pingback: VIM教程与学习资料汇总 | Goto-Linux

  30. Pingback: 分享我的vim設定檔 | vgod's blog

  31. Pingback: Vim 相關網頁資訊 | Input and Output

  32. Pingback: links for 2011-04-07 at iLenceel

  33. Pingback: 心博 » VIM教程与学习资料汇总[转自:善用佳软]

  34. Pingback: 相信Vim新手会喜欢的![Ubuntu文档编辑] | UbuntuSoft

  35. Pingback: Vim操作图示 | 在路上[On Road,Walk Hard!]

  36. Pingback: Blog.XDite.net » 2010 Ruby on Rails 書單 與 練習作業

  37. Pingback: 常用Vim操作命令集合 | I'M YIN

  38. Pingback: 我的vim環境設定 | Jui-Chi Ricky Liang's Blog

  39. Pingback: [转] Vim入门图解说明.

  40. Pingback: Felicia (feliciafay) | Pearltrees

  41. Pingback: 我喜欢的和经常使用的vim快捷键 | 锦上添花

  42. Pingback: vim

  43. 以前看到老外做的一个excel表格,把基本命令列出来了,当时觉得已经很好用了,现在看来能把命令图示化会更加好用,楼主开了先河啊。

  44. Pingback: VIM教程与学习资料汇总 — By 善用佳软 | Hello, Linux!

  45. Pingback: Vim 基本控制 | 海上漂流木

  46. Pingback: vim 學習筆記 | 阿喵就像家

  47. hi,我fork了你在github上的vim配置,但是发现 redo 这个操作 命令不好用啊,vim自己带的是 点(.)这个操作 我还不清楚怎么修改呢

  48. Pingback: [转] Vim入门图解说明. | chenall's blog

  49. Pingback: ultimate demon

  50. Pingback: rankbuilder neo

  51. Pingback: Vim 入门图解说明 | 软件工坊

  52. Pingback: Crossfire

  53. Pingback: Get your free CrossFire Eu Hack 2012 and kill everything in your way on CrossFire Eu.We have just released the latest Crossfire EU Hack whit fully featured list of hacks.

  54. Pingback: VIM 基礎 | theWorld

  55. Pingback: GIT&VIM常用命令 | SKET DAN

  56. Pingback: storming of the bastille prison

  57. Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!(转) | 前端学习

  58. Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! – 哥太假博客

  59. Pingback: Vim相关资料大全 | 天天三国杀

  60. Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!(转) | 前端学习笔记

  61. Pingback: Vim-文本/代码编辑器之中最为优秀经典的上古神器! | 农夫庄园

  62. Pingback: GVIM使用教程大全以及配置和资料汇总 | 哥特复兴

  63. Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! | 屌丝码农

  64. Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! - 7科技

  65. Pingback: Vim 学习 | 果壳中的宇宙

  66. Pingback: 跟我一起学习VIM – The Life Changing Editor - IT牛人博客聚合

  67. Pingback: vim | afarliu的技术生涯

  68. Pingback: VIM 学习笔记

  69. Pingback: Vim | Paradise2

  70. Pingback: [工具使用]Vim的使用 | John Wan's Blog

  71. Pingback: vi 快速鍵 – 馬丁的筆記

  72. Pingback: vim从入门到精通 – 马克徐的技术博客Mark Xu

  73. Pingback: Vim - 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! - 征服者785号征服者785号

  74. Pingback: 跟我一起学习VIM – The Life Changing Editor – mack

  75. Pingback: 使用Vundle管理配置Vim的插件 | Codeba

  76. Pingback: VIM北冥神功之插件管理 – 不知道该起个什么名字

  77. Pingback: VIM 小抄 – Wayne's Garden

Leave a Reply

Your email address will not be published. Required fields are marked *

*