Jak mogę przenieść bajty X do przodu, zaczynając od bieżącej lokalizacji kursora (łącznie z podziałami linii)?
[count]go
może być użyty do przesunięcia X bajtów do przodu od początku bufora. Próbowałem Shift + V, G, [count]go
(zakładając, [count]go
że zacznie się odliczanie od początku mojego wyboru), ale niestety to też nie zadziałało, ponieważ go
zaczyna się odliczanie od początku bufora.
Próbowałem również :set rulerformat=%o
wyświetlić bieżące przesunięcie bajtu (jak sugeruje Przeskok do przesunięcia bajtu i wyświetlanie pozycji jako przesunięcie bajtu ), dodałem liczby w mojej głowie i ostatecznie wydałem [count]go
. To działa, ale nie jest zbyt praktyczne ...
cursor-movement
binary-file
Rob W.
źródło
źródło
Xl
(gdzieX
jest liczba znaków) lub liczby znaków, a następnie strzałki w prawo.Odpowiedzi:
To wyszukiwanie przesuwa 40 znaków (ale nie bajtów) do przodu:
wyszukując dokładnie 40 znaków
\{40}
dowolnego rodzaju (w tym newline (\_.
) i umieszczając kursor na końcu wyszukiwania (/e
). Zobacz: http://vimregex.com/#Non-Greedy ,:help search-offset
i:help \_
Zobacz także
:h 23.4
edycję binarną.Aktualizacja: Na podstawie tej odpowiedzi, oto funkcja, która przeskakuje do przesunięcia bajtu:
Można użyć w następujący sposób:
lub wpisując mapowane mapowanie klawiatury z liczbą:
Jeśli nie użyjesz licznika, poprzedni numer zostanie ponownie użyty. Więc możesz zrobić:
40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
przeskoczyć 40, 40, 40, 30, 30 bajtów itp.Naciśnij,
Ctrl-O
aby przeskoczyć do tyłu (patrz komentarze wewnątrz funkcji).źródło
[count]go
procesu za pomocą funkcji vim (odczyt aktualnego przesunięcia bajtu, dodaj żądaną liczbę,go
tam).[count]go
i twoją metodą: 1)[count]go
dodaje element do listy skoków, dzięki czemu mogęCtrl+O
szybko wrócić do poprzedniej pozycji. 2)[count]go
można używać bez:
, czy można wprowadzić nowy,[count]GO
który spełni twoje oczekiwania. Czy możesz edytować swoją odpowiedź, aby pasowała również do tego zachowaniago
?Skończyło się na użyciu następującego rozwiązania, które implementuje logikę z mojego pytania.
[count]GO
aby przenieść[count]
bajty do przodu.[count]Go
aby przenieść[count]
bajty do tyłu.Dodaj to do
.vimrc
:Dzięki VanLaser za jego początkową implementację, która skierowała mnie we właściwym kierunku.
źródło