日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Vim 进阶1

發(fā)布時(shí)間:2025/3/8 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vim 进阶1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Vim 進(jìn)階1

所有你覺得簡單重復(fù),可以自動(dòng)化實(shí)現(xiàn)的操作,都是可以自動(dòng)化實(shí)現(xiàn)的。

Vim光標(biāo)移動(dòng)拾遺

w:下一個(gè)單詞的開頭,e:下一個(gè)單詞的結(jié)尾,b:上一個(gè)單詞的開頭,

0:行首(最行首,不管行首字符是否為空),$:行尾,^:非空字符行首,

%:匹配括號(hào)處,前跳后,后跳前都可,

gd:跳到某變量定義處(其實(shí)是當(dāng)前函數(shù)體內(nèi),該變量第一次出現(xiàn)的位置),gD:整個(gè)文件內(nèi)該變量第一次出現(xiàn)的位置,*,#,n,N

[{:移動(dòng)到前一個(gè)沒有匹配的左大括號(hào)處,(用于跳到函數(shù)、循環(huán)等作用域的開頭)

r:normal 模式下替換一個(gè)字符,如 ra 將當(dāng)前字符替換為 a,R:normal模式下從當(dāng)前到行尾替換

cw:刪除單詞并進(jìn)入編輯模式,C:輸出到行尾并進(jìn)入編輯模式。S:刪除整行并進(jìn)入編輯模式,s:刪除當(dāng)前字符并進(jìn)入編輯模式,

~:替換大小寫,并后移一個(gè)字符

自定義計(jì)數(shù)操作

  • d2w:刪除(其實(shí)d都是剪切)兩個(gè)單詞

  • 2dw:刪除單詞,做兩遍。4dd == d3j

Vim 修飾詞

  • i inner

    dip:(delete inner paragraph) 刪除一段文字(空行分隔),刪除操作不包括空行

    di(:刪除括號(hào)內(nèi)內(nèi)容

  • a around

    dap:刪除一段文字,刪除操作包括空行

  • t till

    dt):刪除從當(dāng)前光標(biāo)到本行下一個(gè) ) 處,刪除操作不包括 )

  • f find

    df):刪除從當(dāng)前光標(biāo)到本行下一個(gè) ) 處,刪除操作包括 )

vim mark標(biāo)簽

  • m 生成一個(gè) mark 標(biāo)簽,如 a ,生成一個(gè)名為 a 的標(biāo)簽
  • ` 跳轉(zhuǎn)到一個(gè) mark 標(biāo)簽,如 a ,跳轉(zhuǎn)到名為 a 的標(biāo)簽處,恢復(fù)行列位置
  • ’ 跳轉(zhuǎn)到一個(gè) mark 標(biāo)簽,如 a ,跳轉(zhuǎn)到名為 a 的標(biāo)簽處,僅恢復(fù)行位置,即跳到標(biāo)簽所在行行首
  • `` 或 ‘’ 在起跳點(diǎn)和標(biāo)簽 a 間反復(fù)橫跳

mark 還有很多用法,可參考 https://vimjc.com/vim-mark.html

vim多標(biāo)簽頁

對(duì)于vim這個(gè)來說, 單純的用多子窗口(sp、vsp)來操作, 感覺還是不夠的, 還要結(jié)合標(biāo)簽頁tab pages來,才能更好的操作。

所有關(guān)于標(biāo)簽的命令都是以 :tab 開始的, 可以用tab鍵來查看提示

  • :tabnew 新建標(biāo)簽

  • :tabedit fileName 在新標(biāo)簽中打開文件,簡寫為 :tabe

  • :tabc 關(guān)閉當(dāng)前標(biāo)簽, :tabo 關(guān)閉其他所有標(biāo)簽

  • :tabfirst 切換到第一個(gè)標(biāo)簽

  • :tablast 切換到最后一個(gè)標(biāo)簽

  • :tabp 切換到前一個(gè)標(biāo)簽 tab previous

  • :tabn 切換到下一個(gè)標(biāo)簽 tab next

  • :tabs 查看標(biāo)簽

  • gt,gT 常規(guī)模式下直接切換標(biāo)簽

visual模式

  • v:逐字符選中
  • V:整行選中
  • C-v:矩形塊 block 選中

搜索替換

:[range]s/from/to[flags]:在 range 范圍內(nèi),將 from 替換為 to。 range、flags 常用含義如下

flags

flag作用
%復(fù)制上次替換命令的flags
g替換每行所有的匹配值(默認(rèn)只替換每行的第一個(gè)匹配值)
c替換前需確認(rèn)
e替換失敗時(shí)不報(bào)錯(cuò)
i / I大小寫不敏感 / 敏感

range

range功能
2121行
$最后一行
%全部行
21,25從21行到25行
.當(dāng)前行
.+3當(dāng)前行后的第3行
.,$當(dāng)前行到最后一行
.,.5 / .,.+5當(dāng)前行及之后5行

多個(gè)文件內(nèi)替換

:args *.c *.h :argdo %s/ext4/ext5/g :argdo update :argdo exit

注意 Vim 中的替換與 sed 中的替換其實(shí)是很像的:

sed -i "[range]s/from/to/[flags]" filename 將?件 filename 內(nèi)的 from 替換為 to

-i 表示直接編輯文件內(nèi)容,不加將會(huì)打印輸出到 stdout。

Vim 宏

如生成從 1 到 1000 的序列等多次雷同的操作

  • 錄制宏:q,如 qa 表示開始錄制名稱為 a 的宏。
  • 運(yùn)行宏:@,如 @a 表示執(zhí)行名稱為 a 的宏,10@a 表示執(zhí)行 10 次。

詳見:Vim 重復(fù)操作的宏錄制

安裝插件

  • mkdir -p ~/.vim/pack/vendor/start
  • 將插件 clone 到該目錄下即可

ctags

生成 tags 方便跳轉(zhuǎn)看代碼,支持多種語言

  • 安裝 ctags:sudo apt install exuberant-ctags
  • 創(chuàng)建 tags 文件 ctags -R .
  • 若查找 inode_operations 的定義
    • No tags file
      • 當(dāng)前目錄不存在 tags 文件
      • 在父目錄中尋找 tags 文件:在 .vimrc 中添加 set tags=./tags;,tags
  • 使用:
    • 查找當(dāng)前文件中的某個(gè)變量的定義:光標(biāo)在該變量上,Crtl+]
    • 列出所有某個(gè)變量的定義及引用:g]
    • 直接打開定義 inode_operations 的文件:直接在當(dāng)前目錄下,命令行中 vim -t inode_operations

shell使用vim鍵位

  • bash : set -o vi

  • zsh : bindkey -v

  • fish : fish_vi_key_bindings

這里說一下 bash 中默認(rèn)是 emacs 模式,具體當(dāng)前是什么模式可以用 set -o 命令查看,然后通過 set -o enacs 和 set -o vi 來回切換。

鍵位圖中文版

其他常用插件

  • gitgutter
  • easymotion
  • fzf
  • Vim-linux-coding-style
  • cscope

Ref:

https://www.bilibili.com/video/BV1PL411M7bg?from=search&seid=12655157522675339145&spm_id_from=333.337.0.0

總結(jié)

以上是生活随笔為你收集整理的Vim 进阶1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。