首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Vim 實戰技巧第 28 期:用行號與模式精準定位範圍

     編輯:關於C++

核心概念:地址與範圍

Vim 的 Ex 命令(以 : 開頭)可接受地址指定作用範圍。地址可以是行號、標記、模式或組合,支援偏移量調整。

技巧一:行號作為地址

輸入數字後按 Enter 可跳轉到指定行。例如 :10 跳到第 10 行,:10,20 選中第 10-20 行。

技巧二:視覺選擇自動生成範圍

  1. 進入視覺模式(v/V/Ctrl-v)選擇多行
  2. 按 : 進入命令列,提示符自動顯示 :'<,'>
  3. 輸入 Ex 命令(如 s/foo/bar/g),僅在選中行執行

'< 代表選區首行標記,'> 代表尾行標記。

技巧三:模式作為地址

://,/<\/html>/p

從包含 <html> 的行開始,到包含 </html> 的行結束,打印該範圍。模式用 / 包裹。

技巧四:偏移量微調範圍

語法::{address}+n 或 :{address}-n,n 默認為 1。

  • :/

    /,/<\/p>/-1:排除結尾標籤行

  • :.,.+3:當前行及後 3 行(等價 :2,5 若當前行為 2)
  • :0:虛擬第 0 行,用於 :copy 0 或 :move 0 將範圍移至文件開頭

實戰組合拳

" 1. 選中函數體(視覺行模式 V + 選擇)
" 2. :'<,'>s/^/  /  為每行添加縮進
" 3. :'<,'>move 0  將函數移到文件頂部

" 另一例:刪除所有註釋行
:g/^\s*#/d

" 複製第 10 行到第 20 行之後
:10copy 20

地址類型速查表

類型示例說明
絕對行號10, 10,20直接指定行
相對行號., .-3, .+5基於當前行偏移
標記'a, '<, '> 標記位置,視覺選區自動生成
模式/pattern/, ?pattern?向下/向上搜尋首個匹配行
特殊符號$ (末行), % (全文), 0 (虛擬首行)常用於範圍邊界

進階:多範圍操作

:g/pattern/cmd 在所有匹配 pattern 的行執行 cmd;:v/pattern/cmd 則在不匹配的行執行。配合偏移量可實現複雜編輯:

:g/^function/+1,/^end/-1 s/old/new/g
" 在每個 function...end 塊內部(排除首尾行)替換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved