2012-04-23 147 views
4

我有一個正則表達式是這樣的:Vim的搜索和替換查詢

:%s/pattern/  pattern/gc 

正如你可以替換文本見我想最初8個空白字符。我不想每次輸入八個空格。有沒有更好的方法來做到這一點?

回答

3

如果你保存按鍵後,可以初始化命名寄存器與替換文本:

:let @a = repeat(' ', 8) 

然後,構建替換命令時,您通過CTRL-R + {寄存器插入寄存器內容-name}:

:%s/pattern/<C-R>a&/gc 

進一步簡化,我已經通過&中提到的替換字符串的搜索模式。

+0

謝謝。對我來說似乎是一個合理的解決方案。我可以將註冊初始化代碼放在.vimrc中。我需要這個,因爲我需要在我的代碼中使用8個空格縮進。 – Rakesh 2012-04-23 07:56:34

+0

我曾懷疑過這一點,但我寧願通過'%g/pattern />'來解決這個問題,而不是替換。 PS:不要忘記接受答案 – 2012-04-23 08:12:19

+0

@RakRaks你的意思是你需要在整個代碼中使用8個空格的縮進,而不僅僅是偶爾的8個空格縮進?如果是這樣,有更好的方法讓vim來幫助你。 – 2012-04-24 02:24:35

3

可以使用printf('%*s', 8, '')

甲字段寬度或精度,或兩者,可以通過asterisk '*'代替數字串來指示。在這種情況下,Number參數提供字段寬度。

:%s/pattern/\=printf('%*spattern', 8, '')/gc 
1

,你可以通過輸入numberbefore的命令,例如重複一些的vi命令: 8iA 會插入8 A的(所以請更換與空間)。