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

vi 編輯器進階實戰:多重操作、命令列模式與檔案級編輯技巧

     編輯:關於C語言

前言

承接上篇,我們繼續深入探討 vi 編輯器在 C 語言開發中的進階應用。掌握這些技巧能讓你的編輯效率質變,真正體會「工欲善其事,必先利其器」的道理。

第五步:善用多重操作命令

vi 為了避免重複操作,設計了「操作次數 + 操作命令」的語法,極大提升編輯效率。這不只是偷懶,更是專業程式設計師的基本素養。

實戰範例

  • 刪除 50 行:輸入 50dd 即可,比連按 50 次 dd 快得多。
  • 複製當前行以下 50 行:輸入 50yy,移動游標至目標位置,按 p 貼上。這在複製迴圈、函式結構時極其實用——能否一眼看出要複製幾行,直接關係到編輯流暢度。
  • 單詞級修改:將 hello myself 改為 hi world,游標停在 hello,輸入 2cw 後輸入新內容。2 表示修改兩個單詞,cw 是 change word。

超過 2-3 次的重複操作,務必使用多重命令,這是效率分水嶺。

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

輸入 : 進入命令列(螢幕最底行),這裡能執行更強大的範圍操作。

行刪除的五種方法

假設檔案內容:

Hello world
Hello myself
Hello c

游標在第一行,要刪除第 2-3 行:

  1. 一般模式:移至第 2 行,dddd(或 2dd)。
  2. 絕對刪除::2,3d —— 直接指定行號範圍。
  3. 相對刪除(當前行為基準):移至第 2 行,:.,+1d —— . 表當前行,+1 表下一行。
  4. 相對刪除(從其他行為基準):游標在第一行,:+1,+2d —— 刪除第 1 行之後的第 1-2 行。
  5. 刪除到檔尾::2,$d —— $ 代表最後一行,超實用。

心法:20 行內用相對法(快、直觀),大量刪除用絕對法(精準)。不知當前行號?按 Ctrl-g 即可顯示「The cursor is at line 1 of 3 — 33%」。

全域取代

:1,$s/hello/hi/g —— 從第 1 行到檔尾,搜尋 hello 全部(g)替換為 hi。記法:s = substitute,g = global。

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

當專案增大,需要在檔案間移植函式時,vi 的 w(寫入)與 r(讀入)命令大放異彩。

範例:將 a.c 的 open_deal 函式複製到 b.c

  1. vi a.c
  2. /open_deal 搜尋函式名
  3. n 定位到確切行
  4. Ctrl-g 記下起始行(如 243)
  5. 移至函式結尾,Ctrl-g 記下結束行(如 343)
  6. :243,343w open.c 將該區塊寫入新檔
  7. q! 離開
  8. vi b.c,移至欲插入位置
  9. :r open.c 讀入檔案內容到游標下方
  10. :x! 存檔離開

核心邏輯:n1,n2w filename 寫入區塊,r filename 讀入檔案。也常用於整個檔案讀入後修改。

多檔案同步搜尋

目錄下有 a1.c~b3.c 六個檔,記得有 open_deal 但不知在哪:

vi *.c
/open_deal
:n          " 切換到下一個檔案
/open_deal  " 繼續搜尋
...直到找到

關鍵:vi *.c 一次開啟所有 .c 檔,:n 切換下一個。找到後可用 w 存成獨立檔備用。

vi 命令速查表

進入與離開

  • vi file / vi *.c
  • :q :q! :x :x!

增刪改查

  • 插入:i I a A o O
  • 修改:r cw s
  • 刪除:x dd
  • 搜尋:/ n
  • 復原:u

複製貼上

  • yy 複製行,p 貼上

游標移動與行號

  • 方向鍵、:1 首行、G 尾行、. 當前行、+n 向下 n 行、Ctrl-g 顯示行號、n命令 重複 n 次

取代、讀寫檔案

  • :n1,n2s/str1/str2/g 區域取代
  • :n1,n2 w file 區域寫入、:r file 讀入

編輯工具的掌握境界:以擊鍵數衡量效率

程式設計師不該滿足於「會用」,要追求「用好」。衡量標準:相同編輯結果,擊鍵數最少者勝。

經典對比

案例 1:行首游標,行尾加 hello(行長 50 字元)

  • 法一:移動 50 次 → i → 輸入 5 字 → Esc = 57 鍵
  • 法二:A → 輸入 5 字 → Esc = 7 鍵(A 專為行尾插入設計)

案例 2:this is a new world → this is a cat,游標在行首

  • 法一:字元級刪改 = 25 鍵
  • 法二:2cw 詞組修改 = 18 鍵
  • 法三:D 刪至行尾 → A 接續輸入 = 16 鍵(最優)

擊鍵少 = 命令選擇精準 = 編輯流暢 = 騰出時間給設計與除錯。這就是專業與業餘的分水嶺。

基本功:盲打與行雲流水

編輯速度應接近語速,無明顯停頓(< 2 秒)。單手單指「一指禪」不可取。優秀工程師的編輯像行雲流水,一氣呵成,程式碼自然湧現。

結語

vi 與 C 語言在 Unix 上相依相伴,如快刀斬亂麻。每次 yy 複製歷經驗、dd 刪除當下煩惱,一切歸於原點,不得不嘆服設計者的巧思。願這七步曲能成你掌握 vi 的階梯,也算是我對 vi 設計者的一份致敬。

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