Перемещение вперед/назад числа символов в конце строки в VIM

Как я могу перемещать вперед/назад количество символов в конце строки в VIM?

Я знаю, что могу напечатать, например,

25l

и перейдите вперед 25 символов, но эта команда всегда будет останавливаться в конце строки. Кроме того, существует 25go, но это идет вперед от начала буфера, а не от текущей позиции курсора. Я хочу перейти вперед определенное количество символов, включая символы конца строки.

9
задан Tyler Durden 26 июня '14 в 16:24
источник поделиться
4 ответов

Я думаю, что вы ищете space для перемещения вперед и backspace для перемещения назад.

space будет продолжаться в следующей строке. Если вы хотите добавить пробелы в текущей строке вместо перехода к следующему, тогда :set virtualedit=onemore является для вас вариантом.

9
ответ дан DavidEG 26 июня '14 в 19:52
источник поделиться

Вы можете установить опцию virtualedit:

:set ve=all

Виртуальное редактирование означает, что курсор может быть расположен там, где нет фактического символа.

4
ответ дан kev 26 июня '14 в 16:30
источник поделиться

Параметр 'whichwrap' определяет, какие движения могут перемещать курсор в другую строку. По умолчанию ни одно из движений влево/вправо не делает.

Включение h,l не рекомендуется, так как некоторые макросы и плагины могут зависеть от исходного поведения и break - ваш вызов для тестирования и принятия решения. Но должно быть безопасно включать клавиши курсора и через (последняя пара для режима вставки и необязательная)

:set whichwrap+=<,>,[,]

Затем вы можете перемещаться на 5 символов по строке, заканчивающейся через 5 .

Учитывается ли символ новой строки или нет, зависит от параметра 'virtualedit'. Чтобы включить новую строку:

:set virtualedit=onemore
2
ответ дан Ingo Karkat 26 июня '14 в 16:38
источник поделиться

Другая возможность (не требующая изменения параметров, но более подробная) заключается в использовании функции search(). Следующее перемещает курсор вправо символами 6. Он делает это путем сопоставления с текущей позицией (\%#) 7 символов, включая символы новой строки (\_.):

:call search('\%#\_.\{7}', 'ce')
1
ответ дан Ingo Karkat 26 июня '14 в 16:45
источник поделиться

Другие вопросы по меткам