Як вводити символи, що не входять до списку, використовуючи шістнадцятковий або восьмеричний коди in vi


33

Я намагаюся написати бібліотеку для гольфу для постскрипту. Але це потрібно самому конденсувати. Тому мені потрібен зручний спосіб для введення довільних байтів у тексті здебільшого ascii.

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

Редагувати: Ось отримана бібліотека для гольфу для постскрипту . На щастя, я зрозумів рано, що гольф у бібліотеці сама дурна ідея, і я цього не робив.


7
Якщо Vim доступний, це може допомогти
sr_

Відповіді:


15

Я припускаю, що ви використовуєте vim, тому що це команда vim. У деяких системах є лише символьне посилання, до якого він працює в режимі сумісного з vi. :helpoctalvivim

In vim:

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

У nvi, vi та інших місцях:

  • Ctrl+ Shiftі натисніть, Uа потім введіть шістнадцятковий код unicode.

3
Я думаю, що Ctrl+Vце для введення десяткових цифр, якщо їх не дотримуєтьсяx

3
@Carlos правильний. Ця відповідь неправильна. Відповідь Алана правильна.
малан

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 в режимі Insert замість нього. Дивіться stackoverflow.com/questions/426896/…
Кріс Р. Доннеллі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.