2013-09-24 3 views
0

У меня установлен плагин vim EasyMotion.Easy motion vim plugin mapping issue

Нажатие,

<Leader><Leader>f поиск вперед от текущей строки.
<Leader><Leader>F ищет обратную сторону от текущей строки.

Есть ли способ поиска всей видимой части буфера только с помощью 'f'? В идеале я бы не хотел использовать два разных привязки для поиска вперед и назад. Одно единственное связывание для поиска всей видимой части буфера было бы наиболее идеальным.

+2

EasyMotion's tracker [там] (https://github.com)/Lokaltog/ВИМ-EasyMotion/вопросы). –

+0

Спасибо за очень ценный комментарий. Это было полезно. Поистине было. – Jay

ответ

0

Вы можете попробовать отображение, как это:

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 без особых трудностей.