如何在vi中使用十六进制或八进制代码输入非ascii字符

lus*_*oog 50 vim binary

我正在尝试为 postscript 编写一个高尔夫库。但它需要自己浓缩。所以我需要一种方便的方法来在大多数 ascii 文本中输入任意字节。

我知道这可以使用任何编程语言轻松完成,但我可以在 vi 中完成吗?(:help octal没有帮助)。

编辑:这是postscript生成的高尔夫库。幸运的是,我很早就意识到在图书馆打高尔夫球本身就是一个愚蠢的想法,而我并没有那样做。

小智 97

:help i_CTRL-V_digit
Run Code Online (Sandbox Code Playgroud)

在插入模式下,键入Ctrl+V后跟

  • 十进制数 (0-255)
  • o 然后是一个八进制数(o0-o377,即255是最大值)
  • x 然后是一个十六进制数(x00-xFF,即255是最大值)
  • u 然后是一个 4-hexchar Unicode 序列
  • U 然后是一个 8-hexchar Unicode 序列

十进制和八进制数限制为三位数。小于 100 的十进制数可能包含前导零,这些零被忽略。小于 100 oct(即 64)的八进制数可能包括前导零,但它们不是必需的。大于或等于 100 oct 的八进制数 可能包括前导零(但o如果您愿意,可以键入前导)。

您可以通过键入一个对于该基数不是有效数字的字符来终止数字。例如,

  • Ctrl+ V??? 0? 6? 5???A.
  • Ctrl+ V??? 6? 5? B???Ab.
  • Ctrl+ V? o? 0? 4? 1???!.
  • Ctrl+ V? o? 4? 1? 9???!9.

常规(一个八位字节)十六进制数限制为两位数。与上面一样,您可以重复基数字符(例如,  Ctrl+ V? u? u? 0? 0? 4? 1??? A)?对于由十六进制代码指定的字符。  o 并且 x不区分大小写。

  • 提醒一下,如果您在 Windows 中并将 Ctrl+V 重新映射到粘贴,您可以在插入模式下使用 Ctrl+Q 代替它。见 /sf/ask/29882751/ (6认同)

Ale*_*tov 20

我假设您使用vim, 因为是 vim 的命令。在某些系统上只是一个符号链接,在 vi 兼容模式下运行它。 :helpoctalvivim

在vim中:

  • 您可以从您可以使用的基本多语言平面输入 unicode 字符:
    ctrl+v然后输入四位十六进制 unicode 代码。
  • 另一种选择是有向图。您可以在vim的帮助 ( help: dig) 中阅读有关它们的更多信息。
    ctrl+k然后按两个字符的序列。
    您可以列出 vim usig 命令中支持的序列:digraph

在 nvi、vi 和其他地方:

  • Ctrl+Shift并点击U然后输入 unicode 十六进制代码。

  • 我认为 `Ctrl+V` 用于输入 **decimal** 数字,如果后面没有 `x` (4认同)
  • @Carlos 是正确的。这个答案是错误的。艾伦的回答是正确的。 (4认同)