현재 문서에서 단어 강조 표시를 지우려면 (예 : 단어를 검색 한 후) 어떻게해야합니까?


61

파일에서와 같은 단어를 검색하면의 /console.log모든 인스턴스 console.log가 강조 표시됩니다.

더 이상 관심이 없으면 강조 표시가 산만해질 수 있습니다. 강조 표시를 제거하는 현재의 전략은 다음과 같은 작업을 수행하는 것 /asntehua입니다. 이 단어 강조 표시를 제거하는 올바른 방법이 있습니까?


2
/skldafjlksjdf;) 보다 입력하는 것이 더 빠릅니다 .
Shahbaz

1
.vimrc에 다음을 추가하십시오 :nnoremap <silent> <CR> :nohlsearch<CR><CR>. 명령 모드에서 복귀를 누르면 강조 표시가 사라집니다.
nilon

답변:


47

의 대안으로 키보드 단축키에 매핑하고 :noh싶습니다 :let @/="".

차이점은이 :noh때문에, 검색 레지스터에 검색어를 잎 nN정상 모드에서 이전 / 다음 경기 재 강조 점프하여 검색을 다시 시작합니다. 사용 :let @/="", 다른 한편으로는, 메시지가 발생 E25: No previous regular expression하고 그것이 커서 잎 아직 알지 못하는 경우에 특히 편리하다, ctrl- o아직 실수로 공격 n.

다른 방법으로도 사용할 수 있습니다. vim이 점프하지 않고 일부 텍스트를 강조 표시하도록하려면:let @/="some text"

이 식에서 @을 사용하면 레지스터를 참조 할 수 있으며 @ /는 마지막 검색 패턴을 보유하는 레지스터입니다.


31

간단히 입력

:noh<cr>

( <cr>캐리지 리턴, 즉 Enter를 상징하는 곳 )이 명령의 축약되지 않은 전체 버전은입니다 :nohlsearch.

편의상 다음과 같은 매핑을 가질 수 있습니다.

nnoremap <Leader><space> :noh<cr>

당신의 .vimrc. 내 리더는 스페이스이므로 스페이스를 두 번 두드리면 강조 표시가 명확 해집니다. (기본적 <Leader>으로 설정되어 있습니다 \)

또 다른 인기있는 옵션은 Ctrl+ 에 바인딩하는 것입니다. L이것은 'redrawn terminal screen'의 기본값이기 때문에 거의 당신이 하는 일입니다.

nnoremap <silent> <C-L> :nohlsearch<CR><C-L>

이의 부작용이 또한 터미널 연결 (매우 드문 요즘입니다) 느린 경우 느려질 수 있습니다 터미널 화면을 다시 그립니다.
참고 : tpope / vim-sensible 을 사용하는 경우 <C-l>위에 나열된 매핑 이 이미 제공 됩니다.


21

검색 강조 표시를 영구적으로 사용 중지

를 사용하여 검색 할 때마다 일치 항목이 강조 표시되지 않습니다 /

:set nohlsearch

다음 검색까지 명확한 하이라이트

:noh

또는 :nohlsearch( n또는 N을 누르거나 새로 검색 할 때까지 지워짐 )


누를 때 강조 표시 지우기 ESC

nnoremap <esc> :noh<return><esc>

다른 키 또는 사용자 지정 맵을 누를 때 강조 표시

  • 누르면 강조 표시 지우기 \(백 슬래시)

    nnoremap \ :noh<return>
    
  • ESC두 번 때리는 명료 한 하이라이트

    nnoremap <esc><esc> :noh<return>
    

나는 추가 nnoremap <esc> :noh<return><esc>내에 vimrc있지만 작동하지 않습니다. 나는 jk탈출로 매핑했습니다. 그 이유가 될 수 있습니까?
mbigras

정확히 무슨 일이야? 아마도 당신은 ESC키 를 비활성화했을 까요?
Sheharyar

를 눌러 jk강조 표시된 텍스트를 끄지 않습니다 (그러나 여전히 작동합니다 Esc). Esc키보드 왼쪽 상단에서 my 를 누르면 강조 표시된 텍스트가 꺼집니다.
mbigras

그래서 당신은 거기에 당신의 대답이 있습니다. 당신 넣어 jk아래의지도를 ESC지도와 간단한을 사용하고 있는지 확인 map하는 대신noremap
Sheharyar

이스케이프를 다시 매핑하면 화살표 키에 문제가 발생할 수 있으며 이스케이프 코드를 사용하는 다른 시나리오를 가정합니다. vi.stackexchange.com/questions/11144/…
Rob Mosher

2

~ / vimrc에서 이것에 대한 단축키에 대한 몇 가지 제안 솔루션을 시도한 후에 간단히 추가하는 방법 nmap <esc><esc> :noh<return>을 결정했습니다. 이중 이스케이프는 화살표 키 기능과의 간섭을 방지합니다. 삽입 모드에 있으면 3 중 이스케이프가 필요합니다. 실행이 빠르고 기억하기 쉽습니다.


2

삽입 모드로 들어갈 때마다 강조 표시를 제거하는 .vimrc에 autocmd를 추가했습니다.

 autocmd InsertEnter * :let @/=""

2
현재 검색을 방해하지 않으므로 nohl대신 대신 사용 let @/=""하는 것이 더 나은 방법입니다.
jamessan

@ jamessan 그것은 :let @/=""명령 과 함께 작동 하지만 autocmd InsertEnter * :noh어떤 이유로 든, 왜 그런지 알지 못합니까?
토벡

1
실제로 이유를 찾았습니다. 문서에 따르면 '자동 명령에서 ": nohlsearch"로 검색 강조 표시를 끌 수 없습니다'-이유에 대한 세부 정보 : vimdoc.sourceforge.net/htmldoc/autocmd.html#autocmd-searchpat
tobek

1

검색 후 강조 표시하지 않으려면 다음을 사용하십시오.

:set nohls

또는 이것 (나쁜) :

:hi Search NONE

1

을 입력 :help incsearch하면 매뉴얼에서 다음을 발견했습니다.

augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

내가 시도한 다른 솔루션이 완벽하지 않았기 때문에 사용에 사임했습니다.이 솔루션은 "말의 입에서 곧바로"옵니다. 현재 창에서 모든 검색 일치를 강조 표시합니다.


1
/asdfasdf

이것은 당신이 exaclty를 입력 할 필요가 없다는 장점이 있습니다. 단점은 4096 바이트 파일에 약 1 : 68719476736의 확률로 이것이 작동하지 않고 커서가 다른 위치로 이동한다는 것입니다. 파일이 클수록이 가능성이 높아집니다.


1
vi SE에 오신 것을 환영합니다! 나는 문자열 asdfasdf이 무작위로 선택된 8 바이트 시퀀스보다 실제 파일에서 훨씬 자주 발생한다는 점에서 특별 하다고 생각합니다 . 따라서 기회는 훨씬 높습니다. :-)
user259412

0

hls를 제거하는 것이 좋은 일이라고 생각하지 않습니다. 쉬운 바로 가기 (부울)를 만들거나 비활성화하는 방법은 어떻습니까?

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv

!설정 종료시 " " 때문에 마술이 발생 합니다.


0

강조 표시를 원하지 않는 경우가 많으며 강조 표시가 필요한 경우 잠시 동안입니다. 내 해결책은

nnoremap <Leader>/ set hls!<CR>

누르면 강조 표시가 \/활성화되고 다시 누르면 다시 비활성화됩니다. 따라서 필요할 때 드물게 강조 표시에 액세스 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.