Vim 高級技巧
常用技巧
| 命令執行(注意大小寫不同) | ||
| 以插入字元方式進入編輯模式 | 與 a 同為進入編輯模式,兩者差別只有游標的起始位置不同 | |
| 以附加字元方式進入編輯模式 | ||
| 操控游標的移動,h--向左, j--向下, k--向上, l--向右 | 當遇到部份作業系統不支援方向鍵使用時,可用此方式代替 | |
| 游標移到第一行 | ||
| 游標移到第22行 | 作程式除錯找特定行列時會用到 | |
| 游標移至檔尾 | 編輯大檔案時要移到檔尾不用一頁一頁捲 | |
| 游標移至行首 | ||
| 游標移至行尾 | ||
| 另存新檔成 new.txt | ||
| 以 sudo 模式存檔 | 如果存檔時遇到權限不足,且有 sudo 的權限時的方法 | |
| 如不小心編錯內容,只要沒存檔前就可以用此法離開,保存原始內容 | ||
| 取消行號顯示 | ||
| 有些系統預設已經啟用 | ||
| 啟用 Hihjlight 顯示 | ||
| 刪除目前這一行 | ||
| 刪除目前以下10行(含本列) | ||
| 複製目前這一行 | ||
| 複製目前以下3行(含本列) | ||
| 貼上 | ||
| :/<table>/,/<\/table>/g/^$/d | 包含 <table> ... </table> 的內容刪除 | |
| 搜尋文字 | ||
| 搜尋文字(不分大小寫) | ||
| 搜尋行尾的空格字元並 Highlight | 這可以配合 :set hlsearch 使用, not support AIX | |
| 大小寫互換 | ||
| 消除斷行符號 ^M | ||
| 移除所有行尾的空格字元 | not support AIX | |
| :1,$d | 清空所有內容 | |
| :1,22d | 清除 1-22 行 | |
| :23,$d | 清除 23 行以下所有內容 | |
| 執行外部 SHELL 指令 | ||
| 左右分割視窗且左邊載入 my.file | ||
| 上下分割視窗 | ctrl + w + w 切換視窗 |
其他技巧:
- 跳到上次編輯的行號:
'. - 刪除游標以下所有內容:
dG - 刪除游標以上所有內容:
dgg - 開啟指令視窗:
:terminal:below terminal,:bel term:vertical terminal,:vert term- 切換視窗:
Ctrl + w + w - 編輯模式:
Ctrl + w + N(切換回指令列:hi)
- 搜尋檔案並開啟:
:find your-script.sh(可用 tab 自動補全與*符號):find *.sh
Visual mode
- 切換至行模式:
Shift + V
- 整行文字:
V - 文字起始點至結束點:
v
- 整行文字:
- 切換至區塊模式:
Ctrl + v- 區塊左邊插入文字:
I - 區塊右邊插入文字:
A - 選擇區塊內至行尾的文字:
$
- 區塊左邊插入文字:
選擇與操作- 游標: 上/下鍵
- 下一個單字:
w - 下一個單字頭是點:
f . - 下一個段落:
}
- 取消選擇:
Esc - 複製選擇區文字:
y - 貼上文字:
p - 刪除選擇區的文字:
d*(Delete)* - 移動選擇區的文字:
d> Move to target line >p - 取代選擇區的文字:
r*(Replace)* - 變更選擇區的文字:
c*(Change)* - 復原最近刪除文字:
u*(Undo)* - 快速選擇目前引號("或')內的文字:
i+"或'
快速移動技巧
- 搜尋 MyKeyWord:
/MyKeyWord - 往下移動至相同文字的位置:
* - 標示關鍵字:
:set hlsearch - 輸入即顯示關鍵字:
:set incsearch - 段落
{},[]()的結束符號:% - 返回目前位置的段落起始符號
{:[{
取代文字技巧
- 逐一取代:搜尋文字
/old->cw-> 輸入取代文字 new -> 離開編輯模式Esc-> 下一個搜尋n-> 重複上次變更.
複製整行
# 複製指定的行號,然後移到要貼上的行,輸入 p 貼上
:<行號>yank
# 複製指定的行號,貼上至目前行的下方
:<行號>copy.
情境: 在中間欄一段文字的每行行首插入多個空白字元
- Ctrl + v
- 移動上下鍵選擇區塊文字區
- I (
shift + i) - 輸入空白
- Esc 跳離後完成
情境: 在中間欄一段文字的每行行尾插入`;`
- Ctrl + v
- 移動上下鍵 +
$選擇區塊文字區 - A (
shift + a) - 輸入
; - Esc 跳離後完成