Vim : 스크립트에서 검색 패턴을 어떻게 강조합니까?


0

나는 이것이 어려울 것이라고 생각하지 않았지만 작동하지 않습니다. 내가하려는 것은 스크립트에서 검색 강조 표시를 활성화하는 것입니다. 나는 다음을 시도했다.

function! g:TestFunc()
    let @/ ="testtext"
    set hlsearch
endfunction

nnoremap <space> :call g:TestFunc()<cr>

작동하지 않습니다. 즉, "testtext"가있는 일부 텍스트 앞에 공백을두면 텍스트가 강조 표시되지 않습니다. 사용자는 여전히 'n'을 쳐야합니다.

또한 exec 'normal! n'함수 끝에 추가하려고 시도했지만 작동하지 않았습니다. 심지어 feedkeys('n')실패합니다.

답변:


4

함수는 hlsearch호출하기 전에 설정되지 않은 경우 예상대로 작동 합니다. 이미 설정되어 있으면 기능에서 설정해도 효과가없는 것 같습니다. nohlsearch매핑에서 설정하여이 문제를 해결할 수 있습니다 .

nnoremap <space> :set nohlsearch\|:call g:TestFunc()<cr>

목표가 단순히 특정 패턴을 강조하는 것인데 특별히 hlsearch메커니즘 을 사용할 필요가없는 경우 match대신 명령 을 사용하는 것이 좋습니다. 그것은 훨씬 똑같은 일을 더 깨끗하게 성취합니다.


그 일치 명령은 내가 찾던 것입니다, 건배!
Steve Vermeulen

1

함수 내에서 마지막으로 사용한 검색 패턴 및 강조 표시를 설정할 수 없습니다 (참조) :help function-search-undo. 대신, :set hlsearch매핑으로 직접 이동하십시오 .


0
function! wordsubstitute#run()
    execute "normal! gv\"ay"
    let @/ = @a
    "set nohlsearch
    let s:search_cmd = "normal! /".@/."/\<CR>"
    execute s:search_cmd."N"
    "set hlsearch
endfunction

사용하는 대신 normal! nN, 쓰기 nN매핑 명령 :

vnoremap [g/ :<c-u>call wordsubstitute#run()<CR>nN
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.