Vim에서 검색을 수행하면 모든 항목이 강조 표시됩니다. 어떻게 비활성화할 수 있습니까? 나는 이제 찾을 수 없는 횡설수설한 무언가를 찾기 위해 또 다른 검색을 합니다.
하이라이트를 일시적으로 비활성화한 다음 필요할 때 다시 활성화하는 방법이 있습니까?
질문자 :Gabriel Solomon
Vim에서 검색을 수행하면 모든 항목이 강조 표시됩니다. 어떻게 비활성화할 수 있습니까? 나는 이제 찾을 수 없는 횡설수설한 무언가를 찾기 위해 또 다른 검색을 합니다.
하이라이트를 일시적으로 비활성화한 다음 필요할 때 다시 활성화하는 방법이 있습니까?
다음 검색까지 강조 표시를 끄려면:
:noh
또는 강조 표시를 완전히 끕니다.
set nohlsearch
또는 토글하려면:
set hlsearch! nnoremap <F3> :set hlsearch!<CR>
마지막으로 사용한 검색 패턴을 지우려면:
:let @/ = ""
모든 곳에서 일치하므로 패턴을 빈 문자열로 설정하지 않습니다. Vim을 시작할 때와 같이 패턴이 정말 지워집니다.
몇 년 전에 vim.org에서 이 답변을 찾았습니다.
.vimrc에 다음을 추가합니다.
"This unsets the "last search pattern" register by hitting return nnoremap <CR> :noh<CR><CR>
따라서 검색 후 명령 모드에서 다시 return 키를 누르면 강조 표시가 사라집니다.
http://twitter.com/jonbho/status/2194406821에서
" Clear highlighting on escape in normal mode nnoremap <esc> :noh<return><esc> nnoremap <esc>^[ <esc>^[
Vim은 내부적으로 특수 키를 나타내기 위해 이스케이프를 사용 하기 때문에 이스케이프 키 에 매핑하려면 두 번째 줄이 필요합니다.
내 원래 솔루션(아래)은 더럽고 낭비적이었습니다. 나는 지금 사용한다 :noh
Vim의 많은 기능과 마찬가지로 올바른 방법을 찾기가 쉽지 않은 경우가 많습니다.
--
(하지마세요)
가능성이 없는 문자 시퀀스 검색(홈 행의 키 매쉬):
/;alskdjf;
이것은 vim 이하에서 작동하며 @ShaunBouckaert의 "마지막으로 사용한 검색 패턴을 지우기 위한" 논리적으로 더 깨끗한 솔루션보다 기억/입력하기가 더 쉽습니다.
:let @/ = ""
잠재적인 단점은 검색 기록에 정크를 추가한다는 것입니다.
내 .vimrc.local 파일에 다시 매핑하여 빠르고 더럽지만 매우 기능적입니다.
" Clear last search highlighting map <Space> :noh<cr>
nnoremap <cr> :noh<CR><CR>:<backspace>
그런 식으로 검색 후 Enter 키를 누르면 명령줄에 표시되는 :noh
: 새 명령을 입력하기 시작하는 것과 같습니다. 백스페이스는 명령을 지우고 포커스를 다시 편집기 창에 둡니다.
제안한 답변 :noh
나 :nohlsearch
(예를 들어, 매트 McMinn의)는 일시적으로 검색 강조 표시를 비활성화에 적합한 - 원래의 질문에 질문한다.
일반 모드에서 유용하다고 생각되는 매핑을 제공할 것이라고 생각했습니다.
nnoremap <CL> :nohlsearch<CR><CL>
기본적 으로 Vim의 Ctrl L 은 화면을 지우고 다시 그립니다. 많은 명령줄 프로그램(대부분 Bash와 같은 GNU Readline 라이브러리를 사용하는 프로그램)은 동일한 키 조합을 사용하여 화면을 지웁니다. 이 기능은 백그라운드에서 실행 중인 프로세스가 터미널에 인쇄하여 전경 프로세스의 일부를 덮어쓰는 상황에서 유용합니다.
이 일반 모드 매핑은 또한 화면을 다시 그리기 전에 가장 최근 검색어의 강조 표시를 지웁니다. 두 기능이 서로를 보완하고 검색 강조 표시를 비활성화하기 위해 별도의 매핑을 만드는 것보다 두 작업에 하나의 Ctrl L을 함께 사용하는 것이 편리합니다.
NB가 : noremap
대신 사용되는 map
그렇지 않은 경우로, 매핑은 재귀 될 것이다.
팁: 저는 일반적으로 이러한 키 조합을 더 쉽게 입력할 수 있도록 Caps Lock 을 Ctrl로 다시 매핑합니다. 이 작업을 수행하기 위한 세부 정보는 선택한 OS/윈도우 시스템에 따라 다릅니다(이 답변에서는 주제에서 벗어남). 다음 두 팁에는 Caps Lock 을 Ctrl 및 Esc 로 매핑하는 방법에 대한 정보가 포함되어 있습니다.
나는 일반적으로 :noh
를 백슬래시 키로 매핑합니다. 강조 표시를 다시 활성화하려면 n 키를 누르면 다시 강조 표시됩니다.
/를 사용하여 검색할 때마다 일치 항목이 강조 표시되지 않습니다.
:set nohlsearch
:noh
또는 :nohlsearch
(n 또는 N 을 누를 때까지 지워짐)
nnoremap <esc> :noh<return><esc>
\ (백슬래시)를 누르면 하이라이트 지우기
nnoremap \ :noh<return>
ESC를 두 번 누르면 하이라이트 지우기
nnoremap <esc><esc> :noh<return>
이것은 내가 사용하는 것입니다(다양한 질문/답변에서 추출).
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
"이중" Esc 를 사용하면 강조 표시가 제거되지만 다시 검색하면 강조 표시가 다시 나타납니다.
또 다른 대안:
nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>
vim 문서에 따르면 :
클리어 매치()
Clears all matches previously defined by |matchadd()| and the |:match| commands.
vim-cool을 설치합니다. 이 특정 문제를 해결하기 위해 만들어졌습니다. 커서를 이동하는 즉시 강조 표시를 끕니다. 그러나 최신 vim 버전이 필요합니다!
VIM 및 GVIM을 위한 Janus에는 저와 같은 초보자 를 위한 다양한 기능이 포함되어 있습니다.
<leader>hs - toggles highlight search
이것이 바로 당신이 필요로 하는 것입니다. 일반 모드에서 \hs
를 입력하기만 하면 됩니다. (리더 키는 \
에 매핑됩니다.)
HTH.
이를 위한 두 가지 '필수' 플러그인이 있습니다.
이렇게 하면 업데이트 시간(밀리초) 동안 비활성 상태가 된 후 검색 강조 표시가 updatetime
updatetime
기본값은 4000ms 또는 4s이지만 저는 10s로 설정했습니다. updatetime
은 이것 이상을 수행하므로 변경하기 전에 문서를 읽으십시오.
function! SearchHlClear() let @/ = '' endfunction augroup searchhighlight autocmd! autocmd CursorHold,CursorHoldI * call SearchHlClear() augroup END
강조 표시를 빠르게 활성화/비활성화 하려면 키를 에 매핑할 수 있습니다.
" Press F4 to toggle highlighting on/off, and show current value. :noremap <F4> :set hlsearch! hlsearch?<CR>
위의 스니펫을 .vimrc 파일에 넣으면 됩니다.
그것은 내가 노래 키 스트로크로 검색 하이라이트를 표시하고 숨기는 가장 편리한 방법입니다
자세한 내용은 문서 http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches를 확인하십시오.
내 생각에 원래 질문은 검색 강조 표시를 비활성화하는 것이 아니라 단순히 마지막 검색에서 강조 표시를 지우는 것과 관련된 것입니다. 원래 포스터가 언급한 횡설수설한 문자열을 검색하는 솔루션은 이전 검색에서 강조 표시를 지우기 위해 한동안 사용해왔지만 추하고 번거롭습니다.
nnoremap ...
to ~/.vimrc를 추가하기 위해 찾은 몇 가지 제안은 시작 시 vim을 교체 모드로 전환하는 효과가 있습니다. 이는 내가 원하는 것이 아닙니다. 내가 찾은 가장 간단한 해결책은 줄을 추가하는 것입니다
nmap <esc><esc> :noh<return>
내 ~/.vimrc. 이것은 KISS 원칙을 따르고 단일 <esc>를 사용하는 화살표 키를 방해하지 않습니다. 이전 검색에서 강조 표시를 지우려면 명령 모드에서 이중 <esc>(또는 삽입 또는 바꾸기 모드에서 삼중 <esc>)가 필요하지만 UI 관점에서 이것은 작업을 가능한 한 간단하게 만듭니다.
2개의 상위 답변을 결합하여 또 하나의 솔루션:
"To clear the last used search pattern: nnoremap <F3> :let @/ = ""<CR>
아래의 간단한 nohl을 사용하고 플러그인이 필요하지 않습니다.
:nohl
esc
를 다음과 같이 :noh
명령에 매핑하는 것을 좋아합니다.
map <esc> :noh<cr>
최근 Vim 검색에 대한 전체 기사를 작성 했습니다. 즉, 바닐라 Vim에서 검색하는 방법과 검색 기능을 향상시키는 최고의 플러그인입니다.
~/.vimrc
에서 다음을 사용합니다.
nnoremap <Leader><space> :noh<Enter>
이렇게 하면 현재 강조 표시된 검색을 매우 쉽고 빠르게 지울 수 있습니다. 내 리더 키는 \
매핑되므로 오른쪽 새끼손가락과 엄지손가락으로 작업을 수행하기가 매우 쉽습니다.
@ShaunBouckaert와 2009년 3월 19일 16:22 답변을 혼합하는 것이 좋은 절충안이라고 생각합니다.
" Reset highlighted search nnoremap <CR> :let @/=""<CR><CR>
Enter 키를 누르면 강조 표시된 텍스트가 더 이상 강조 표시되지 않지만 검색 강조 표시는 계속 활성화됩니다.
:noremap 을 사용하여 다음과 같이 검색 결과를 켜고 끌 수 있습니다.
:noremap <F3> :set hls! hls?<CR>
@baruch-even 답변 에 따라 일반 모드에서 다음을 사용하여 ESC를 두 번 누르면 검색어를 삭제할 수 있습니다.
nnoremap <esc> :let @/ = ""<return><esc> nnoremap <esc>^[ <esc>^[
나도 좋아하지 않아. 나는 항상 입력하는 것이 :nohl
것을 알았다 :nohl ... 그래서 나는 내 .vimrc
noremap <C-_> :nohl<cr>:<backspace>
첫 번째 비트( :nohl<cr>
)는 강조 표시를 지웁니다. 두 번째 비트( :<backspace>
)는 명령줄 을 정리하는 트릭입니다. 검색은 여전히 백그라운드에 있으므로 n
을 누르기만 하면 다시 강조 표시되고 다음 항목으로 이동합니다.
이것을 내 vimrc
파일에 추가했습니다.
command! H let @/=""
검색을 수행하고 검색에서 하이라이트를 지우려면 다음을 수행하십시오 :H
nohlsearch의 어떤 솔루션도 선호하지 않습니다. 다음 검색은 어떻습니까? 가장 좋은 대답은 let @/ = ""에 의해 생성되지만 Mac에서는 기능 키로 매핑하는 것을 좋아하지 않으므로 여기에 내 것이 있습니다.
let mapleader=',' let g:mapleader=',' nnoremap <leader>cs :let @/ = ""<cr>
출처 : http:www.stackoverflow.com/questions/657447/vim-clear-last-search-highlighting
제어 역전이란 무엇입니까? (0) | 2021.12.04 |
---|---|
AngularJS에서 데이터 바인딩은 어떻게 작동합니까? (0) | 2021.12.04 |
푸시되지 않은 Git 커밋 보기 (0) | 2021.12.04 |
Bash에서 명령의 출력에 변수를 어떻게 설정합니까? (0) | 2021.12.04 |
C++11은 표준화된 메모리 모델을 도입했습니다. 무슨 뜻이에요? 그리고 C++ 프로그래밍에 어떤 영향을 미칠까요? (0) | 2021.12.04 |