無標題文章

學前須知

vim 是什么?

  1. vim 是人類目前已知的最好 [1]文本編輯器
  2. vim 是價值60億美元的 文本編輯器
  3. vim 會成為你最后一個 文本編輯器,因為它是最好的

vim 的宗旨:

更好,
更強,
更快。

學習 vim 的建議步驟:

  1. 活下來
  2. 感到舒適
  3. 感到自己更好、更強、并且更快
  4. 成為 vim 超人

敬告學習者:

  1. 學習 vim 的過程是很痛苦的,但用起來棒極了
  2. 你先要學習最基本的生存技能,然后一點點地去探索奇技淫巧
  3. 就像學習樂器一樣,你學習的最開始階段會很痛苦
  4. 別指望在3天之內, ^in 3 days 把 vim 玩的比其它編輯器更好

開始學習

第一,活下來

  1. 安裝 vim 下載地址 [2]
  2. 打開 vim
  3. 往下讀

一個標準的編輯器應該具備這樣的特點:在鍵盤上打點什么,然后屏幕上就出現什么。但是現在的 vim 不行,它還處于普通(Normal)模式。你需要按下字母 i 來進入插入(Insert)模式。
現在你應該感覺好多了,折騰半天,總算用上了 記事本 (還tm是沒有保存、編輯的閹割版)。既然你這么想,請按下 ESC 鍵,讓我們回到普通模式。
然后,你需要知道這幾個東西:

  • i : 進入插入模式; ESC 返回普通模式
  • x : 刪除當前(光標閃爍處)字符
  • :wq :保存并退出(:w 保存, :q 退出)
  • dd : 剪切當前行
  • p : 粘貼

這就是 vim 的最基本內容,不過你還是應該知道:

  • hjkl : 移動光標,等同于插入模式下的 ←↓↑→ [^j down]
  • :help <command> : <command> 的幫助文檔,比如 :help i:help 收獲完整幫助文檔)

[^j down]: 為了記住這鬼東西,你要告訴自己 j 有點像

現在,你已經知道了最基本的生存技能,大概能順利活著了。
什么時候你掌握好了(把這幾個命令用得很自然,就像吃喝拉撒一般),就可以進入第二階段了。(估計得費上幾天功夫)

對了,得說幾句幫助你理解普通模式:
你一定知道 Ctrl-c復制 ,這跟字母 c 本身幾乎毫無關系(你非得說 c for copy 我也沒辦法)。這就好像一用了 Ctrl ,就改變這整個世界的原本意思。 vim 的普通模式,就相當于一直按著 Ctrl (或其它某些 非打印字符 鍵)進行各種處理。

最后還有點事兒:

  • <xxx> : 應依情景被替換的內容(內容類別由 xxx 指定),比如 <command> 就意味著此處應輸入某命令, <text> 則代表文本
  • 所有以 : 開頭的命令,結尾都默認要按下 Enter 鍵,比如 :q 其實意味著你要按下 :qEnter 3個鍵
  • 命令都要用 西文 輸入,要 : 不要
  • : 打頭的命令,你是看不見(它們的顯示)的

第二,感到舒適

既然你活下來了,就有必要提高點生活質量,而非像一條狗 [3] 那樣無奈、痛苦。

這里是更多的技巧 ^more skills ,值得記下來并進行嘗試 [4]

1、進入插入模式的替換方案:
  • a : 在光標后的位置開始插入
  • o : 在光標后的一行開始插入
  • O : 在光標前的一行開始插入
  • cw : 把光標閃爍處到單詞結尾處的東西刪掉,然后插入

為進一步說明,假設現在處于普通模式,屏幕上有文本 word ,光標在 r 處閃爍,想輸入 <text> 。[^new line]

為得到的效果 應選用的插入模式進入命令
wo<text>rd i
wor<text>d a
word\n<text> o
<text>\nword O
wo<text> cw

[^new line]: 你應該知道 \n代表換行(new line)

2、基本移動
  • 0 : 到達當前行的開頭(相當于 Home 鍵)
  • ^ : 到達當前行開頭第一個非空白類字符
  • $ : 到達當前行的結尾(相當于 End
  • g_ : 到達當前行結尾最后一個非空白類字符
  • /<pattern> : 查找 <pattern>,比如 /word 就是在查找 word 這個單詞
3、復制粘貼
  • P : 在光標閃爍處之前粘貼( p 則是在之后)
  • yy : 復制當前行(相當于 ddpddP —— 剪切并粘貼)
4、撤銷和重做
  • u : 撤銷
  • Ctrl-r : 重做
5、打開、保存、退出和文檔切換
  • :e <path/to/file> : 打開某路徑下的文檔
  • :w : 保存
  • :saveas <path/to/file> : 把當前文本保存到某路徑下
  • :x / ZZ / :wq : 保存并退出當前文檔
  • :q! : 退出并不保存當前文檔( :qa! 退出所有打開的文檔并不保存)
  • :bn / :bp :切換到下一個/上一個打開的文檔

第三,感到自己更好、更強、并且更快

祝賀你走到了這里!現在要開始一些有趣的東西了。 [5]

首先,更好

來看看 vim 怎么體現機器的自我修養吧。 [6]

  1. . : 重復上一條指令
  2. N<command> : 重復做N次<command>

來看一些例子:

  • 2dd : 剪切當前2行(光標閃爍行及下一行)
  • 3p : 粘貼3次剪切板的文本

假設現在屏幕上顯示:

line1
line2

而光標在 line1 那行,那么在普通模式下輸入 2dd3p (注意你看不見這些非 : 開頭的命令,別慌),文本就會變成:

line1
line2
line1
line2
line1
line2
  • 100iword <ESC> : 效果如下,千萬別忘了最后按下 ESC 鍵,也別忘了那個空格
    word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

  • . :重復上面的命令,這里的話,就是再寫100個 word

  • 3. : 再寫3個 word(而非300個,多聰明的 vim 命令)

其次,更強

vim 一大優點就是,它能讓你更有效地穿梭于文本之間。別跳過這節。

行間移動:
  1. NG : 到第N行
  2. gg : 到文本開頭(相當于 1G
  3. G : 到文本結尾行
詞間移動:
  1. w : 到下一個單詞開頭
  2. e : 到當前單詞結尾
  3. W : 跳過最近的空白區,到下一個非空白字符
  4. E : 到最近空白區前的那個非空白字符

假設現在處于普通模式,屏幕上有文本:

The quick-brown* fox jumps over the lazy dog.

而光標在 u 上。那么:

輸入的命令 光標會到達的位置
w -
e k
W f
E *
碼農的“凌波微波”
  • % : 到達開括號處,適用于大中小三種括號
    比如普通模式下, 有文本 printf("foo"); ,光標位于 "foo") 的任意位置,按下 %, 都可以立馬到達 ( 處。
  • * / # : 到當前單詞出現的下一個/上一個位置

如果你不覺得 % 、 *# 特別有用,只能說你不是碼農,或者不是資深碼農。

最后,更快

還記得上一階段提到的基本移動嗎?學習它的原因是,你會寫大量的 <start position><command><end position> 樣式的指令。
比如 0y$ 的作用是,從當前行的第一個字符,復制到這行的結尾; ye , 從光標處復制到這個單詞結束; y2/word 復制了光標所在處和 word 第2次出現中間的文本。
能用于復制命令 y 的,自然也能用于剪切命令 d ,虛擬選擇命令 v ,大寫命令 gU , 小寫命令 gu ,……這需要你去不斷探索。

第四,成為 vim 超人

你現在應該能很爽地用 vim 了。不過接下來,才是 vim 真正的殺手锏。

1、 行內移動

你只需要小手一按,就能:

  • 0 : 到第0列去
  • ^ : 到第1個字符去
  • $ : 到-1列去
  • g_ : 到第-1個字符去
  • f<char> : 到光標后尋找某字符
  • , / ; : 到該字符出現的上一處/下一處去
  • Nf<char> : 到光標后某字符出現的第N處去
  • t<char> : 到光標后某字符前面的那個字符去
  • FT :和 ft 差不多,不過都是向找光標前找

假設在普通模式下,屏幕上有文本 x = fib(6 + 7); #this is a comment. ,光標在 b 處,那么:

命令 光標會到的位置
0 x 前的那個
^ x
$ . 再之后的那個
g_ .
fi this 的那個 i
2fi is 的那個 i
ti h
Fi fib 的那個 i
Ti b

結合這節和之前的東西,你會發現 dt<char> 能把從光標處到某字符之前的東西都剪切走。

tbc……


  1. emacs 笑哭 ?

  2. 這基本是對 Windows 用戶說的,類 Unix 系統一般自帶 vi/vim ?

  3. 乍看起來,很多狗活得比人舒服。不過這里就當是借用了《大話西游》的那句“他好像一條狗”的意思吧 ?

  4. 這可能會花上幾天時間,而你的收獲只是,學會了不用鼠標操作“記事本”。但不要著急,看看下一個階段,然后你就會知道為什么 vim 值得你這樣做 ?

  5. 不過只涉及老 vi 編輯器已有的一些命令 ?

  6. 那些大量的重復工作,就應該讓機器做 ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • [TOC] ##Assoc 顯示或修改文件擴展名關聯 Assoc [.Ext[=[Filetype]]] .Ex...
    btijjj閱讀 365評論 0 1
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,263評論 0 4
  • 命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟動vim 在命令...
    im螞蟻閱讀 30,801評論 3 48
  • vim 選擇文本,刪除,復制,粘貼 文本的選擇,對于編輯器來說,是很基本的東西,也經常被用到,總結如下: v 從...
    壹首簡單的歌閱讀 887評論 0 7
  • 飯后,爺爺給外公遞上一支煙,兩個人坐在桌角處閑話起來。我癡癡地坐在另一邊,聽他們講人世浮沉,從小時候躲避土匪...
    PhilXiang閱讀 239評論 0 1