# 爽爽快快學Vim（1）

> 影片內提到的相關連結： - Vim - 我的Vimrc設定參考 shell指令 - Ctrl ...

Published: 2012-04-27
URL: https://kaochenlong.com/screencast-1-learning-vim-from-the-beginning

---

&lt;figure class=&quot;youtube-video&quot; data-id=&quot;vMqqYw7wdO0&quot; data-size=&quot;75&quot; data-caption=&quot;https://www.youtube.com/watch?v=vMqqYw7wdO0&quot;&gt;
&lt;/figure&gt;

## 影片內提到的相關連結：

- [Vim](http://www.vim.org/)
- [我的Vimrc設定參考](https://github.com/kaochenlong/eddie-vim)

### shell指令

- `Ctrl` `l`: 清除畫面
- `Ctrl` `w`: 一次刪除一個字(word)
- `Ctrl` `u`: 刪除一整行
- `Ctrl` `r`: 搜尋 history

## Vim

### mode 切換

- `i` 或 `a` 進入 insert mode, `i` = insert, `a` = append
- 在 insert mode 按下 `ESC` 或 `Ctrl + [` 回到 normal mode
- 在 normal mode 按下 `v` 或 `V` 進入到 visual mode
- 在 visual mode 按下 `ESC` 或 `Ctrl + [` 回到normal mode

### 游標移動

- `h` `j` `k` `l` 移動游標
- `w` 或 `W` 往後跳一個字(word)， `b` 或 `B` 往前跳一個字(word)。
- `0` 將游標跳回行首`$` 則是跳至行尾。
- `f&quot;` 會找到該行的下一個雙引號`fx` 會找到該行下一個英文字母 `&quot;x&quot;`，以此類推；大寫 `F` 則是反向。
- `t&quot;` 會找到該行的下一個雙引號的前一個位置`tx` 會找到該行下一個英文字母 `&quot;x&quot;` 的前一個位置，以此類推；大寫 `T` 則是反向。
- `{` 往上一個段落移動`}` 往下一個段落移動
- `vit` 選取目前游標所在的這個標籤(tag)，例如`&lt;div&gt;hello&lt;/div&gt;`則會選取`hello`； `vat` 則會連帶標籤一起選取，例如`&lt;div&gt;hello&lt;/div&gt;`則會選取`&lt;div&gt;hello&lt;/div&gt;`。
- `vi&quot;` 選取目前游標所在的這個雙引號內的內容，例如`&quot;hello world&quot;`則會選取`hello world`； `va&quot;` 則會連雙引號一起選取。其中雙引號也可以替換成單引號、小括號等符號，功能一樣是選取該符號內的文字。
- `viw` 選取目前游標所在的這個字(word)。
- `gg` 游標跳至整個檔案的第一行； `G` 游標跳至檔案的最後一行
- `zt` 將目前游標所在位置的內容拉至螢幕的上方； `zb` 將目前游標所在位置的內容拉至螢幕的下方； `zz` 將目前游標所在位置的內容拉至螢幕的正中間
- `/` 搜尋，搜尋到結果後 `n` 可跳至下一個； `N` 可跳至上個。
- `*` 直接搜尋符合游標所在的字(word)

### 編輯

- `i` 進入insert mode， `I` 游標直接跳至行首，並進入 insert mode
- `a` 進入insert mode， `A` 游標直接跳至行末，並進入 insert mode
- `D` 刪除游標所在位置之後的所有內容
- `C` 同上，並直接進入 insert mode
- `x` 刪除一個字元
- `.` 重複上一個動作
- `dd` 刪除一整行
- `3dd` 刪除 3 行
- `yy` 複製游標所在位置的一整行
- `3yy` 從游標處往下複製 3 行，包含游標所在的那一行
- `p` 貼上內容； `4p` 從目前游標的所在處貼上內容 4 次
- `=` 格式整理， `gg=G` 整份文件格式自動整理
- `dw`、 `diw` 刪除游標所在的那一個字(word)
- `cw`、 `ciw` 刪除游標所在的一個字(word)並直接進入 insert mode
- `&gt;` 增加縮排； `&lt;` 減少縮排

### 常用命令

- `:w` 寫入檔案
- `:q` 離開 Vim，若加上!則為強制離開
- `:tabe` 開新 tab
- `gt` 切換至下一個tab； `gT` 切換至上一個 tab。(在我的 vimrc 裡有分別對應到 F7 跟 F8 鍵)
- `:new` 新增水平分割視窗； `:vnew` 新增垂直分割視窗。

### 其它

- `Ctrl z` 把 vim 放至背景工作；`fg`指令則是將 vim 從背景工作撿回來。

如果沒有意外或被其它工作中斷，應該可以繼續錄下去。發音的部份感覺咬字像含顆魯蛋一樣，無意義的贅字還是很多，有待加強。內容有不對的地方，再請不吝前輩們給予指教。

### 推薦閱讀

- [Vim Text Objects: The Definitive Guide](http://blog.carbonfive.com/2011/10/17/vim-text-objects-the-definitive-guide/)

