如何快速上手 vim

有一個段子。前端

如何快速學會游泳?git

只須要三步,騙到河邊,踢下水,用竹竿戳遠點。github

那如何快速學會 vim 呢?正則表達式

默認編輯器設爲 vim,刪掉其餘一切編輯器,明天上線。typescript

如下是可以在 零配置零插件 下快速使用 vim 的一系列步驟,只須要多加練習,便能快速熟練使用 vim。 無他,惟手熟爾。vim

原文連接見 山月的博客app

快速移動

快速移動是 vim 的重中之重,比一切插件都要重要。也是下編輯和修改的基礎。編輯器

  • 上(k)下(j)左(h)右(l) 移動,須要注意,禁止使用上下左右箭頭 若是須要移動數行,能夠在操做前加數字。如 10j 表明往下移動十行。 經過數字與操做結合,這是 vim 的思想。post

  • 減小上一步的左右移動,效率過低,使用 b, B, w, W 代替 b 指 back a word,退回一個單詞。w 指 forward a word,前進一個單詞。 B 指 back a WORD,退回一個大單詞。w 指 forward a WORD,前進一個大單詞。ui

    其中,word 以及 WORD 的區別,以一個示例說明。 hello.world 有三個 word ('hello', '.', 'world'),卻只有一個 WORD。

  • 使用 f, F, t, T 進行更爲精細的左右移動控制 f 指 find a character,快速移動到下一個字符的位置,F 指向前查找。結合 b, w 實現快速左右移動。 t 指 tail a character,快速移動到下一個字符位置的前一個字符,T 指向前查找。

  • 使用 0, $ 進行行首行尾移動

  • 使用 % 快速移動到配對字符 如從左括號快速移動到右括號,左引號快速移動到右引號,在編碼中最爲經常使用!

  • 使用 <Ctrl-d>,<Ctrl-u> 進行大範圍上下移動 <Ctrl-d> 往下移動半頁,<Ctrl-u> 往上移動半頁。

    也可使用 <Ctrl-f>, <Ctrl-b> 進行整頁移動。

  • 使用 gg, G 進行首行尾行移動

  • :128 表示快速定位到 128 行,目前只在 debug 中使用

  • zz 快速定位當前光標至當前屏幕中間,zb 定位當前光標至屏尾,zt 定位當前光標至屏首

  • * 定位當前光標下的單詞,並指向下一個,# 指向上一個

  • gd 在編碼中經常使用,定位當前變量的申明位置,gf 定位到當前路徑所指向的文件。

  • 最後若是你發祥定位錯了,可使用 <Ctrl>-o 回到光標的上一位置

編輯

vim 的編輯在 Insert Mode,以上的快速移動是在 Normal Mode。編輯文本須要首先進入 Insert Mode

i, I, a, A, o, O 進入 Insert Mode

i 指 insert text,在該光標前進行編輯,I 指在行首進行編輯。 a 指 append text,在該光標後進行編輯,A 指在行尾進行編輯。 o 指 append text,在該光標後一行進行編輯,O 指在光標前一行進行編輯。

我的習慣,i, A, o, O 用的多一些,I, a 基本不用。

Esc 以及 <Ctrl-[> 均可以退出 Insert Mode

我的習慣使用 <Ctrl-[>,一來 Esc 過遠,二來在一些編輯器中 Esc 容易與其它熱鍵衝突。

修改

刪除也能夠在 Insert Mode 使用 delete 鍵進行手動刪除,不過效率過低,建議通常在 Normal Mode 進行刪除,剛進入 vim 的狀態即是 Normal Mode

  • 使用 x(dl) 刪除特定字符 能夠結合 x 以及上述所講的快速移動,刪掉光標下的特定字符

    在括號裏標註 l,意指 xdl 的簡寫。

    ddelete,表示刪除,是全部修改操做的基礎。dldl 兩個操做組成,表明刪掉光標右側的字符,同理,dh 表明刪掉光標左側的字符,這是全部刪除的基本形式,也是 vim 的核心思想。

  • 使用 daw 刪除特定單詞

    dawdelete a word,表示刪除特定單詞。一樣也可使用 db, dw 來刪除單詞。

  • 使用 dt, df 加特定字符,刪掉字符前的文本

  • 使用 di(, da( 刪除特定符號內的文本,如刪除括號,引號中的文本

    di(delete in (,不會刪掉括號。da(delete a (,會連同括號一同刪掉。同理還有 di'di" 等,在編碼中最爲經常使用!

  • 使用 D (d$) 刪除掉該字符之後的全部文本

  • 使用 dd 刪掉整行

  • 把以上操做的全部 d 替換爲 c,表示刪除後進入編輯模式

    cchange,表示刪除,如 d 同樣,是 vim 的基本動詞

  • 使用 r 加特定字符,表示使用特定字符代替原有字符

文件以及多窗口

  • 使用 :Ex (Explore) 瀏覽目錄

    定位到文件所在行,回車進入指定文件

  • 使用 :ls 列出緩衝列表

    緩衝列表中保存最近使用文件,行頭有標號

  • 使用 :bn 進入最近使用文件

    bnbuffer next,進入緩衝列表的下個緩衝,即最近一次使用文件

  • 使用 :b[N] 進入緩衝列表中標號爲 N 的文件

    b 10buffer 10,進入緩衝列表,即最近一次使用文件

  • 使用 :sbn, :vbn 在新窗口打開最近使用文件

    ssplit,水平方向。 vvertical,垂直方向。

  • 使用 :on(ly) 只保留當前窗口

基本操做

基本操做指查找,替換,撤銷,重作,複製,粘貼,保存等

  • /{pattern} 查找 / 後加須要查找的詞或者正則表達式進行查詢,n 向下查詢,N 向上查詢。

  • :s/aa/bb/g 替換 ssubstitute 的縮寫,替換,g 表明全局替換。

  • u 撤銷 uundo 的縮寫,撤銷。可與數字結合進行屢次撤銷。

  • <Ctrl-r> 重作

  • yy 複製整行 yyank,複製。使 y 與快速移動結合起來,可使用多種狀況的複製,如複製括號中內容,複製引號中內容。

    複製時,會把當前內容置入寄存器,使用 :reg 查看寄存器列表。

  • p 粘貼 ppaste,粘貼。

  • "*y 複製內容至系統剪切板

    :reg 會列出寄存器列表,"* 寄存器表明系統剪切板(),因此以上就是把內容放到系統剪切板。

    若是寄存器列表中沒有該寄存器,則 vim 不支持系統剪切板,也可使用命令 vim --version | grep clipboard

  • "*p 粘貼系統剪切板中內容

配置

關於配置,推薦一下 amix/vimrc ,在 github 上超過一萬四千顆星。

另外,再推薦下個人配置 shfshanyue/vim-config,其中有一些插件,如 emmettypescript 很是適合前端開發。


關注公衆號山月行,記錄個人技術成長,歡迎交流

歡迎關注公衆號山月行,記錄個人技術成長,歡迎交流
相關文章
相關標籤/搜索