gpt4 book ai didi

special-characters - 如何在 Vim 脚本中使用 '^@'?

转载 作者:行者123 更新时间:2023-12-01 10:12:28 25 4
gpt4 key购买 nike

我正在尝试解决在 Vim 脚本中使用 ^@(即 <ctrl-@> )字符的问题。我可以将它们插入到脚本中,但是当脚本运行时,该行似乎在 ^@ 所在的位置被截断了。

到目前为止,我的笨拙解决方案是将 ^@ 存储在变量中,然后每当我引用文字 ^@ 时在脚本中引用该变量。有人能告诉我这里发生了什么吗?有没有更好的方法来解决这个问题?

最佳答案

这就是我从不在脚本中使用原始特殊字符值的原因之一。虽然 ^@不起作用,字符串 <C-@>在映射中按预期工作,因此您可以使用其中之一

nnoremap <C-@> {rhs}
nnoremap <Nul> {rhs}

很奇怪,但你不能使用 <Char-0x0>这里。关于字符串中空字节的一些注意事项:
  • 将空字节插入字符串会截断它:vim 使用以空字节结尾的旧 C 样式字符串,因此它不能出现在字符串中。这些字符串非常低效,因此如果您想生成一个非常大的文本,请尝试将其累加到行列表中(使用 setline 非常快,因为缓冲区表示为行列表)。
  • 大多数返回字符串列表(如 readfilegetline(start, end) )或获取字符串列表(如 writefilesetlineappend )的函数处理 \n (NL) 为空。也是缓冲线的内部表示,见:h NL-used-for-Nul .
  • 如果您尝试插入 \n字符进入命令行,你会得到 Null 显示(但这实际上是一个换行符)。如果要编辑具有 \n 的文件在文件名中(在 *nix 上是可能的),您需要在换行符前加上反斜杠。
  • 关于special-characters - 如何在 Vim 脚本中使用 '^@'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187499/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com