乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      《Vim使用技巧 第二版》學習筆記

       精品唯居 2022-05-25 發(fā)布于北京

      這是我根據(jù)《Vim使用技巧 第二版》整理的,主要用于方便查找

      模式

      普通模式

      x 刪除當前字符

      u 撤銷修改

      . 重復動作

      a 當前位置插入

      A 行末插入(=$a

      R 由普通模式進入替換模式

      r 進入替換模式替換一個字符

      gR 進入虛擬替換模式:按屏幕上實際顯示的寬度來替換字符,而不是按文件中所保存的字符進行替換(它會把制表符當成一組空格進行處理)

      gr 進入虛擬替換模式替換一個字符

      o 在下面插入一行并在下一行開頭進入插入模式

      O 在上面插入一行并在上一行開頭進入插入模式

      s 刪除當前字符并進入插入模式

      [count]<Ctrl-a> 把當前光標之上或之后的第一個數(shù)字加上 [count](不輸入默認為1)

      在指令前加上[count]可以指定指令重復的次數(shù)(但是能用重復就不要用次數(shù))

      ga 以十進制和十六進制的形式 顯示出光標所在字符的字符編碼

      插入模式

      <Ctrl-w> 刪除前一個單詞

      <Ctrl-u> 刪除至行首

      <Ctrl-o> 進入插入-普通模式:在此模式中,可以執(zhí)行一個普通模式命令,執(zhí)行完后,馬上又返回到插入模式

      <C-r>{register} 粘貼

      <C-r><C-p>{register} 按原義插入寄存器內(nèi)的文本,并修正任何不必要的縮進

      <C-r>={算式} 把計算的結(jié)果插入

      <C-v>{123} 以十進制字符編碼插入字符

      <C-v>u{1234} 以十六進制字符編碼插入字符

      <C-v>{nondigit} 按原義插入非數(shù)字字符

      <C-k>{char1}{char2} 插入以二合字母 {char1}{char2} 表示的字符

      可視模式

      在可視模式中,要先選中選區(qū),然后再觸發(fā)修改命令。這種次序顛倒的方式對所有的操作符命令都適用

      v 激活面向字符的可視模式

      V 激活面向行的可視模式

      <C-v> 激活面向列塊的可視模式

      gv 重選上次的高亮選區(qū)

      命令行模式

      適用于遠距離的操作

      :[number] 跳轉(zhuǎn)到制定行

      :{start},{end} 選擇一個范圍

      @: 重復上一個Ex命令

      @@ 重復上一個 @: 的命令

      <C-d> 顯示全部可以補全的命令

      <C-r><C-w> 在命令中插入當前光標中的單詞

      q/ 打開查找命令歷史的命令行窗口

      q: 進入命令行窗口模式,在這個模式下上下選擇歷史命令的時候,按回車執(zhí)行;你甚至可以在這個模式里用正常的方式修改歷史命令

      :!{cmd} 調(diào)用外部命令

      :shell 啟動一個交互的shell會話

      :read !{cmd} 在shell 中執(zhí)行 {cmd} ,并把其標準輸出插入光標下方

      :[range]write !{cmd} 在 shell 中執(zhí)行 {cmd} ,以 [range] 作為其標準輸入

      :[range]!{filter} 使用外部程序 {filter} 過濾指定的 [range]

      :source *.vim 執(zhí)行Ex腳本

      :argdo {Ex命令} 對參數(shù)列表內(nèi)的所有緩沖區(qū)執(zhí)行一條Ex命令

      關(guān)于范圍

      . 代表當前行的地址

      % 代表當前文件中的所有行

      /{tag}/ {tag} 所在行

      :{address}+n 偏移行

      :[range]t{address} 復制 [range] 內(nèi)容到 {address}

      :[range]m{address} 移動 [range] 內(nèi)容到 {address}

      :[range]normal{操作} 對 [range] 行進行普通模式的 {操作}

      operator

      當一個操作符命令被連續(xù)調(diào)用兩次時,它會作用于當前行。如 dd 刪除當前行

      c 修改(比刪除多一個進入插入模式)

      g~ 反轉(zhuǎn)大小寫

      gu 轉(zhuǎn)換為小寫

      gU 轉(zhuǎn)換為大寫

      > 增加縮進

      < 減少縮進

      = 自動縮進

      ! 使用外部程序過濾{motion}所跨越的行

      motion

      gg 將光標定位到文件的開頭

      G 將光標定位到文件的末尾

      aw 表示整個單詞

      ap 表示整個段落

      operator + motion 使用例

      cw 刪除從光標位置到單詞結(jié)尾間的字符,并進入插入模式

      dw 刪除從光標起始位置到單詞結(jié)尾的內(nèi)容

      db 刪除從光標起始位置到單詞開頭的內(nèi)容,但會原封未動地留下最后一個字符

      daw 刪除整個單詞(delete a word,推薦使用)

      關(guān)于刪除

      往前刪除不會刪除光標本身,往后刪除會,光標看最左邊就好理解了

      關(guān)于文件

      :ls 列出所有被載入內(nèi)存中的緩沖區(qū)的列表,% 符號指明哪個緩沖區(qū)在當前窗口中可見,# 符號則代表輪換文
      件。按 <C-^> 可以在當前文件和輪換文件間快速切換

      :pwd 打印工作目錄(print working directory)

      切換緩沖區(qū)

      命令 用途
      :bnext 切換到列表中的下一個緩沖區(qū)
      :bprev 切換到列表中的上一個緩沖區(qū)
      :bfirst 跳到列表的開頭
      :blast 跳到列表的結(jié)尾
      :bdelete N1 N2 N3:N,M bdelete 刪除緩沖區(qū)
      Glob模式 所匹配的文件
      :args *.* index.html
      app.js
      :args **/*.js app.js
      lib/framework.js
      app/controllers/Mailer.js
      ...etc
      :args **/*.* app.js
      index.html
      lib/framework.js
      lib/theme.css
      app/controllers/Mailer.js
      ...etc

      反引號指定文件

      :args `cat .chapters`
      

      Vim 會在 shell 中執(zhí)行反撇號(')括起來的命令,然后把 cat 命令的輸出作為 :args 命令的參數(shù)。雖然本例是用 cat 命令獲取 .chapters 文件的內(nèi)容,但實際上可以用這種方式執(zhí)行任意可用的shell命令。

      files/.chapters內(nèi)容
      the_vim_way.pml
      normal_mode.pml
      insert_mode.pml
      visual_mode.pml
      

      切分窗口

      命令 用途
      <C-w>s 水平切分當前窗口,新窗口仍顯示當前緩沖區(qū)
      <C-w>v 垂直切分當前窗口,新窗口仍顯示當前緩沖區(qū)
      :sp[lit] {file} 水平切分當前窗口,并在新窗口中載入{file}
      :vsp[lit] {file} 垂直切分當前窗口,并在新窗口中載入{file}

      在窗口間切換

      命令 用途
      <C-w>w 在窗口間循環(huán)切換
      <C-w>h 切換到左邊的窗口
      <C-w>j 切換到下邊的窗口
      <C-w>k 切換到上邊的窗口
      <C-w>l 切換到右邊的窗口

      實際上,<C-w><C-w> 完成的功能和 <C-w>w 相同,就是說可以一直按住 <Ctrl> 鍵,然后輸入 ww (或 wj,或上表的其他命令)來切換活動窗口。<C-w><C-w> 要比 <C-w>w 更容易按一些,盡管寫出來時它顯得更繁瑣。

      (h, j, k, l 和上下左右方向鍵是等效的)

      關(guān)閉窗口

      Ex命令 普通模式命令 用途
      :clo[se] <C-w>c 關(guān)閉活動窗口
      :on[ly] <C-w>o 只保留活動窗口,關(guān)閉其他所有窗口

      改變窗口大小

      也可以拖拽鼠標

      命令 用途
      <C-w>= 使所有窗口等寬、等高
      <C-w>_ 最大化活動窗口的高度
      <C-w>| 最大化活動窗口的寬度
      [N]<C-w>_ 把活動窗口的高度設(shè)為[N]行
      [N]<C-w>| 把活動窗口的高度設(shè)為[N]列

      :lcd {path} 設(shè)置當前窗口的本地工作目錄

      :windo lcd {path} 為一個標簽頁中的所有窗口設(shè)置本地工作目錄

      標簽頁操作

      命令 用途
      :tabe[dit] {filename} 在新標簽頁中打開 {filename}
      <C-w>T 把當前窗口移到一個新標簽頁
      :tabc[lose] 關(guān)閉當前標簽頁及其中的所有窗口
      :tabo[nly] 只保留活動標簽頁,關(guān)閉所有其他標簽頁

      在標簽頁間切換

      Ex命令 普通模式命令 用途
      :tabn[ext] {N} {N}gt 切換到編號為 {N} 的標簽頁
      :tabn[ext] gt 切換到下一標簽頁
      :tabp[previous] gT 切換到上一標簽頁

      重排標簽頁

      :tabmove [N] 重新排列標簽頁。當 [N] 為0時,當前標簽頁會被移到開頭;如果省略了 [N],當前標簽頁會被移到結(jié)尾。如果終端支持鼠標,或是正在使用 GVim,:那么也可以通過鼠標拖曳來進行重排操作。

      文件

      打開文件

      :edit {file} 打開相對于工作目錄的文件路徑

      :edit %:h<Tab> % 符號代表活動緩沖區(qū)的完整文件路徑,按 <Tab> 鍵會將其展開,:h 修飾符會去除文件名,但保留路徑中的其他部分

      :find {file} 在 path 里查找文件并打開

      :set path+={path} 把 {path} 加入查找路徑中

      特殊的保存文件

      把文件保存到不存在目錄中

      :edit {file} 命令一般用于打開一個已存在的文件,然而如果指定了一個不存在的文件路徑,Vim 就會創(chuàng)建一個新的空白緩沖區(qū)。

      :!mkdir -p %:h -p 參數(shù)使 mkdir 創(chuàng)建任何不存在的中間目錄,%:h 為不包含文件名的路徑

      用超級用戶權(quán)限保存文件

      :w !sudo tee % > /dev/null

      快速移動和跳轉(zhuǎn)

      行移動

      命令 光標動作
      j 向下移動一個實際行
      gj 向下移動一個屏幕行
      k 向上移動一個實際行
      gk 向上移動一個屏幕行
      0 移動到實際行的行首
      g0 移動到屏幕行的行首
      ^ 移動到實際行的第一個非空白字符
      g^ 移動到屏幕行的第一個非空白字符
      $ 移動到實際行的行尾
      g$ 移動到屏幕行的行尾

      j, k, 0, $ 都用于實際行,加上 g 前綴用于屏幕行

      單詞移動

      命令 光標動作
      w 正向移動到下一單詞的開頭
      b 反向移動到當前單詞/上一單詞的開頭
      e 正向移動到當前單詞/下一單詞的結(jié)尾
      ge 反向移動到上一單詞的結(jié)尾

      先學會用 w 和 b

      W, B, E 和 gE 對應”字串“的操作

      查找字符

      下表為行內(nèi)操作

      命令 用途
      f{char} 正向移動到下一個 {char} 所在之處
      F{char} 反向移動到上一個 {char} 所在之處
      t{char} 正向移動到下一個 {char} 所在之處的前一個字符上
      T{char} 反向移動到上一個 {char} 所在之處的后一個字符上
      ; 重復上次的字符查找命令
      , 反轉(zhuǎn)方向查找上次的字符查找命令

      /{word} 或者 把光標移到單詞上按* 查找單詞

      n 向下重復上一次查找單詞操作

      N 向上重復上一次查找單詞操作

      在可視模式中選擇分割符文本對象

      選擇時光標必須在分割符內(nèi)

      一般以 i 開頭的文本對象會選擇分隔符內(nèi)部的文本,而以 a 開頭的文本對象會選擇包括分隔符在內(nèi)的整個文本。為了便于記憶,可以把 i 想成“inside”,而把 a 想成“around”或“all”。

      文本對象 選擇區(qū)域 文本對象 選擇區(qū)域
      a) 或 ab 一對圓括號 (parentheses) i) 或 ib 圓括號 (parentheses) 內(nèi)部
      a} 或 aB 一對花括號 {braces} i} 或 iB 花括號 {braces} 內(nèi)部
      a] 一對方括號 [brackets] i] 方括號 [brackets] 內(nèi)部
      a> 一對尖括號 i> 尖括號 內(nèi)部
      a' 一對單引號 'single quotes' i' 單引號 'single quotes' 內(nèi)部
      a" 一對雙引號 "double quotes" i" 雙引號 "double quotes" 內(nèi)部
      a` | 一對反引號 backticks | i` 反引號 backticks 內(nèi)部
      at 一對 XML 標簽tags it XML標簽tags內(nèi)部

      在普通模式中操作范圍文本對象

      文本對象 選擇范圍
      iw 當前單詞
      aw 當前單詞及一個空格
      iW 當前字串
      aW 當前字串及一個空格
      is 當前句子
      as 當前句子及一個空格
      ip 當前段落
      ap 當前段落及一個空行

      一般來說,d{motion} 命令和 aw、as 和 ap 配合起來使用比較好,而 c{motion} 命令和 iw 及類似的文本對象一起用效果會更好。

      做標記

      m{a-zA-Z} 用選定的字母標記當前光標所在位置。小寫位置標記只在每個緩沖區(qū)局部可見,大寫位置標記則全局
      可見。

      `{mark} 把光標移動到設(shè)置此位置標記時光標所在之處

      '{mark} 跳到位置標記所在行,并把光標置于該行第一個非空白字符上

      自動位置標記

      位置標記 跳轉(zhuǎn)到
      `` 當前文件中上次跳轉(zhuǎn)動作之前的位置
      `. 上次修改的地方
      `^ 上次插入的地方
      `[ 上次修改或復制的起始位置
      `] 上次修改或復制的結(jié)束位置
      `< 上次高亮選區(qū)的起始位置
      `> 上次高亮選區(qū)的結(jié)束位置

      % 在一組開、閉括號間跳轉(zhuǎn)

      .vimrc 中加入以下內(nèi)容可以激活 matchit 插件,它可以使 % 在配對的關(guān)鍵字間跳轉(zhuǎn):

      set nocompatible
      filetype plugin on
      runtime macros/matchit.vim
      

      遍歷跳轉(zhuǎn)列表

      :jumps 查看跳轉(zhuǎn)列表

      <C-o> 后退

      <C-i> 前進

      遍歷改變列表

      :changes 查看改變列表

      g; 反向

      g, 正向

      跳轉(zhuǎn)到文件

      把光標放到某個字符串上執(zhí)行 gf 命令,可以跳轉(zhuǎn)到該文件。

      指定擴展名:suffixesadd 選項允許指定一個或多個文件擴展名,當 Vim 用gf 命令搜尋文件名時,會嘗試使用這些擴展名,用下面的命令可以設(shè)置此選項:

      :set suffixesadd+=.h
      

      指定搜尋目錄:設(shè)置 path(同上 find 的使用)

      寄存器

      {register}x 剪切字符

      {register}d 剪切

      {register}y 復制

      {register}p 粘貼到光標后

      {register}P 粘貼到光標前

      {register}gp 粘貼到光標后,光標移動到被粘貼出來的文本結(jié)尾

      {register}gP 粘貼到光標前,光標移動到被粘貼出來的文本結(jié)尾

      :reg {register} 查看寄存器內(nèi)容

      register

      "0 復制專用寄存器

      "a - "z 有名寄存器

      _ 黑洞寄存器

      "+ 系統(tǒng)剪貼板

      "* 選擇專用寄存器

      "= 表達式寄存器

      只讀寄存器

      寄存器 內(nèi)容
      "% 當前文件名
      "# 輪換文件名
      ". 上次插入的文本
      ": 上次執(zhí)行的Ex命令
      "/ 上次查找的模式

      交換單詞:在可視模式下使用 p 命令時,Vim將用指定的寄存器內(nèi)容來替換高亮選區(qū)中的文本,高亮選區(qū)中的內(nèi)容與寄存器的文本被調(diào)包了。

      在錄制宏的過程中,禁止使用鼠標

      q{register} 開始錄制(如果 register 是大寫,新內(nèi)容會被追加到對應小寫寄存器的后面)

      q 停止錄制

      @{register} 執(zhí)行宏

      @@ 重復最近調(diào)用過的宏

      :normal @{register} 在高亮選區(qū)中的每一行上執(zhí)行這個宏

      模式匹配

      \c 查找模式忽略大小寫

      \C 查找模式強制大小寫

      \v 表示特殊含義

      \V 使得其后的模式中只有反斜杠有特殊的意義

      模式 說明
      #\([0-9a-fA-F]\{6}\|[0-9a-fA-F]\{3}\) 使用 magic 搜索模式時,必須轉(zhuǎn)義 (、)、以及 { 字符,賦予它們特殊的含義
      \v#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) 使用 \v 模式開關(guān)后,(、)、以及 { 字符會表現(xiàn)出特殊含義
      \v#(\x{6}|\x{3}) 使用 \x 字符類代替 [0-9A-Fa-f],可以進一步精簡表達式

      任何圓括號內(nèi)部的匹配文本都會自動保存到一個臨時的倉庫,可以用 \1 引用這段被捕獲的文本。如果模式中包含不止一組圓括號,則可以用 \1、\2,直到 \9,引用被每對 () 捕獲的子匹配。另外,不論模式中是否使用了圓括號,元字符 \0 永遠會引用整個匹配。在括號前加上 % 可以不把內(nèi)容賦值到寄存器中。

      <> 兩符號將用于匹配單詞的邊界,它們本身不匹配任何字符,僅表示單詞與圍繞此單詞的空白字符(或標點符號)之間的邊界。

      例: /\v<(\w+)\_s+\1> 專門用于匹配重復單詞

      元字符 \zs 標志著一個匹配的起始,元字符 \ze 則用來界定匹配的結(jié)束。

      例:如果查找 /Practical Vim,文檔中所有出現(xiàn) “Practical Vim” 的地方都會被高亮起來。一旦將查找模式改為 /Practical \zsVim,則只有單詞 “Vim” 會被高亮,而單詞 “Practical” 會被排除于匹配之外,但它仍是模式的一部分。這樣一來,只有緊跟著單詞 “Practical” 的 “Vim” 才會被高亮,其他前面不是 “Practical” 的 “Vim” 則不會被匹配。這與通過 /Vim 命令進行簡單查找的結(jié)果有很大不同。

      命令 用途
      n 跳至下一處匹配,保持查找方向與偏移不變
      N 跳至上一處匹配,保持查找方向與偏移不變
      /<CR> 正向跳轉(zhuǎn)至相同模式的下一處匹配
      ?<CR> 反向跳轉(zhuǎn)至相同模式的上一處匹配
      gn 進入面向字符的可視模式,并選中下一處匹配
      gN 進入面向字符的可視模式,并選中上一處匹配

      正向查找時要轉(zhuǎn)義 / 字符,反向查找時要轉(zhuǎn)義 ? 號,每次都要轉(zhuǎn)義符號 \

      escape({string}, {chars}) {chars} 參數(shù)將指定哪些字符需要用反斜杠轉(zhuǎn)義

      在最后添加 /e 可以讓光標停留在查找匹配的結(jié)尾

      統(tǒng)計匹配總數(shù)

      /{something}
      :%s///gn
      

      或者

      /{something}
      :vimgrep //g %
      

      前者告訴我們總數(shù),后者告訴我們每個所在的位置

      substitute

      :[range]s[ubstitute]/{pattern}/{string}/[flags]

      輸入 <C-r>{register} 可以將寄存器的內(nèi)容插入命令行

      標志位

      標志位 g 使得 subsititute 命令可在全局范圍內(nèi)執(zhí)行,即可以修改一行內(nèi)的所有匹配,而不僅僅是第一處匹配。

      標志位 c 讓我們有機會可以確認或拒絕每一處修改。

      標志位 n 會抑制正常的替換行為,即讓 Vim 不執(zhí)行替換操作,而只是報告本次 substitute 命令匹配的個數(shù)。

      標志位 e 專門用于屏蔽錯誤提示。

      標志位 & 僅僅用于指示 Vim 重用上一次 substitute 命令所用過的標志位。

      特殊字符

      符號 描述
      \r 插入一個換行符
      \t 插入一個制表符
      \\ 插入一個反斜杠
      \1 插入第1個子匹配
      \2 插入第2個子匹配(以此類推,最多到 \9)
      \0 插入匹配模式的所有內(nèi)容
      & 插入匹配模式的所有內(nèi)容
      ~ 使用上一次調(diào)用 :substitute 時的 {string}
      \={Vim script} 執(zhí)行 {Vim Script} 表達式;并將返回的結(jié)果作為替換 {string}

      手動決定每一次替換——答案的含義

      答案 用途
      y 替換此處匹配
      n 忽略此處匹配
      q 退出替換過程
      l “l(fā)ast” —— 替換此處匹配后退出
      a “all” —— 替換此處與之后所有的匹配
      <C-e> 向上滾動屏幕
      <C-y> 向下滾動屏幕

      :cfdo {cmd} 修改所有 quickfix 列表上的文件

      global

      :[range] global[!] /{pattern}/ [cmd]

      在缺省情況下,global 命令的作用范圍是整個文件。

      {pattern} 域與查找歷史相互關(guān)聯(lián)。

      global! 將指示 Vim 在沒有匹配到指定模式的行上執(zhí)行 [cmd]

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多