[Linux] VIM Practical Note
Practical Vimhtml
-
- 文件
1.1. 管理多個文件
1.1.1. 緩衝區
• :ls
• 查看緩衝區列表
• :bprev
• 前一項
• :bnext
• 後一項
• :bfirst
• 第一項
• :blast
• 最後一項
• :bdelete 刪除緩衝區項
• :bdelete N1 N2 N2
• :N,M bdelete
• :args 緩衝區參數列表
• :args {arglist}
• :args code/files
• :args index.html app.js
• :args cat .chapters
• :args Glob
• :args .
• :args **/*.js
• :args **/.
• 退出時,處理隱藏緩衝區的方式
• :write
• :edit!
• :qall!
• :wall!
1.1.2. 分割窗口
• Ctrl - w
• Ctrl - v
• :split {file}
• 水平切分
• :vsplit {file}
• 垂直切分
• Ctrl-w h|j|k|l
• 切換到 左下上右窗口
• Ctrl-w w
• 切換窗口
• :close
• 關閉活動窗口
• :only
• 只保留活動窗口,關閉其餘全部窗口
• :lcd {path}
• 設置當前窗口的本地工做目錄
1.1.3. 標籤頁將窗口分組 :h tabpage
• :windo lcd {path}
• 爲標籤頁的全部窗口,設置本地工做目錄
• :tabedit {filename}
• 在新標籤頁打開文件
• :Ctrl-w T
• 把當前窗口移到一個新標籤頁
• :tabclose
• 關閉當前標籤頁及其全部窗口
• :tabonly
• 只保留活動標籤頁,關閉全部期他標籤頁
• :tabnext {N}
• :tabnext
• :tabprevious
• :tabmove [N]
• 0:移到開頭 省略N :移到結尾
1.2. 打開及保存文件
1.2.1. :edit
1.2.2. :edit %:h Tab
1.2.3. :edit {path}
1.2.4. :find
1.2.5. :edit .
1.2.6. :Explore
• 打開文件管理器
1.2.7. Ctrl-^
• 從文件管理器,切換回剛纔編輯的文件
1.2.8. Ctrl-g
• 顯示當前文件的文件名及狀態
1.2.9. :!mkdir -p %:h
1.2.10. :w !sudo tee % > /dev/null
• 以超級用戶使用tee保存文件
-
- 移動及跳轉
2.1. 用動做命令移動
2.1.1. 行移動
• h j k l
• 左 下 上 右 移動g一個實際行
• gj gh gk gl
• 左 下 上 右 移動一個屏幕行
• 0
• 移動到實際行的行首
• g0
• ^
• 移動到實際行的第一個非空白字符
• g^
• $
• 移動到實際行的行尾
• g$
2.1.2. 單詞移動
• w
• 正向移到到下一單詞開頭
• b
• 反向移動到當前單詞/上一單詞的開頭
• e
• 正向移動到當前單詞/下一單詞的結尾
• ge
• 反向移動到上一單記詞的結尾
• W、B、E、GE
• 大寫表示操做字符串
2.1.3. 查找字符
• f {char}
• 正向移動到下一個字符所在之處
• F {char}
• 反向移動到上一下字符所在之處
• t {char}
• 正向移動到下一個字符所在之處的前一個字符上
• T {char}
• 反向移動到上一個字符所在之處的後一個字符上
• ;
• 重複上次的字符查找命令
• ,
• 反轉方向查找上次的字符查找命令
2.1.4. 精確的文本對象選擇選區
• 分隔符文本對象
• a) 或 ab
• a+符號:表示選擇一對符號間的內容,包含符號在內
• a} 或 aB
• a]
• a>
• a'
• a"
• a• at • 一對XML標籤 • i + ) } ] > ' "
t
• i + 符號:表示選擇一對符號內部,不包含符號
• 範圍文本對象
• iw
• 當前單詞
• iW
• 當前字串
• aw
• 當前單詞及一個空格
• aW
• 當前字串及一個空格
• is
• 當前名子
• as
• 當前名子及一個空格
• ip
• 當前段落
• ap
• 當前段落及一個空行
2.1.5. 位置標記
• m{a-zA-Z}
• 設置位置標記,小寫用於當前緩衝區,大寫用於全局
• '{mark}
• 跳到位置標記所在行, 光標置於第一個非空白字符 上
• {mark} • 跳到位置標記所在行, 光標置於位置所在之處,同時恢復行和列位置 • 自動位置標記 • `` • 當前文件中上次跳轉動做以前 的位置 •
.
• 上次修改的地方
• ^ • 上次插入的地方 •
[
• 上次修改或複製的起始位置
• ] • 上次修改或複製的結束位置 •
<
• 上次高亮選區的起始位置
• > • 上次高亮選區的結束位置 2.2. 文件間跳轉 2.2.1. 遍歷跳轉列表 • Ctrl - o • 跳轉列表後退 • Ctrl - i • 跳轉列表前進 2.2.2. 遍歷改變列表 h: changelist • :changes 查看改變列表 • g; 或 g, • 正向或反向遍歷改變列表 2.2.3. gi • 轉到上次插入位置,並進入插入模式。 ( 恢復
^光標位置,並進入插入模式)
2.2.4. gf
• 跳轉到光標下的文件
-
- 寄存器
3.1. :reg
3.1.1. 查看寄存器內容
3.2. 複製與粘貼
3.2.1. ""
• 無名寄存器
3.2.2. "0
• 複製專用寄存器
3.2.3. "_
• 黑洞寄存器
3.2.4. "+
• 系統剪貼板
3.2.5. "*
• 選擇專用寄存器
3.2.6. "=
• 表達式寄存器
3.2.7. "%
• 當前文件名
3.2.8. "#
• 輪換文件名
3.2.9. ".
• 上次插入的文本
3.2.10. ":
• 上次執行的Ex命令
3.2.11. "/
• 上次查找的模式
3.3. 宏
3.3.1. q
• 錄製和中止宏按鈕
3.3.2. qa 或 qA
• 錄製宏到寄存器a 或 大寫字母 追加內容到寄存器a
3.3.3. q{register}
• 錄製宏到寄存器
3.3.4. @{register}
• 執行寄存器內的內容
3.3.5. @@
• 重複最近調用過的宏
3.3.6. [n]@a
• 加次數執行宏
3.3.7. [range] normal @a
• 指定範圍內執行宏
3.3.8. :argdo normal @a
• 對參數列表的全部緩衝區執行宏@a
• 提早設置 hidden
-
- 模式
4.1. 按模式匹配及按原義匹配
4.1.1. :set ignorecase
• 全局設置大小寫敏感性
4.1.2. \c \C
• 每次查找時設置大小寫敏感性
4.1.3. \v
• (very magic)來統一正則表達式全部特殊符號的無則
4.1.4. \V
• 原則文本開關
4.1.5. ()
• 捕獲子匹配
4.1.6. <>
• 界定單詞邊界
4.1.7. \zs \ze
• 界定匹配的邊界
4.1.8. • 轉義問題字符
• 反向查找時轉義?號
4.2. 查找
4.2.1. / 或 ?
• 正向或反向查找
4.2.2. n 或 N
• 跳轉到下一處 或 上一處匹配,保持查找 方向與偏移不變
4.2.3. gn 或 gN
• 進入面向字符的可視模式,並選中下一外或上一處匹配
4.2.4. :h incsearch
• 在執行查找前預覽每一處匹配
4.2.5. //e
• e標記,將光標偏移到查找匹配的結尾
4.2.6. :%s//"\1"/g
• 用上次查找模式查找
4.2.7. :%s///gn
• substitute 統計匹配數目,不修改
4.2.8. :vimgrep //g %
• 統計匹配總數
4.3. 替換
4.3.1. :[range] s[ubstitute]/{pattern}/{string}/[flags]
• 查找替換
• g flag
• 全局範圍內執行
• c
• 確認或拒絕每一處修改
• n
• 抑制正常的替換行爲
• e
• 屏蔽錯誤提示
• &
• 重用上一次flag
4.3.2. 替換域中特殊字符
• \r
• 插入換行符
• \t
• 製表符
• \
• 反斜槓
• \1
• 插入第1個匹配
• \2
• 插入第2個匹配
• \0
• 插入匹配模式的全部內容
• &
• 同\0
• ~
• 使用上次調時的{string}
• ={vim script}
• 執行{vim script}表達式;並將結果做爲替換{string}
4.3.3. g&
• 在整個文件範圍內重複面向行的替換操做
• :%s//~/& 等於 g&
4.3.4. :[range]&&
• 從新執行替換
• g& 是:%&&的快捷方式
4.3.5. :%s//=submatch(0)-1/g
• submatch(0) 可獲得當前匹配的內容
4.3.6. :%s//={"dog":"man", "man":"dog"}[submatch(1)]/g
• 用字典映射替換匹配的內容
4.3.7. 在整個工程範圍內查找
• 1. :vimgrep // **/*.txt
• 2. :cfdo %s//string/gc
• 設置 hidden
• :cfdo %s//string/g | update
4.4. global
4.4.1. :[range] global[!] /{pattern}/ [cmd]
• 在某個指定模式的全部匹配行上運行Ex命令
-
- 工具
5.1. ctags
5.1.1. Ctrl - ]
• 跳轉到定義處
5.1.2. g Ctrl - ]
• 若是多處匹配,提示用戶指定一處進行跳轉
5.1.3. Ctrl - t
• 後退按鈕
5.1.4. :tag {kewword}
5.1.5. :tjump {keyword}
5.1.6. :pop 或 Ctrl -t
• 反向遍歷標籤歷史
5.1.7. :tag
• 正向遍歷標籤歷史
5.1.8. :tnext
5.1.9. :tprev
5.1.10. :tfirest
5.1.11. :tlast
5.1.12. :tselect
5.2. Quickfix列表
5.2.1. :cnext
5.2.2. :cprev
5.2.3. :cfirst
5.2.4. :clast
5.2.5. :cnfile
5.2.6. :cpfile
5.2.7. :cc N
5.2.8. :copen
5.2.9. :cclose
5.2.10. :cdo {cmd}
5.2.11. :cfdo {cmd}
5.3. 工程內查找
5.3.1. grep
5.3.2. vimgrep
5.4. 自動補全
5.4.1. 調出命令
• Ctrl - n
• 普通關鍵字
• Ctrl -x Ctrl - n
• 當前緩衝區關鍵字
• Ctrl -x Ctrl - i
• 包含文件關鍵字
• Ctrl - x Ctrl - ]
• 標籤文件關鍵字
• Ctrl - x Ctrl - k
• 字典查找
• Ctrl - x Ctrl - l
• 整行補全
• Ctrl - x Ctrl - f
• 文件名補全
• Ctrl - x Ctrl - o
• 全能(Omni)補全
5.4.2. 彈出菜單使用
• Ctrl - n
• 使用下一匹配項
• Ctrl - p
• 使用上一匹配項
• Down
• UP
• Ctrl - y
• 確認使用當前選中的匹配項
• Ctrl - e
• 還原最先輸入的文本
• Ctrl - h
• 從當前匹配項中刪除一個字條
• Ctrl - l
• 從當前匹配項中增長一個字符
• {char}
• 停止自動補全並插入字符
5.5. Vim拼寫檢查器
5.5.1. :set spell
• 啓用拼寫檢查器
5.5.2. [s
• 反向跳轉
5.5.3. ]s
• 正向跳轉
5.5.4. z=
• 修改建議
5.5.5. zg
• 光標下單詞添加到拼寫文件中
5.5.6. zw
• 標記爲拼寫錯誤
5.5.7. zug
• 撤銷zg zw操做
5.5.8. 插入模式利用拼寫補全
• Ctrl - x s
• Ctrl -x Crtl - s
-
- 插件
6.1. commentary.vim 註釋
6.1.1. gc {motion}
• 切換指定行的註釋狀態
6.1.2. gcap
• 註釋當前段落
6.1.3. gcG
• 註釋到結尾
6.1.4. gcc
• 註釋當前行
6.2. matchit
6.2.1. % 在配對的關鍵字間跳轉
- 命令
7.1. .命令
7.1.1. 重複上次的修改
7.1.2. .範式:用一鍵移動,另外一鍵執行
7.2. [n] Ctrl-a
7.2.1. 對當前或查找到第一個數據,進行加運算
7.3. [n] Ctrl-x
7.3.1. 對當前或查找到第一個數據,進行減運算
7.4. gR、gr
7.4.1. 虛擬替換模式,替換製表符
7.5. Ctrl - o
7.5.1. 跳轉列表,回跳
7.6. Ctrl - i
7.6.1. 跳轉列表,前進
-
- 模式 8.1. 普通模式 8.1.1. 停頓時請離開畫筆 8.1.2. 把撤銷單元切成塊:進入插入 修改 離開,是一次修改 8.1.3. 操做符 + 動做命令 = 操做 8.1.4. .命令 • 重複上次的修改 • .範式:用一鍵移動,另外一鍵執行 8.1.5. vim 的操做符命令 d{motion} • c 修改 • d 刪除 • y 複製到寄存器 • g~ 反轉大小寫 • gu • 轉換爲小寫 • gU • 轉換爲大寫 • > • 增長縮進 • < • 減小縮進 • = • 自動縮進, 格式化 • ! • 使用外部程序過濾{motion}所跨越的行 8.1.6. Ctrl - w c • 關閉活動窗口 8.1.7. Ctrl - w o • 只保留活動窗口,關閉其餘全部窗口 8.1.8. {N} gt • 切換到編號爲{N}的標籤頁 8.1.9. gt • 切換到下一標籤頁 8.1.10. gT • 切換到上一標籤頁 8.2. 插入模式 8.2.1. Ctrl-h • 刪除前一個字符 8.2.2. Ctrl-w • 刪除前一個單詞 8.2.3. Ctrl-u • 刪除至行首 8.2.4. 返回普通模式 • ESC • Ctrl - [ • Ctrl - o • 切換到插入普通模式 • 執行一次普通模式命令,後返回插入模式 8.2.5. Ctrl - r {register} • 插入寄存器中的的文本 8.2.6. Ctrl-r Ctrl-p {register} • 按原義插入寄存器中的的文本,不縮進 8.2.7. Ctrl-r =表達式 • 調用表達式寄存器,插入計算後的值 8.2.8. Ctrl - v{code} • 用戶字符編碼插入很是用字符 • Ctrl-v065 • Ctrl-vu00bf 8.2.9. Ctrl - k{char1}{char2} • 用二合字母插入很是用字符 • Ctrl-k?I 8.3. 可視模式 8.3.1. v • 激活面向字符的可視模式 8.3.2. V • 激活面向行的可視模式 8.3.3. Ctrl - v • 激活面向列塊的可視模式 8.3.4. gv • 重選上次的高亮選區 8.4. 命令行模式 8.4.1. 命令 • : [range] delete [reg] • 刪除提定範圍的行【到寄存器】 • : [range] yank [reg] • 複製指定範圍的行 【到寄存器】 • : [line] put [reg] • 在指定行後粘貼寄存器中的內容 • : [range] copy {address} • 把指定範圍的行復制到指定地址行之下 • : [range] move {address} • 把指定範圍的行移動到指定地址之下 • : [range] join • 鏈接指定範圍內的行 • : [range] normal {commands} • 對指定範圍內的每一行執行普通模式命令 {commands} • :[range] substitute/{pattern}/{string}/[flags] • 把指定範圍內的{pattern} 替換成{string} • : [range] global/{pattern}/[cmd] • 對指定範圍內匹配{pattern}的全部行執行Ex命令{cmd} 8.4.2. 地址、範圍表示符號 • 0 • 虛擬行,位於文件第一行上方 • 1 • 文件的第一行 • $ • 文件的最後一行 • . • 光標所在行 • 'm • 包含位置標記m的行 • '< • 高亮選區的起始行 • '> • 高亮選區的結束行 • % • 整個文件(:1,$的簡寫形式) 8.4.3. @: • 重複上次的Ex命令 8.4.4. Tab • 自動補全命令 8.4.5. Shif - s • 返回遍歷補全列表 8.4.6. Ctrl - d • 顯示可用的補全列表 8.4.7. Ctrl - r Ctrl - w • 插入光標下的單詞 8.4.8. Ctrl -r Ctrl - a • 插入光標下的字串 8.4.9. q/ • 打開查找命令歷史的命令行窗口 8.4.10. q: • 打開Ex命令歷史的命令行窗口 8.4.11. Ctrl - f • 從命令行模式切換到命令行窗口 8.4.12. 調用外部程序 • :shell • 啓動一個shell,exit返回vim • :!{cmd} • 在shell中執行{cmd} • :read !{cmd} • 在shell中執行{cmd}, 並把其標準輸出插入光標下方 • :[range]write !{cmd} • 在shell中執行{cmd}, 以[range] 做爲其標準輸入 • :[range] ! {filter} • 使用外部程序{filter} 過濾指定的[range]
歡迎關注本站公眾號,獲取更多信息