Vim - дергает в поисковый регистр

Там какой-либо легкий/быстрый путь состоит в том, чтобы "дергать" в "последний поисковый" регистр энергии ("/)?

Из документации энергии кажется, что ответ не, но что это может быть присвоено через команду, которой "позволяют":

It is writable with ":let", you can change it to have 'hlsearch' highlight
other matches without actually searching.  You can't yank or delete into this
register.

Идеально то, что я хотел бы сделать, является чем-то как:

"/5yw

который дергал бы следующие 5 слов под курсором и поместил бы их в последний поисковый буфер

С другой стороны, если бы существует способ искать содержание именованного регистра, который работал бы также. Другими словами, если я мог бы сделать:

"A5yw

и затем поиск, что находится в регистре A, который работал бы также.

Самое близкое я могу приехать, должно дергать в именованный регистр и затем скопировать тот регистр в последний поисковый регистр, например.

"A5yw
:let @/=@A

Рискуя тем, чтобы делать долгий вопрос дольше, я хочу заявить, что это - не всегда 5 слов, которые я хотел бы "дергать и искать" - иногда это - 17 символов, иногда это в конец строки, и т.д...., таким образом, трудно кодированный макрос не дает мне гибкость, я хотел бы.

74
задан Dan 18 July 2013 в 19:49
поделиться

3 ответа

Вы используете предложение case неверным путь. Необходимо указать значение, которое будет сравниваться со значением в предложении switch... и не логическое выражение, как это count > 2

В этом случае это логическое выражение будет иметь значение true или false (1 или 0) и сравниваться с вашим значением count и иногда может работать, иногда - нет.

Следует рассмотреть возможность замены его на оператор if.

-121--1316750-

Попробуйте это...

var text_val = $('#first > #second_child').text();
-121--2182196-

После нажатия / для ввода последовательности поиска можно использовать Ctrl-R , а затем ввести букву, представляющую регистр, который требуется использовать.

например.

  • Сначала "Ayw , чтобы включить слово в регистр A
  • Затем /^ R A , чтобы поместить содержимое регистра A в последовательность поиска.
99
ответ дан 24 November 2019 в 11:57
поделиться

То есть, по сути, это расширенная версия команд # и *, верно? Похоже, вы хотите определить пользовательский оператор (команду, которая ожидает движения). Я никогда не делал этого, но я нашел плагин, который, похоже, может облегчить эту задачу. Там есть несколько примеров.

5
ответ дан 24 November 2019 в 11:57
поделиться

Я использую для этого следующий код:

vnoremap <silent>* <ESC>:call VisualSearch('/')<CR>/<CR>
vnoremap <silent># <ESC>:call VisualSearch('?')<CR>?<CR>

    function! VisualSearch(dirrection)
        let l:register=@@
        normal! gvy
        let l:search=escape(@@, '$.*/\[]')
        if a:dirrection=='/'
            execute 'normal! /'.l:search
        else
            execute 'normal! ?'.l:search
        endif
        let @/=l:search
        normal! gV
        let @@=l:register
    endfunction
9
ответ дан 24 November 2019 в 11:57
поделиться