ProgramingTip

Vim- 검색 적으로 끌어 당김

bestdevel 2020. 10. 26. 08:25
반응형

Vim- 검색 적으로 끌어 당김


vim의 "마지막 검색"레지스터 ( "/)에"양속 "하는 부인과 방법이 있습니까?"

vim 문서에서 대답은 '아니요'인 것처럼 보이지만 "let"명령을 통해 할당 할 수 있습니다.

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에있는 항목을 작동합니다.

내가 올 수있는 가장 가까운 방법은 명명 된 예정에 yank 한 다음 해당 될 것입니다 마지막 검색에 복사하는 것입니다.

"A5yw
:let @/=@A

긴 질문을 더 아니라 만들 위험을 감수하면서 "끌어서 검색"하고 싶은 단어가 항상 5 개 말하고 싶습니다. 어디에 17 자이고, 그리고 줄 끝까지 등입니다. 따라서 하드 코딩 된 매크로는 내가 원하는 유연성을 제공하지 않습니다.


를 나열 /검색을 입력 한 후 사용 Ctrl-R하고 싶은 것을 입력 할 수 있습니다.

예.

  • 먼저 "Ayw레지스터에 단어를 잡아 당기려면
  • 그런 다음 / ^R AA의 내용을 검색하실 수 있습니다.

얀크 텍스트를 저장하는 데 레지스터를 사용하지 않은 경우 정력은 0레지스터를 사용합니다 . Ctrl-R 0뒤 6 입력 입력하여 검색 할 수 있습니다 /.

더 복잡한 예. 현재 커서 아래에있는 따옴표 안의 텍스트를 다른 버퍼에서 검색하고 싶다고 가정 해 있습니다.

  • yi"(내부 인용 부호)로 할 수 있습니다.
  • 검색하려는 버퍼로 이동
  • 유형 /Ctrl-R 0

이를 위해 다음 코드를 사용하고 있습니다.

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

따라서 기본적으로 # 및 * 명령의 확장 버전이 맞습니까? 사용자 정의 연산자 (동작을 예상하는 명령)를 정의하려는 것입니다. 실제로 이것을 한 나는 적이 없지만 그렇게하기 쉽게 만드는 플러그인찾았습니다 . 몇 가지 가지 예가 있습니다.


선택 검색 :

선의 한 부분을 먼저 잡아 당기려면 "v"를 사용하고 원하는 항목을 표시 할 때까지 커서로 이동 한 다음 y를 잡아 잡아 당기면 선택이려면 0에 있습니다.

그런 다음 입력 할 수 있습니다. /Ctrl-R 0

참고 URL : https://stackoverflow.com/questions/2312844/vim-yank-into-search-register

반응형