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

vi 編輯器進階實戰指南(下):高效編輯與檔案級操作

     編輯:關於C

承接上篇基礎操作,本文深入講解 vi 的多次操作命令、命令列模式、檔案級讀寫與多檔案編輯技巧,助你從「會用」邁向「精通」。

第五步:多次操作命令 —— 效率倍增器

語法:[次數][命令]。例如:

  • 50dd:一次刪除 50 行,替代連按 50 次 dd。
  • 50yy:複製當前行以下 50 行。
  • 2cw:修改光標起始的 2 個單字(如將 hello myself 改為 hi world)。

超過 2-3 次重複操作時,務必使用此語法,擊鍵數可減少 90% 以上。

第六步:命令列模式 —— 絕對與相對定位

輸入 : 進入命令列,支援行號範圍操作:

命令說明
:2,3d刪除第 2 至 3 行(絕對)
:.,+1d刪除當前行至下一行(相對)
:+1,+2d刪除下一行至再下一行
:2,$d刪除第 2 行至檔案末尾($ 表末行)
:1,$s/hello/hi/g全檔替換 hello 為 hi

查看當前行號:Ctrl-g 顯示 The cursor is at line 1 of 3。

經驗法則:20 行內用相對法,大量刪改用絕對法。

第七步:檔案級讀寫 —— 跨檔案複製函數

場景:將 a.c 中的 open_deal 函數複製到 b.c。

vi a.c
/open_deal          # 搜尋函數名
n                   # 定位到函數起始
Ctrl-g              # 記錄起始行號(如 243)
G                   # 跳至函數末尾
Ctrl-g              # 記錄結束行號(如 343)
:243,343w open.c    # 將區塊寫入 open.c
:q!
vi b.c
G                   # 移至欲插入位置
:r open.c           # 讀入 open.c 內容
:x!

核心指令:n1,n2w filename 寫入區塊,r filename 讀入檔案。

多檔案並行編輯

vi *.c              # 一次開啟所有 .c 檔
/open_deal          # 在第一個檔搜尋
:n                  # 切換下一個檔案
/open_deal          # 繼續搜尋,直到找到

:n 切換緩衝區,配合搜尋可快速定位分散在多檔的函數。

vi 命令速查表(精華版)

進入/退出

vi file       編輯單檔
vi *.c        編輯多檔
:q            未修改時退出
:q!           強制放棄修改退出
:x / :wq      存檔退出
:x!           強制存檔退出

編輯修改

i / I         當前字符前/行首插入
a / A         當前字符後/行尾插入
o / O         當前行下/上方新增行
r             替換單一字符
cw            修改當前單字
x             刪除當前字符
dd            刪除當前行
u             撤銷上一步操作

複製貼上

yy            複製當前行
p             貼上到下一行

游標移動

:1 / 1G       檔案首行
G             檔案尾行
.             當前行
+n            當前行往下 n 行
Ctrl-g        顯示行號資訊
n[命令]       重複命令 n 次

搜尋替換

/pattern      向下搜尋
n             下一個匹配
:n1,n2s/s1/s2/g  區間全域替換

檔案操作

:n1,n2 w f    區塊寫入檔案 f
:r f          讀入檔案 f 到當前行下

編輯功力的量化標準:擊鍵數最少

同樣結果,擊鍵越少代表命令選擇越精準。例:

  • 行尾加字:Ahello<Esc>(7 鍵)優於移動游標再插入(57 鍵)。
  • 修改單字:D+A(16 鍵)優於逐字刪改(25 鍵)。

盲打速度與命令精準度同樣重要,優秀工程師編輯如行雲流水,停頓不超 2 秒。

結語

vi 與 C 語言、Unix 共生共長,是劈開程式碼硬柴的利刃。掌握這 7 步驟,編輯層面幾乎無懼任何 C 專案。精通無終點,但每一次擊鍵優化,都是向大師邁進的一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved