12-09 Update: The English version of Vim Visual Cheat Sheet is also available. PNG, PDF)
(更新: 在圖內加入基本指令表和說明以及PDF版,方便大家列印出來貼在牆上隨時查看。)
剛在寫那篇關於vi和文字編輯器的文章時,本來想附上一個vim的超簡單入門連結,但找了一下都沒有很滿意的,所以決定自己動手先來畫個入門用的說明圖。
這個圖把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
|
自動補齊檔名 |
Pingback: Tweets that mention 給程式設計師的Vim入門圖解說明 | vgod’s blog -- Topsy.com
因為使用寬螢幕的關係,分割視窗個人偏好使用 :vsp (vertical split)
C-w v 就可以少打兩個字元了 :-))
呃….其實vim最應該強調的是最基本的操作,因為和一般的editor差太大 (不論GUI還是console的)
一般模式
esc (切入/離開命令模式, save/quit都要在命令模式做…)
i (進入輸入模式[Insert mode],不然沒法打字…)
命令模式
:w (save)
:q (end program)
:u (undo)
Find, replace, copy & paste都有特殊按鍵…方法有幾個,不詳述了
這張圖以游標移動為主,基本操作應該要另外畫一張圖了 :p
我後來把基本命令也加到圖中了, 感謝你的意見 😛
请问vgod,用的是什么绘图工具,这张图表做的很好看.
我用Mac上的OmniGraffle畫的。
可不可以順便請版主介紹一下 常用的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
Cool Stuff~ 😀
BTW, c9s 有弄一個 vim-taiwan 的討論區有興趣的朋友可以來交流 🙂
http://groups.google.com/group/vim-taiwan
漏掉 gg=G 阿阿阿阿阿
剛又更新了一次,把gg和G加進去了。
其實我也蠻想放=的,但似乎沒地方塞了orz..
將編刪指令加上動作,如d3w就是刪除三個字
使用者可以隨意組合~
補充:ctrl-w H/J/K/L會將目前的視窗弄到最左/下/上/右
而且會盡量變成最大化,這個功能也蠻好用的
ctrl-W o 將目前視窗唯一化
ctrl-w ctrl-w跳到下一個視窗
好用指令真是太多了 要塞在小小的表中真是困難呀orz..
有個command我覺得最重要
就是用ctrl-[ 來取代esc,這樣手指就不用離開鍵盤中央
我覺得這樣對於使用normal mode的意願會增加
而不是在insert mode慢慢地移動上下左右鍵
的確, 我把這個鍵也加到圖上了:)
您好!我想學習 使用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裡找設定找半天“
表示從這個方像去學習可以了解更多的東西是不錯的
非常感謝您!
基本上各種程式都可以開發啊XD
最近在籌劃在Ptt開一個Editor版,主要用來討論vim和emacs
歡迎前來捧場:)
期待開板:)
我會常過去的!
謝謝您!
結果連署完成兩個禮拜了Editor版都還沒開成… so sad
目前只能等了(已寄信催了,卻沒有回覆)
如果開好了還望大家多多捧場 🙂
這應該要來個英文版的!
其實已經做了:p
Pingback: [UNIX] Vim 命令圖解說明 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY
很棒的教程~~
Pingback: Azone’s Blog » 给程序员的Vim入门图解说明
很有用,谢谢分享了
是个好东西,现bookmark了
Pingback: pangpig的记录集 » Blog Archive
你好,看到你這篇文章後,讓我開始想要學習Vim, 所以我就到網站上
下載了Vim 7.2 for windowsXp的版本回來,再學習的過程中, 使用
Ctags和TagList的套件時,發現如果文件在有中文的路徑下使用TagList
會發生個錯誤:
Taglist: Failed to generate tags for C:Documents and Settingsyehchge桌面test.php
………. 的錯誤, 上網 Google了好久,好像都沒有解決的方法,
好像在解析中文路徑的時候,會出現這樣的問題,不知是否有解決的方法?? 謝謝!
Pingback: roga's blog » 我目前使用的 .vimrc 設定檔
有三個我常用的command是
自動內縮
set autoindent
用空格取代tab
set expandtab
和滑鼠整合(可是在mac下沒辦法和touchpad整合…)
set mouse=a
o 在游標下方插入一空白行並進入insert mode
這個也蠻好用的
Pingback: 常用Vim操作命令集合 - 不名一格
請問一下,vim有自動生成程式碼的功能嗎?因為目前寫一些類別其部分程式碼都是固定的,但卻不知道如何著手…..
This is coo; 😀
Pingback: 转 : 2010 Ruby on Rails 書單 與 練習作業 – Refactoring Thoughts
學長你好,我是一中的學弟。
我想請問一下用vim處理數百行以上的程式時,有沒有什麼技巧呢?
因為我總覺得程式稍微長一點,vim就變得比較難操作…
例如雖然我可以用d3d刪除三行,可是如果我要刪除25行這麼多,還得去數/去算到底是多少行…
行還有行號可以看,如果要操作的是字元就頭昏眼花了@@
我也試著按v把要操作的部份選起來,但是用鍵盤來選取也不太方便…
另外vim的折疊功能我也不太會操作,到底要怎麼指定他把一整段{}或()內的折起來呢?
對了,其實這篇回應的重點是,學長你今年暑假可以回來開鍋嗎XDD
(我是現任電研社長~)
Pingback: Next Step...
Pingback: Vim 小抄 與 入門投影片 | TechNow 當代科技
我是因為要學vim才搭上你的部落格的喔,
果然vim都是高手在用的編輯器,希望我現在學還不算太晚。但
就算有點晚,至少還是給我遇到了.
Pingback: VIM教程与学习资料汇总(2010-02-19更新) | 善用佳软
Pingback: 转 : 2010 Ruby on Rails 書單 與 練習作業 | Refactoring Thoughts
http://blog.csdn.net/camry_camry/archive/2004/09/23/114188.aspx
我写的 vim 使用经验(简体的),希望交流 🙂
Pingback: VIM教程与学习资料汇总 | 追随我心
Pingback: links for 2010-11-03 | Midashuang's Blog
Pingback: Vim 命令图解 | Linux爱好者
Pingback: 常用Vim操作命令集合 | 成都网站建设
Pingback: 学习VIM(教程汇总) | AABC博客
Pingback: VIM教程与学习资料汇总-web调色板|学习web知识,调出精彩web人生
Pingback: VIM教程与学习资料汇总 | Goto-Linux
Pingback: 分享我的vim設定檔 | vgod's blog
Pingback: Vim 相關網頁資訊 | Input and Output
Pingback: links for 2011-04-07 at iLenceel
Pingback: 心博 » VIM教程与学习资料汇总[转自:善用佳软]
Pingback: 相信Vim新手会喜欢的![Ubuntu文档编辑] | UbuntuSoft
Pingback: Vim操作图示 | 在路上[On Road,Walk Hard!]
Pingback: Blog.XDite.net » 2010 Ruby on Rails 書單 與 練習作業
Pingback: 常用Vim操作命令集合 | I'M YIN
以vi 新人角度
shift + 方向鍵下
跳下頁
shift + 方向鍵上
跳上頁
會比較好記0…0
Pingback: 我的vim環境設定 | Jui-Chi Ricky Liang's Blog
Pingback: [转] Vim入门图解说明.
Pingback: Felicia (feliciafay) | Pearltrees
Pingback: 我喜欢的和经常使用的vim快捷键 | 锦上添花
Pingback: vim
以前看到老外做的一个excel表格,把基本命令列出来了,当时觉得已经很好用了,现在看来能把命令图示化会更加好用,楼主开了先河啊。
Pingback: VIM教程与学习资料汇总 — By 善用佳软 | Hello, Linux!
Pingback: Vim 基本控制 | 海上漂流木
Pingback: vim 學習筆記 | 阿喵就像家
hi,我fork了你在github上的vim配置,但是发现 redo 这个操作 命令不好用啊,vim自己带的是 点(.)这个操作 我还不清楚怎么修改呢
谢谢博主总结、分享:D
Pingback: [转] Vim入门图解说明. | chenall's blog
Pingback: ultimate demon
Pingback: rankbuilder neo
Pingback: Vim 入门图解说明 | 软件工坊
Pingback: Crossfire
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.
Pingback: VIM 基礎 | theWorld
Pingback: GIT&VIM常用命令 | SKET DAN
Pingback: storming of the bastille prison
真是讓人一眼看過去就豁然開朗的圖解,感謝你的工作!
Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!(转) | 前端学习
Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! – 哥太假博客
Pingback: Vim相关资料大全 | 天天三国杀
Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!(转) | 前端学习笔记
Pingback: Vim-文本/代码编辑器之中最为优秀经典的上古神器! | 农夫庄园
Pingback: GVIM使用教程大全以及配置和资料汇总 | 哥特复兴
Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! | 屌丝码农
Pingback: Vim – 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! - 7科技
Pingback: Vim 学习 | 果壳中的宇宙
Pingback: 跟我一起学习VIM – The Life Changing Editor - IT牛人博客聚合
中文版的PDF下載連結已經失效。
已經修好了,謝謝!
Pingback: vim | afarliu的技术生涯
Pingback: VIM 学习笔记
Pingback: Vim | Paradise2
Pingback: [工具使用]Vim的使用 | John Wan's Blog
Pingback: vi 快速鍵 – 馬丁的筆記
Pingback: vim从入门到精通 – 马克徐的技术博客Mark Xu
Pingback: Vim - 文本/代码编辑器之中最为优秀经典的上古神器!强大、高效、免费开源且跨平台! - 征服者785号征服者785号
Pingback: 跟我一起学习VIM – The Life Changing Editor – mack
Pingback: 使用Vundle管理配置Vim的插件 | Codeba
Pingback: VIM北冥神功之插件管理 – 不知道该起个什么名字
Pingback: VIM 小抄 – Wayne's Garden