Проблема связана с командой doautocmd BufRead
в вашем LWargs()
, которая сбрасывает позицию курсора в верхнюю часть файла.
(По крайней мере, в моем случае команда использовалась для восстановить позицию курсора при открытии Vim является причиной перемещения курсора. Вы можете просмотреть список из :autocmd BufEnter *
, чтобы увидеть, можете ли вы найти аналогичную или другую команду, которая может вызвать перемещение курсора. оказывается, я также получал то же правило из моего Linux дистрибутива ...)
Хороший способ предотвратить это - использовать winsaveview()
для сохранения местоположения курсора и вида окна в целом (какая строка вверху, прокручивается ли ваше окно вправо до столбца, когда перенос слов отключен) и winrestview()
для его восстановления.
Вот обновленный LWargs()
, который не будет двигать вашим курсором:
function! LWargs()
set lw=
<b>let saved_view = winsaveview()</b>
doautocmd BufRead
<b>call winrestview(saved_view)</b>
if len(&lw) > 0 && len(&lw) < 512
return ' ' . &lw
endif
return ''
endfunction
Обратите внимание, что правильный синтаксис - set lw=
, если вы используете set lw=''
, вы будете устанавливать двухсимвольная строка с двумя одинарными кавычками.