我正在尝试将Unicode代码的多个示例转换为相应的字符。
我有一些文本格式如下:
U+00A9
我想在它旁边生成以下内容:
版权所有
我试过在可视化模式下选择代码,并在命令模式下使用选择范围'〈,'〉作为i_CTRL_V的输入,但我不知道如何在命令中使用特殊键。
我没有在使用手册中找到任何有用的:help命令模式。我可以用其他工具解决这个问题,但我想提高我的vim知识。任何提示都很感激。
编辑:正如@m_mlvx所指出的,我的目标是可视化地选择,然后运行一些命令来查找Unicode并进行替换。手动输入:s/U+00A9/U+00A9 ©/g
这样的替换不是我感兴趣的,因为它需要手动输入每个替换的特殊字符。
3条答案
按热度按时间aoyhnmkz1#
任何提示都是感激不尽的。
这里有很多...
:help i_ctrl-v
与插入模式有关,而范围在命令行模式中很重要,因此:help command-mode
完全无关。1.当它们处理文本时,Ex命令只对 * 行 * 起作用,而不是任意文本。这使得像
'<,'>
这样的范围在这种情况下无关紧要。:help i_ctrl-v_digit
(链接自:help i_ctrl-v
)后,我们可以得出结论,它应该用于:u
,所以这两个都应该是正确的:
U+00A9
,因此,即使您设法“捕获”了U+00A9
,您也无法按原样使用它:首先必须对它进行消毒。2我会用一个替换,但是,取决于你最后想如何使用这个值,可能有几十种方法:说明:
\(\a\)
捕获字母字符。+
与文字+
匹配。\(.*\)
捕获其余部分。\L
将其后的所有内容小写。\1\2
会重复使用上述两个撷取群组。您可以执行以下操作:
说明:
v<motion>
可视地选择<motion>
覆盖的文本。y
会将它硬拉到“未命名的寄存器”@"
。:help feedkeys()
是一种低级的方法,用于将一系列复杂的字符发送到Vim的输入队列。它允许我们在执行宏之前以编程方式构建宏。'>
将光标移动到可视选择的末尾。a
在光标后启动插入模式。<C-v>
+替换的输出将插入相应的字符。不过,这段代码需要转换成Map。
f45qwnt82#
如果你只想将unicode转换成相应的字符,你可以使用这样的nr2char函数:
简要说明
如果您想在文本旁边使用unicode字符,则需要稍微修改右侧(使用
submatch(0)
获得完全匹配,使用.
进行追加)fcg9iug33#
如果有人想知道如何编写替换命令:
正则表达式为:
然后替换为以下项的(
:h sub-replace-expression
)串联:这将在可视/命令模式下执行,并在选定线范围内工作