Vim 转义非 ASCII 值以进行粘贴

Vim 转义非 ASCII 值以进行粘贴

我正在尝试从 VIM 中的寄存器中粘贴一个字符串,该字符串包含非 ASCII 字符,例如Ctrlr,我怎样才能将该字符串粘贴到文件中,但自动转义非 ASCII 字符?

本质上,我想要实现的是录制一个包含一些 (非 ASCII) 字符的宏,例如CtrlW哪个 vim 将显示为 ^W。我希望能够获取该宏(通过检查寄存器并获取宏字符串(即 @a=^W))并将其作为键映射复制到 .vimrc 文件中,这样当我按下该键时它就会运行该宏。

我希望自动(或尽可能快地)执行此操作,而不必CtrlW在 .vimrc 文件中或粘贴到的任何地方将 ^W 更改为。

答案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')

相关内容