Вы можете попробовать отображение, как это:
nnoremap <leader><leader>f :execute "/\\%>" . line('w0') . "1\\%<" . line('w$') . "l"<left>
Это сбивает с толку синтаксис, поэтому я распаковать его.
line('w0')
и line('w$')
возвращают номера строк первой и последней видимых строк в буфере соответственно, поэтому вы используете их для поиска диапазона видимой части.
Команда поиска /
позволяет указать диапазон, но с нечетным синтаксисом. Формат: /\%>Xl\%<Yl
, где X - это строка для начала, а Y - линия, на которой заканчивается.
Это невозможно просто отбросить результаты line()
в нормальный /
вызов, но мы можем построить строку, используя .
присоединиться сегментов вместе, и после того, как команда строится, передать его в :exec
, чтобы это произошло ,
Наконец, есть <left>
. Это для позиционирования курсора. Когда вы выполняете <leader><leader>f
, вся картинка срабатывает, как будто вы ее печатаете, поэтому в итоге вы получаете полную команду :exec
в строке, и она заканчивается на «, но вы хотите ввести внутри этих котировок. В качестве альтернативы вы можете удалить "<left>
с конца отображения, но тогда вам придется не забудьте закрыть цитату после ввода вашего поискового запроса.
Я не знаком с EasyMotion, так что это может не дать вам именно то, что вы просили (Я понял это после того, как я набрал ответ), но он позволит вам выполнять поиск только в видимой части буфера, и вы, вероятно, можете легко адаптировать его к задачам EasyMotion без особых трудностей.
EasyMotion's tracker [там] (https://github.com)/Lokaltog/ВИМ-EasyMotion/вопросы). –
Спасибо за очень ценный комментарий. Это было полезно. Поистине было. – Jay