Jak wprowadzać znaki inne niż ascii za pomocą kodów szesnastkowych lub ósemkowych w vi

33

Próbuję napisać bibliotekę golfa dla postscriptum. Ale sam musi się skondensować. Potrzebuję więc wygodnego sposobu na wpisanie dowolnych bajtów w większości tekstu ascii.

Wiem, że można to łatwo zrobić za pomocą dowolnego języka programowania, ale czy mogę to zrobić w vi? ( :help octalnie było pomocy).

Edycja: Oto powstała biblioteka golfa dla postscriptum . Na szczęście wcześnie zdałem sobie sprawę, że sama gra w golfa była głupim pomysłem i tego nie zrobiłem.

luser droog
źródło
7
Jeśli Vim jest dostępny, może to pomóc
sr_

Odpowiedzi:

15

Zakładam, że używasz vim, ponieważ jest to polecenie vima. W niektórych systemach jest tylko dowiązaniem symbolicznym, z którym działa w trybie kompatybilnym z vi. :helpoctalvivim

In vim:

  • Możesz wprowadzać znaki Unicode z podstawowej płaszczyzny wielojęzycznej, której możesz użyć:
    Naciśnij ctrl+, va następnie wprowadź czterocyfrowy szesnastkowy kod Unicode.
  • Inną opcją są digrafy. Możesz przeczytać więcej o nich w vimpomocy ( help: dig).
    Naciśnij ctrl+, ka następnie sekwencję dwóch znaków.
    Możesz wyświetlić listę sekwencji obsługiwanych w poleceniu vim usig :digraph.

W nvi, vi i gdzie indziej:

  • Ctrl+ Shifti naciśnij, Ua następnie wprowadź kod szesnastkowy Unicode.
Alex Bolotov
źródło
3
Myślę, że Ctrl+Vjest to wprowadzanie cyfr dziesiętnych , jeśli nie następujex
3
@Carlos jest poprawny. Ta odpowiedź jest zła. Odpowiedź Alana jest poprawna.
malan
60
:help i_CTRL-V_digit

W trybie wstawiania wpisz Ctrl+, Va następnie

  • liczba dziesiętna (0–255)
  • o następnie liczba ósemkowa (o0-o377, tj. 255 jest wartością maksymalną)
  • x następnie liczba szesnastkowa (x00-xFF, tj. 255 jest wartością maksymalną)
  • u następnie 4-heksarowa sekwencja Unicode
  • U następnie 8-heksarowa sekwencja Unicode

Liczby dziesiętne i ósemkowe są ograniczone do trzech cyfr. Liczby dziesiętne mniejsze niż 100 mogą zawierać zera wiodące, które są ignorowane. Liczby ósemkowe mniejsze niż 100 oct (tj. 64) mogą zawierać początkowe zera, ale nie są wymagane. Liczby ósemkowe większe lub równe 100 oct mogą nie zawierać zer wiodących (ale możesz wpisać wiodące, ojeśli chcesz).

Możesz zakończyć liczbę, wpisując znak, który nie jest poprawną cyfrą dla tej podstawy. Na przykład,

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

Zwykłe (jednooktetowe) liczby szesnastkowe są ograniczone do dwóch cyfr. Tak jak w przypadku powyższego, możesz powtórzyć znak podstawnika (np.  Ctrl+ Vuu0041 →  A) dla znaków określonych przez kody szesnastkowe.  o i  xnie rozróżniają wielkości liter.

Alan
źródło
Aby dodać więcej wskazówek: liczba dziesiętna musi zawierać się w przedziale 0–255. Liczba szesnastkowa między x00-xFF.
wisbucky
ascii esaple to ctrl + v x1b(dla sekwencji kolorów ascii)
ThorSummoner
1
Przypomnienie, że jeśli jesteś w systemie Windows i zamapowałeś Ctrl + V na Wklej, możesz użyć Ctrl + Q w trybie Wstaw zamiast niego. Zobacz stackoverflow.com/questions/426896/…
Chris R. Donnelly