vi(m) 中是否有一種方法可以針對文件中的特定行進行字串替換?
我需要經常將 SSL SHA 指紋從 Web 伺服器新增到我的 Mercurial .hgrc。我可以透過雙擊掛鎖並查看證書詳細資訊輕鬆地從 Chrome 獲取所需的簽名,但我得到的簽名帶有空格分隔符,而不是 Mercurial 所需的冒號分隔符
06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90
範例來自Google程式碼。
有沒有辦法:
- 將所述指紋複製到我的剪貼簿
- 使用 vi(m) 編輯我的 .hgrc
- 進入插入模式貼上所述指紋
只瞄準那條線
:s/ /:/g
儲存檔案
現在我可以將指紋貼到新檔案中,進行替換,然後使用 a 將其拉入我的 .hgrc:r 檔名,但這是一個額外的步驟,我不介意跳過。
答案1
弄清楚了:
將遊標移至要修改的行,然後執行下列操作:
.s/ /:/g
這 '。替換指令前面告訴 vi(m) 您只想修改目前行。
參考:http://www.kingcomputerservices.com/unix_101/search_and_replace_with_vi_part_1.htm
答案2
如果你想將其插入到第 N 行之後:
:N put =substitute(@+, ' ', '', 'g')
文件結束:N=$ ;文件開頭:N=0。 @+ 是剪貼簿暫存器(當 GUI 運作時)。
答案3
簡單:s/ /:/g
就可以了。
預設情況下,該:substitute
命令僅適用於目前行。
全域修飾符/g
意味著取代指定範圍內的所有符合項,而不是整個檔案。
答案4
你打算這樣做嗎?
echo "06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90" >> <filename>