Как я могу переместить X байтов вперед, начиная с текущей позиции курсора (включая разрывы строк)?
[count]go
может использоваться для перемещения вперед на X байтов от начала буфера. Я попытался Shift + V, G, [count]go
(предполагая, [count]go
что отсчет начнется с начала моего выбора), но, к сожалению, это тоже не сработало, потому что go
отсчет начинается только с начала буфера.
Я также попытался :set rulerformat=%o
отобразить текущее байтовое смещение (как было предложено при переходе к байтовому смещению и отображении позиции в виде байтового смещения ), добавил числа в моей голове и, наконец, выдал [count]go
. Это работает, но это не очень практично ...
Xl
(гдеX
число символов) или количество символов, за которыми следует стрелка вправо.Ответы:
Этот поиск перемещает 40 символов (но не байтов) вперед:
ища ровно 40 chars (
\{40}
) любого вида, включая newline (\_.
), и поместив курсор в конец поиска (/e
). Смотрите: http://vimregex.com/#Non-Greedy ,:help search-offset
и:help \_
Также смотрите
:h 23.4
для двоичного редактирования.Обновление: на основе этого ответа вот функция, которая переходит к байтовому смещению:
Можно использовать так:
или набрав отображенную раскладку клавиатуры, со счетом:
Если вы не используете счет, предыдущий номер счета используется повторно. Так что вы можете сделать:
40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
прыгать 40, 40, 40, 30, 30 байт и т. Д.Нажмите,
Ctrl-O
чтобы перейти назад (см. Комментарии внутри функции).источник
[count]go
процесс через функцию vim (прочитать текущее смещение байта, добавить желаемое число,go
там).[count]go
вашим методом: 1)[count]go
добавляет элемент в список переходов, чтобы я могCtrl+O
быстро вернуться к своей предыдущей позиции. 2)[count]go
можно использовать без:
, можно ли ввести новое,[count]GO
которое делает ваше дело. Не могли бы вы отредактировать свой ответ, чтобы он соответствовал этому поведениюgo
?В итоге я использовал следующее решение, которое реализует логику из моего вопроса.
[count]GO
для перемещения[count]
байтов вперед.[count]Go
переместить[count]
байты назад.Добавьте это к вашему
.vimrc
:Спасибо VanLaser за его первоначальную реализацию, которая направила меня в правильном направлении.
источник