# Vim Essentials
# Navigation
# Navigation by Direction

- h 或 ← 向左移動光標
- j 或 ↓ 向下移動光標
- k 或 ↑ 向上移動光標
- l 或 → 向右移動光標
# Navigation by Page
- Ctrl + F 向下翻頁,其中
F表示foward - Ctrl + B 向上翻頁,其中
B表示backward - Ctrl + D 向下滾動半頁,其中
D表示down - Ctrl + U 向上滾動半頁,其中
U表示up - Z + Enter 將當前行翻動到適當位置
💡 文件最下方的那些波浪(tildes)符號
如果移動到文件的最下方,會看到有許多波浪符號,比如像是這樣:

實際上,這些波浪符號並不存在於檔案中,而是告知我們已經到了檔案的底部。
# Navigation by Word
- w 移動到單字後方
- W 移動到單字後方,根據空白作為單字邊界
- b 移動到單字前方
- B 移動到單字前方,根據空白作為單字邊界
# Navigation by Line
- 0 移動到行首
- ^ 移動到行首的第一個有效字元
- $ 移動到行尾
- gg 移動到檔案開始行
- G 移動到檔案結尾行
- [num]gg 或 [num]G 移動到第
[num]行
💡 字元 ^ 和 $
如果接觸過正則表達式(Regular Expression)的話,字元 ^ 和 $ 也正好是代表匹配模式的開頭和結尾。
# Navigation with Command Line
:[num]移動到第[num]行:$移動到檔案結尾行
# Information
# Show Information
- Ctrl + G 顯示檔案名稱、檔案狀態和行數
- g + Ctrl + G 顯示更多資訊
# The Ruler
:set ruler:set noruler:set ruler!
# Deleting Text
# Delete by Character
- x 刪除當前游標位置上的一個字元
- X 刪除當前游標位置前的一個字元
# Operation and Motion
在 Vim 中 d 代表「刪除」這個操作(operation),他可以搭配數字和我們前面所提到各種「移動」的動作(motion)來實現效果:
- dw 向後刪除一個單字
- dl 向右一個位置進行進行刪除操作(刪除當前游標位置上的一個字元),相當於 x
- dh 向左一個位置進行進行刪除操作(刪除當前游標位置前的一個字元),相當於 X
- dj 向下刪除行(包括當前行和他的下一行)
- dj 向上刪除行(包括當前行和他的上一行)
- d0 刪除當前游標之前的所有內容(使游標位置在刪除之後成為行首)
- d$ 刪除當前游標之後的所有內容(使游標位置在刪除之後成為行尾),相當於 D
- dd 刪除當前行
- [num]dd 刪除
[num]行
# Thinking in Vim
在 Vim 中,這些操作可以整理成以下形式:
[count]operation{motion}`
[count]operation[count]{motion}`
舉個例子:
- 3w 執行移動單字三次
- d3w 執行刪除操作,刪除的內容是三個移動單字動作
- 2d3w 執行兩次刪除操作,刪除的內容是三個移動單字動作