web-dev-qa-db-ja.com

viで16進または8進コードを使用して非ASCII文字を入力する方法

追記用のゴルフライブラリを書こうとしています。しかし、それ自体を凝縮する必要があります。したがって、ほとんどASCII文字で任意のバイトを入力する便利な方法が必要です。

これは絶対にどんなプログラミング言語でも簡単に実行できることはわかっていますが、viで実行できますか? (:help octalは役に立ちませんでした)。

編集:これが結果の postscript用のゴルフライブラリ です。幸いにも、ライブラリ自体をゴルフするのは愚かな考えであり、それをしなかったことに早くから気付きました。

36
luser droog

vimを使用すると思います。 :helpoctalはvimのコマンドです。一部のシステムでは、vivimへのシンボリックリンクであり、vi互換モードで実行されます。

Vimの場合:

  • 使用できる基本的な多言語プレーンからUnicode文字を入力できます。
    押す ctrl+v 次に、4桁の16進ユニコードコードを入力します。
  • 別のオプションは、ダイグラフです。それらの詳細については、vimのヘルプ(help: Dig)。
    押す ctrl+k 次に2文字のシーケンス。
    サポートされているシーケンスをリストすることができますvim usigコマンド:digraph

Nvi、vi、その他の場合:

  • Ctrl+Shift そしてヒット U 次に、ユニコードの16進コードを入力します。
17
Alex Bolotov
:help i_CTRL-V_digit

挿入モードで、次のように入力します Ctrl+V に続く

  • 10進数(0-255)
  • o次に8進数(o0-o377、つまり255が最大値)
  • x次に16進数(x00-xFF、つまり255が最大値)
  • u次に、4-hexchar Unicodeシーケンス
  • U次に、8 hexchar Unicodeシーケンス

10進数と8進数は3桁に制限されています。 100未満の10進数には、先行ゼロが含まれる場合があり、無視されます。 100未満の8進数10月 (つまり、64)には先行ゼロが含まれる場合がありますが、必須ではありません。 100以上の8進数10月 可能性がありますnot先頭のゼロを含めます(ただし、先頭に o あなたがしたい場合は)。

その基数に対して有効な数字ではない文字を入力することにより、数値を終了できます。例えば、

  • Ctrl+V 65A
  • Ctrl+V 65BAb
  • Ctrl+Vo 41!
  • Ctrl+Vo 419!9

通常(1オクテット)の16進数は2桁に制限されています。上記と同様に、基数文字を繰り返すことができます(例:Ctrl+Vuu 41A)(16進コードで指定された文字の場合)。 oxは大文字と小文字を区別しません。

68
Alan