[Linux] VIM Practical Note

Practical Vimhtml

    1. 文件
      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保存文件
    1. 移動及跳轉
      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
      • 跳轉到光標下的文件
    1. 寄存器
      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
    1. 模式
      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命令
    1. 工具
      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
    1. 插件
      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. % 在配對的關鍵字間跳轉
  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. 跳轉列表,前進
    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]
相關文章
相關標籤/搜索