我正在嘗試從 VIM 中的暫存器貼上字串,其中包含非 ASCII 字符,例如Ctrlr,如何將此字串貼到文件中,但自動轉義非 ASCII 字元?
本質上,我想要實現的是記錄一個包含一些(非ascii)字元的宏,例如CtrlWvim將顯示為^W。我希望能夠獲取巨集(透過檢查暫存器並獲取巨集字串(即 @a=^W))並將其作為鍵盤映射複製到 .vimrc 檔案中,以便當我按下該鍵時將運行該巨集。
我想自動(或盡可能快)執行此操作,而不必將 ^W 更改為CtrlW.vimrc 檔案中的內容,或貼上到任何地方。
答案1
首先,控制序列 在 ASCII 範圍內(^W
是代碼點 23)但它們是所謂的無法列印的人物。您可以將這些逐字貼到您的~/.vimrc
檔案中(只要您使用 Vim 暫存器,而不是終端選擇和貼上);不需要轉義。 (可能只有 和 有問題^J
,^M
取決於您的文件格式~/.vimrc
。)
也就是說,這裡有一個簡單的替換,可以轉義這些控制序列:
:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')