Как вводить не-ascii символы, используя шестнадцатеричные или восьмеричные коды в vi

33

Я пытаюсь написать библиотеку для игры в гольф для postscript. Но это должно быть сжато само по себе. Поэтому мне нужен удобный способ ввода произвольных байтов в основном тексте ascii.

Я знаю, что это легко сделать абсолютно любым языком программирования, но могу ли я сделать это в vi? ( :help octalне помогло).

Редактировать: вот итоговая библиотека для игры в постскриптум . К счастью, я рано понял, что играть в гольф в самой библиотеке - глупая идея, и я этого не делал.

Люзер Дрог
источник
7
Если Vim доступен, это может помочь
sr_ 13.01.13
связанные: unix.stackexchange.com/questions/108020/…
luser droog

Ответы:

15

Я предполагаю, что вы используете vim, потому что это команда vim. На некоторых системах это просто символическая ссылка, по которой он запускается в vi-совместимом режиме. :helpoctalvivim

В VIM:

  • Вы можете вводить символы Юникода из базовой многоязычной плоскости, которую можете использовать:
    Нажмите ctrl+, vа затем введите четырехзначный шестнадцатеричный код Unicode.
  • Другой вариант - орграфы. Вы можете прочитать больше о них в vimсправке ( help: dig).
    Нажмите ctrl+, kа затем двухсимвольную последовательность.
    Вы можете перечислить последовательности, поддерживаемые в вашей команде vim usig :digraph.

В nvi, vi и в других местах:

  • Ctrl+ Shiftи нажмите, Uа затем введите шестнадцатеричный код Unicode.
Алекс Болотов
источник
3
Я думаю, что Ctrl+Vдля ввода десятичных цифр, если не следуютx
3
@ Карлос прав. Этот ответ неверен. Алан ответ правильный.
Малан
60
:help i_CTRL-V_digit

В режиме вставки введите Ctrl+, Vа затем

  • десятичное число (0-255)
  • o затем восьмеричное число (o0-o377, т. е. 255 - максимальное значение)
  • x затем шестнадцатеричное число (x00-xFF, т. е. 255 - максимальное значение)
  • u затем 4-шестнадцатеричная последовательность Unicode
  • U затем 8-шестнадцатеричная последовательность Unicode

Десятичные и восьмеричные числа ограничены тремя цифрами. Десятичные числа меньше 100 могут включать начальные нули, которые игнорируются. Восьмеричные числа меньше 100 окт (то есть 64) могут включать начальные нули, но они не обязательны. Восьмеричные числа, большие или равные 100 окт, могут не включать начальные нули (но вы можете ввести ведущий, oесли хотите).

Вы можете завершить число, введя символ, который не является допустимой цифрой для этого радиуса. Например,

  • Ctrl+ V    065 →  A.
  • Ctrl+ V    65B →  Ab.
  • Ctrl+ Vo041 →  !.
  • Ctrl+ Vo419 →  !9.

Обычные (однооктетные) шестнадцатеричные числа ограничены двумя цифрами. Как и в предыдущем случае, вы можете повторить радикальный символ (например,  Ctrl+ Vuu0041 →  A) для символов, указанных шестнадцатеричными кодами.  o и  xне чувствительны к регистру.

Алан
источник
Чтобы добавить еще несколько советов: десятичное число должно быть между 0-255. Шестнадцатеричное число между x00-xFF.
wisbucky
ascii esaple - ctrl + v x1b(для цветовых последовательностей ascii)
ThorSummoner
1
Напоминание о том, что если вы находитесь в Windows и переназначаете Ctrl + V для вставки, вы можете использовать вместо него Ctrl + Q в режиме вставки. См. Stackoverflow.com/questions/426896/…
Крис Р. Доннелли