Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Vim 字串替換指令完整指南:從基礎到進階用法

編輯:Linux 教學

在 Vi/Vim 編輯器中,:s 命令是處理字串替換的核心工具。雖然許多使用者僅熟悉全文替換的基本語法,但其實這個命令擁有極為豐富的變化,能應對各種複雜的編輯場景。本文系統整理了常用的替換模式,並附上實用技巧,供日後快速查閱。

基本替換語法結構

核心格式為::範圍s/搜尋字串/替換字串/標誌

  • 範圍:指定操作的行數(如 . 當前行、% 全文、n,$ 第 n 行到尾行)。
  • 標誌:最常用的是 g(global,全行替換),若省略則僅替換每行首次出現的目標。

常見替換場景速查表

1. 單行操作

:s/vivian/sky/         # 替換當前行第一個 "vivian" 為 "sky"
:s/vivian/sky/g        # 替換當前行所有 "vivian" 為 "sky"

2. 指定行範圍操作

:n,$s/vivian/sky/      # 從第 n 行到尾行,每行替換第一個
:n,$s/vivian/sky/g     # 從第 n 行到尾行,每行全部替換
# 若 n 為 ".",表示從當前行開始

3. 全文操作(% 代表全文)

:%s/vivian/sky/        # 全文每行替換第一個
:%s/vivian/sky/g       # 全文所有 "vivian" 替換為 "sky"
# 等同於 :g/vivian/s//sky/ 及 :g/vivian/s//sky/g

4. 自訂分隔符(避免路徑含 / 時衝突)

可使用 #、+ 等非字母數字字元作為分隔符:

:s#vivian/#sky/#       # 將 "vivian/" 替換為 "sky/"
:%s+/oradata/apras/+/user01/apras1+  # 使用 + 分隔,替換路徑

進階技巧:刪除 Windows 換行符 (^M)

將 Windows 檔案(CRLF,即 0D0A)移至 Linux(LF,0A)時,常殘留 ^M(0D)。以下方法可移除:

  • Vim 內部::%s/^V^M//g (輸入時需按 Ctrl+V 再按 Ctrl+M)
  • 命令列工具:
    tr -d "\r" filename > newfile
    tr -d "\015" filename > newfile
    sed 's/\r//g' filename > newfile

替換命令中 "g" 的三種位置含義

位置語法範例含義
命令尾部:s/old/new/g該行所有匹配項替換
命令首部:g/old/s//new/全文所有包含 old 的行執行替換
無 g:s/old/new/每行僅替換首次出現

掌握這些模式,能大幅提升在 Vim 中處理文字、程式碼、設定檔的效率。建議實際操作練習,將常用組合內化為肌肉記憶。

Copyright © Windows教程網 All Rights Reserved