# vim # Vim 高級技巧 ##### 常用技巧
**命令執行(注意大小寫不同)** | **使用說明** | **使用技巧** |
i | 以插入字元方式進入編輯模式 | 與 a 同為進入編輯模式,兩者差別只有游標的起始位置不同 |
a | 以附加字元方式進入編輯模式 | |
o | 插入一個空白行並編輯 | |
h j k l | 操控游標的移動,h--向左, j--向下, k--向上, l--向右 | 當遇到部份作業系統不支援方向鍵使用時,可用此方式代替 |
:1 : 22 | 游標移到第一行 游標移到第22行 | 程式除錯找特定行號時會用到 |
gg | 游標移至檔首 | |
G | 游標移至檔尾 | 編輯大檔案時要移到檔尾不用一頁一頁捲 |
0 / $ | 游標移至行首/行尾 | |
w / W | 游標移至下一個單字/空格 | 游標右移 |
b / B | 游標移至上一個單字/空格 | 游標左移 |
x | 刪除目前字元 | |
J (Shift + j) | 移除目前行尾的斷行 | 上下兩行做合併 |
{ | 游標移至上一個段落 | |
} | 游標移至下一個段落 | |
:wq | 存檔後離開 | |
:w new.txt | 另存新檔成 new.txt | |
:w !sudo tee % | 以 sudo 模式存檔 | 如果存檔時遇到權限不足,且有 sudo 的權限時的方法 |
:q! | 不存檔離開 | 如不小心編錯內容,只要沒存檔前就可以用此法離開,保存原始內容 |
:set nu! | 行號顯示切換 | |
:set hlsearch | Highlight 搜尋的關鍵字 | 有些系統預設已經啟用 |
:set cuc! | 直欄游標切換 | 編輯 json, yaml 格式 |
: syntax on | 啟用 Hihjlight 顯示 | |
d dd | 刪除標記的內容 刪除目前這一行 | |
10dd | 刪除目前以下10行(含本列) | |
y yy | 複製標記的內容 複製目前這一行 | |
3yy | 複製目前以下3行(含本列) | |
p | 貼上 | |
/keyword | 搜尋文字 | |
/\\KeyWord | 搜尋文字(不分大小寫) | |
/S\[Uu\]SE | 搜尋特定字元不分大小寫 | |
\* | 快速搜尋目前游標的單字 | |
:%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> 的內容刪除 | |
:%s/\\t/ /g | 置換 Tab 成4個空白 | 寫程式時有用 |
/\\s\\+$ | 搜尋行尾的空格字元並 Highlight | 這可以配合 :set hlsearch 使用, not support AIX |
:%s/\\s\\+$// | 移除所有行尾的空格字元 | not support AIX |
~ | 大小寫互換 | |
:%s/\[ctrl+V and ctrl+M\]//g | 消除斷行符號 ^M | |
ggVG | 全選內容 | 類似 Ctrl a |
dG | 清除游標以下所有內容 | |
dgg | 刪除游標以上所有內容 | |
: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 切換視窗 |
:sort :sort! :sort u :sort i :sort n | 排序 反向排序 排序並移除重複行 忽略大小寫的排序 以數字排序 | |
u Ctrl + r | Undo Redo | |
:g/^$/d :4,100g/^$/d :g/pattern/d :!g/pattern/d | 全文移除空白行 第4-100行移除空白行 移除符合 pattern 的行 移除不符合 pattern 的行 | \[range\]g/pattern/cmd |