Vim 轉義非 ASCII 值進行貼上

Vim 轉義非 ASCII 值進行貼上

我正在嘗試從 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')

相關內容