[vim] 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
레지스터 A에 단어를 잡아 당기려면 - 그런 다음
/ ^R A
레지스터 A의 내용을 검색 문자열에 넣습니다.
답변
얀크 텍스트를 저장하는 데 레지스터를 사용하지 않은 경우 vim은 0
레지스터를 사용합니다 . Ctrl-R 0
뒤에 입력하여 검색 할 수 있습니다 /
.
더 복잡한 예. 현재 커서 아래에있는 따옴표 안의 텍스트를 다른 버퍼에서 검색하고 싶다고 가정 해보십시오.
yi"
(yank inner quote)로 할 수 있습니다.- 검색하려는 버퍼로 이동
- 유형
/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
답변
기본적으로 # 및 * 명령의 확장 버전이 맞습니까? 사용자 정의 연산자 (동작을 예상하는 명령)를 정의하려는 것 같습니다. 나는 실제로 이것을 한 적이 없지만 그렇게하기 쉽게 만드는 플러그인 을 찾았습니다 . 제공된 몇 가지 예가 있습니다.