Często używam Programming Puzzle i Code-golfa . Wielu użytkowników tam napisało niestandardowe języki wyłącznie do gry w golfa. Teraz nawet pracuję sam. Wiele z tych języków ma własne niestandardowe kodowania, dzięki czemu mogą wycisnąć więcej poleceń w jednym bajcie. Na przykład poważnie , galaretka i 05AB1E .
Czy mogę skonfigurować vima do używania własnego niestandardowego kodowania? Chciałbym skonfigurować mapowanie bajtów na punkty kodowe Unicode. Na przykład:
0x01 == "¢"
Następnie, gdy piszę <C-v><C-a>
, wyświetla ¢
znak, a kiedy piszę, zapisuje bajt 0x01
.
Czy to w ogóle możliwe? A także, czy to zadziała dobrze ze schowkiem systemowym? (np. mogę kopiować i wklejać z mojej przeglądarki do vim i vice versa)
:help conceal
.encoding
icharconvert
zobaczyłem, że wewnętrznie próbujeiconv
najpierw użyć funkcji do konwersji zestawów znaków.iconv
obsługuje konwersję między różnymi zestawami znaków. Odpowiedź na temat dodawania zestawu znakówiconv
można znaleźć tutaj (wygląda na to, że musisz wysłać opiekunowi pocztą). Może to ci pomoże. :)Odpowiedzi:
Jak sugeruje romainl, możesz to osiągnąć dzięki
conceal
funkcji vim.Oto przykładowy skrypt, którego można użyć:
Jak widać, wziąłem poważnie mapowanie i twój
^A
przykład. Ostrożnie, jeśli chcesz skopiować / wkleić ten kod, musisz^A
go wpisać<C-v>
<C-A>
.Co ten kod robi to, to określenie dla każdego
value
/display
powiązać dopasowanie składni.na przykład
Dopasuje każdą
08
sekwencję i plik i ukryje je ze◘
znakiem.Będziesz zobaczyć
◘
, ale rzeczywisty tekst w pliku jest08
.Następnie możesz wziąć listę reguł i (z fantazyjnym makrem, tj. Poważnie:)
0i\ ['^[f s', '^[lxf)s'],^[ld$
przekształcić każdą linię w użyteczną tablicę vim.Ponadto, jeśli chcesz wpisać dosłowne Unicode za pomocą vima, możesz użyć tego przepływu pracy:
Gdzie
XXXX
jest wartość Unicode, więc pisanie<C-V>u0001
będzie wstawiane^A
zgodnie z potrzebami.Jeśli chcesz zweryfikować zawartość pliku, zalecam użycie zrzutu heksadecymalnego pliku, który możesz mieć przy pomocy xxd .
na przykład
Można zobaczyć tutaj swoje
^A
jak01
i twój^B
jak02
. (0a
reprezentuje nowy wiersz na końcu pliku)źródło