Regular-Expression
vi 搜尋範圍和替換
我在不允許我使用這些方法
vi
的 Tru64 系統上使用。\1
這麼簡單的問題我找不到答案:
您如何將搜尋(範圍)與替換連接起來?看起來像這樣的東西,但它不起作用:
:/^group/s/\w$/Test/
對於那些感興趣的人,我試圖這樣做
\1
::%s/\(group\s\+\)\w/\1Test/
這裡的主要問題是使用速記符號
\w
和\s
. 如果編輯器是(Bill Joy 的原始來源)的傳統實現vi
,那麼可能還需要設置magic
在大多數現代實現中預設設置的選項vi
。這是用:set magic
.
vi
不理解\w
和\s
類似的各種字元類的速記符號vim
。要在 中進行替換
vi
,請使用:%s/^\(group[ ][ ]*\)[0-9A-Za-z_]/\1Test/
根據文件,對應於並且
vim
是空格或製表符(上面都有空格和製表符)。\w``[0-9A-Za-z_]``\s``[ ]
E+
模式,其中是E
一些表達式,可以替換為EE*
。替換的
\1
替換部分應該在vi
(anyvi
) 中工作。如果沒有,請嘗試nvi
(“newvi
”) 或查看是否能夠安裝vim
.原始文件(至少在某些 BSD 系統上
vi
打包)需要對其“特殊字元”(除了和)進行轉義,例如等。或者,您可以設置選項(這通常是現代實現中的預設設置)。traditional-vi``^``$``\*``\.``magic``:set magic``vi
上述替換將替換所有出現的(例如)
group 1
和
group Test
做同樣事情的另一種方法是:
:g/^group/s/[0-9A-Za-z_]$/Test/
要不就
:g/^group/s/.$/Test/
如果您不需要對行中的最後一個字元過於小心。
如果您想替換該行的最後一個單詞(而不僅僅是最後一個字元):
:g/^group/s/[^ ]*$/Test/
在傳統
vi
的沒有magic
選項集的情況下,這可能必須寫成:g/^group/s/\[^ ]\*$/Test/