vimscript получает номер первой и последней видимой строки

#vim

#vim

Вопрос:

Я знаю, что могу перейти к первой и последней видимой строке текущего буфера с помощью H и L соответственно. Но как я могу передать номера строк переменным?

Ответ №1:

 let topline = line("w0")
let botline = line("w$")
  

Ответ №2:

Возможно, есть способ получше, но если ничего другого нет, вы можете использовать H и L для перемещения туда и `` для возврата и get . Что-то вроде

 norm 'H'
let top=line('.')
norm '``L'
let bottom=line('.')
norm '``'
  

или вы можете использовать getpos() для сохранения и setpos() восстановления позиции, но я не уверен, что вы сможете избежать уничтожения метки предыдущей позиции ( :keepmarks команда должна это сделать, но в документации сказано, что это работает только в каком-то особом случае).