# Vim 高級技巧 ##### 常用技巧
**命令執行(注意大小寫不同)** | **使用說明** | **使用技巧** |
i | 以插入字元方式進入編輯模式 | 與 a 同為進入編輯模式,兩者差別只有游標的起始位置不同 |
a | 以附加字元方式進入編輯模式 | |
h j k l | 操控游標的移動,h--向左, j--向下, k--向上, l--向右 | 當遇到部份作業系統不支援方向鍵使用時,可用此方式代替 |
:1 | 游標移到第一行 | |
:22 | 游標移到第22行 | 作程式除錯找特定行列時會用到 |
gg | 游標移至檔首 | |
G | 游標移至檔尾 | 編輯大檔案時要移到檔尾不用一頁一頁捲 |
0 | 游標移至行首 | |
$ | 游標移至行尾 | |
w | 游標移至下一個單字 | |
W | 游標移至下一個空格 | |
{ | 游標移至上一個段落 | |
} | 游標移至下一個段落 | |
:wq | 存檔後離開 | |
:w new.txt | 另存新檔成 new.txt | |
:w !sudo tee % | 以 sudo 模式存檔 | 如果存檔時遇到權限不足,且有 sudo 的權限時的方法 |
:q! | 不存檔離開 | 如不小心編錯內容,只要沒存檔前就可以用此法離開,保存原始內容 |
:set nu! | 行號顯示切換 | |
:set hlsearch | Highlight 搜尋的關鍵字 | 有些系統預設已經啟用 |
:set cuc! | 直欄游標切換 | 編輯 json, yaml 格式 |
: syntax on | 啟用 Hihjlight 顯示 | |
dd | 刪除目前這一行 | |
10dd | 刪除目前以下10行(含本列) | |
yy | 複製目前這一行 | |
3yy | 複製目前以下3行(含本列) | |
p | 貼上 | |
:%s/old/new/g :%s/old/new/gc | 全文內容包含有old字元的都會取代成new字元 gc: 啟用提示 | |
:s#/usr/local/bin#/usr/sbin#g | 以 # 作為分隔符號 | |
:10,30 s/old/new/g | 第10-30行置換 old 為 new | |
:%s/old1\\|OLD2/new/gc | 全文置換 old1與OLD2 為 new | |
:/<table>/,/<\\/table>/g/^$/d | 包含 <table> ... </table> 的內容刪除 | |
/keyword | 搜尋文字 | |
/\\KeyWord | 搜尋文字(不分大小寫) | |
/S\[Uu\]SE | 搜尋特定字元不分大小寫 | |
/\\s\\+$ | 搜尋行尾的空格字元並 Highlight | 這可以配合 :set hlsearch 使用, not support AIX |
~ | 大小寫互換 | |
:%s/\[ctrl+V and ctrl+M\]//g | 消除斷行符號 ^M | |
:%s/\\s\\+$// | 移除所有行尾的空格字元 | not support AIX |
:1,$d | 清空所有內容 | |
:1,22d | 清除 1-22 行 | |
:23,$d | 清除 23 行以下所有內容 | |
:! ls -l | 執行外部 SHELL 指令 | :!! 上一個指令 |
:vsplit my.file | 左右分割視窗且左邊載入 my.file | ctrl + w + w 切換視窗 |
:split my.file | 上下分割視窗 | ctrl + w + w 切換視窗 |