vi에서 16 진 또는 8 진 코드를 사용하여 ASCII가 아닌 문자를 입력하는 방법


33

포스트 스크립트 용 골프 라이브러리를 작성하려고합니다. 그러나 자체 압축해야합니다. 따라서 대부분 ASCII 텍스트 내에서 임의의 바이트를 입력하는 편리한 방법이 필요합니다.

나는 이것이 절대적으로 모든 프로그래밍 언어로 쉽게 수행 할 수 있다는 것을 알고 있지만 vi에서 할 수 있습니까? ( :help octal도움이 없었습니다).

편집 : postscript에 대한 결과 골프 라이브러리는 다음과 같습니다 . 다행히도, 나는 그 자체로 골프를 치는 것이 어리석은 아이디어라는 것을 일찍 깨달았고 나는 그렇게하지 않았다.


7
Vim을 사용할 수 있다면 도움 될 것입니다
sr_

답변:


15

vim의 명령 vim이기 때문에을 사용한다고 가정합니다 . 일부 시스템 에서는 vi 호환 모드로 실행 되는 심볼릭 링크 일뿐 입니다. :helpoctalvivim

vim에서 :

  • : 당신은 당신이 사용할 수있는 기본 다국어 평면에서 유니 코드 문자를 입력 할 수 있습니다
    를 눌러 ctrl+를 v누른 다음 4 자리 진수 유니 코드를 입력합니다.
  • 또 다른 옵션은 digraphs입니다. vim도움말 ( help: dig) 에서 자세한 내용을 읽을 수 있습니다 . + 를 누른 다음 두 문자 시퀀스를
    누르십시오 . vim usig 명령에서 지원되는 시퀀스를 나열 할 수 있습니다 .ctrlk
    :digraph

nvi, vi 및 다른 곳에서 :

  • Ctrl+ Shift와 히트 U다음과 유니 코드 16 진 코드를 입력합니다.

3
나는 그 뒤에 10 진수Ctrl+V 를 입력하기위한 것이라고 생각합니다x

3
@Carlos가 맞습니다. 이 답변은 잘못되었습니다. 앨런의 대답은 맞습니다.
malan

60
:help i_CTRL-V_digit

삽입 모드에서 Ctrl+를 입력 한 V다음

  • 십진수 (0-255)
  • o 8 진수 (o0-o377, 즉 255가 최대 값임)
  • x 16 진수 (x00-xFF, 즉 255는 최대 값)
  • u 그런 다음 4 진수 문자 유니 코드 시퀀스
  • U 8- 헥사 문자 유니 코드 시퀀스

10 진수와 8 진수는 3 자리로 제한됩니다. 100보다 작은 10 진수는 선행 0을 포함 할 수 있으며 무시됩니다. 100 oct 보다 작은 8 진수 (즉, 64)는 선행 0을 포함 할 수 있지만 필수는 아닙니다. 100 옥텟 보다 크거나 같은 8 진수 에는 앞에 0이 포함 되지 않을 수 있습니다 (그러나 o원하는 경우 앞에 숫자를 입력 할 수 있음 ).

해당 기수에 유효한 숫자가 아닌 문자를 입력하여 숫자를 종료 할 수 있습니다. 예를 들어

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

정규 (1 옥텟) 16 진수는 두 자리로 제한됩니다. 위와 같이 16 진 코드로 지정된 문자에 대해 기수 문자 (예 : Ctrl+ Vuu0041 →  A)를 반복 할 수 있습니다  .  o 와  x소문자를 구분하지 않습니다.


팁을 더 추가하려면 십진수는 0-255 사이 여야합니다. x00-xFF 사이의 16 진수입니다.
wisbucky 2016 년

ascii esaple은 ctrl + v x1b(아스키 색상 시퀀스)
ThorSummoner

1
Windows에 있고 Ctrl + V를 붙여 넣기로 다시 매핑 한 경우 삽입 모드에서 Ctrl + Q를 대신 사용할 수 있습니다. 참조 stackoverflow.com/questions/426896/...
크리스 R. 도넬리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.