Skip to main content

Vim 高級技巧

常用技巧
命令執行(注意大小寫不同) 使用說明 使用技巧
 i以插入字元方式進入編輯模式與 a 同為進入編輯模式,兩者差別只有游標的起始位置不同
 a以附加字元方式進入編輯模式 
 h j k l操控游標的移動,h--向左, j--向下, k--向上, l--向右當遇到部份作業系統不支援方向鍵使用時,可用此方式代替
 :1游標移到第一行 
 :22游標移到第22行作程式除錯找特定行列時會用到
 gg游標移至檔首  
 G游標移至檔尾編輯大檔案時要移到檔尾不用一頁一頁捲
 0游標移至行首 
 $游標移至行尾 
 :wq存檔後離開  
 :w new.txt另存新檔成 new.txt 
 :w !sudo tee %以 sudo 模式存檔如果存檔時遇到權限不足,且有 sudo 的權限時的方法
 :q!不存檔離開 如不小心編錯內容,只要沒存檔前就可以用此法離開,保存原始內容
 :set nu顯示行號 作程式除錯時必用 
 :set nonu取消行號顯示 
 :set hlsearch Highlight 搜尋的關鍵字有些系統預設已經啟用
 : syntax on啟用 Hihjlight 顯示 
 dd刪除目前這一行 
 10dd刪除目前以下10行(含本列) 
 yy複製目前這一行 
 3yy複製目前以下3行(含本列) 
 p貼上 
 :%s/old/new/g內容包含有old字元的都會取代成new字元  
:/<table>/,/<\/table>/g/^$/d包含 <table> ... </table> 的內容刪除 
 /keyword搜尋文字 
 /\KeyWord搜尋文字(不分大小寫) 
 /\s\+$搜尋行尾的空格字元並 Highlight這可以配合 :set hlsearch 使用
 ~大小寫互換 
 :%s/[ctrl+V and ctrl+M]//g消除斷行符號 ^M 
 :%s/\s\+$//移除所有行尾的空格字元 
: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 切換視窗

其他技巧:

  • 跳到上次編輯的行號:'.
  • 刪除游標以下所有內容: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 + "'
情境: 在中間欄一段文字的每行行首插入多個空白字元
  1. Ctrl + v
  2. 移動上下鍵選擇區塊文字區
  3. I (shift + i)
  4. 輸入空白
  5. Esc 跳離後完成
情境: 在中間欄一段文字的每行行尾插入`;`
  1. Ctrl + v
  2. 移動上下鍵 + $ 選擇區塊文字區
  3. A (shift + a)
  4. 輸入 ;
  5. Esc 跳離後完成
vimrc
" BASIC SETUP:
" enter the current millenium
set nocompatible

" enable syntax and plugins
syntax enable
filetype plugin on

" FINDING FILES:
" Search down into subfolders
" Provides tab-compleation for all file-related tasks
set path+=**

" Display all matching files when we tab complete
set wildmenu
Q & A

Q: 貼上文字後,因為自動縮排(autoindent)因素,導致內容編排錯亂。

A: 貼上文字前先執行 :set paste 

Tutorials