메모장 ++에서와 같이 GVim에서 선택한 단어를 모두 강조 표시하려면 어떻게해야합니까?
답변:
일반 모드에서 :
:set hlsearch
그런 다음 /
일반 모드 에서 명령 을 사용하거나 삽입 모드에서 <Ctrl>o
뒤에 오는 패턴을 검색 /
합니다. *
일반 모드에서는 커서 아래에있는 다음 단어를 검색합니다. 이 hlsearch
옵션은 설정된 경우 모든 항목을 강조 표시합니다. #
단어의 이전 발생을 검색합니다.
이전 검색의 하이라이트를 제거하려면 :
:nohlsearch
:nohlsearch<CR>
편리한 키 에 매핑 할 수 있습니다 .
*
또는 #
의해 <Ctrl>o
정상 모드에서.
:nohlsearch
사용할 수 있습니다:noh
.vimrc
: noremap <F4> :set hlsearch! hlsearch?<CR>
강조 표시 사이를 전환하고으로 강조 표시를 제거합니다 <F4>
.
*
키는 커서 아래에있는 단어의 모든 항목을 강조 표시됩니다.
&hlsearch
이 켜져있는 경우에만 .
#
.
나는 그것이 정말 오래된 질문이라는 것을 알고 있지만 누군가이 기능에 관심이 있다면이 코드를 확인할 수 있습니다. http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
" Highlight all instances of word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
let @/ = ''
if exists('#auto_highlight')
au! auto_highlight
augroup! auto_highlight
setl updatetime=4000
echo 'Highlight current word: off'
return 0
else
augroup auto_highlight
au!
au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
augroup end
setl updatetime=500
echo 'Highlight current word: ON'
return 1
endif
endfunction
가장 간단한 방법은 일반 모드로 입력하는 것입니다. *
또한 이러한 매핑을 활성화 및 비활성화 할 수 있습니다.
"highligh search enabled by default
set hlsearch
"now you can toggle it
nnoremap <S-F11> <ESC>:set hls! hls?<cr>
inoremap <S-F11> <C-o>:set hls! hls?<cr>
vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gv
그것을 클릭하여 단어를 선택
set mouse=a "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
보너스 : CountWordFunction
fun! CountWordFunction()
try
let l:win_view = winsaveview()
let l:old_query = getreg('/')
let var = expand("<cword>")
exec "%s/" . var . "//gn"
finally
call winrestview(l:win_view)
call setreg('/', l:old_query)
endtry
endfun
" Bellow we set a command "CountWord" and a mapping to count word
" change as you like it
command! -nargs=0 CountWord :call CountWordFunction()
nnoremap <f3> :CountWord<CR>
마우스로 단어를 선택하고 한 번에 발생 횟수 계산 : OBS :이 버전에서는 끝에 "CountWord"명령이 있습니다.
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
nnoremap * *``cgn
하고nnoremap # #``cgN
*
강조 표시를 어떻게 해제합니까?
:noh
또는:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
와 nnoremap <silent> # :execute "normal! #n"<cr>
? 커서 아래에있는 단어를 강조 표시하지만 다음 항목으로 이동하지는 않습니다.
검색 기반 솔루션 ( *, /...)은 커서를 이동합니다. 이는 불행 할 수 있습니다.
대안은 향상된 mark.vim 플러그인 을 사용 .vimrc
하여 더블 클릭 트리거 강조 표시 를 완료 하는 것입니다 (키보드 선택이 명령을 트리거하는 방법을 모르겠습니다).
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
여러 강조 표시, 지속성 등을 허용합니다.
강조 표시를 제거하려면 다음 중 하나를 수행하십시오.
:Mark
(다음 선택까지 스위치 끄기):MarkClear
:set noincsearch
. 제 생각에는 Vim에서 가장 성가신 기능 중 하나이며 새로 설치할 때 비활성화하는 첫 번째 기능 중 하나입니다.
*
무조건 커서를 움직일 것이라고 생각 합니다. 그리고 incsearch
실제로 위치를 변경하지 않고 현재 검색을 수행하는 '미리보기'일 뿐이므로 얼마나 짜증나 는지 알 수 없습니다 .
incsearch
움직이지 않을 것이라고 생각 했지만 빠른 테스트를 통해 올바른지 확인합니다. 죄송합니다. 그러나 이동을 방지하는 매핑을 만드는 것은 매우 쉽습니다 :nnoremap * *N
. 검색을 수행 할 때 커서가 화면 전체로 점프하는 것이 짜증나 지 않는다는 것을 믿을 수 없습니다 . 하지만 ... 이것들은 완전히 주관적입니다. Vive la différence ;-)
:let @/='hilight_this'
했다고 가정하면을 수행 할 수도 있습니다 hlsearch
. 점프하지 않고 텍스트를 강조 표시하며 기존 설정을 변경할 필요가 없습니다. 이렇게하면 현재 검색 레지스터에 저장된 값이 변경됩니다.
먼저 다음 명령을 실행하여 hlsearch가 활성화되었는지 확인하십시오.
:set hlsearch
이것을 .vimrc 파일에 세트로 추가 할 수도 있습니다.
set hlsearch
이제 명령 모드 또는 일반 검색 명령에서 빠른 검색 메커니즘을 사용하면 모든 결과가 강조 표시됩니다. 결과간에 앞으로 이동하려면 'n'을 눌러 뒤로 이동하려면 'N'을 누릅니다.
일반 모드에서 커서 아래에있는 단어를 빠르게 검색하고 한 명령에서 다음 항목으로 이동하려면 '*'를 누르십시오. 커서 아래의 단어를 검색하고 '#을 눌러 이전 항목으로 이동할 수도 있습니다. '
일반 모드에서 빠른 검색은
/searchterm<Enter>
ocuurences 사용에 대한 하이라이트를 제거하기 위해 이것을 .vimrc의 바로 가기에 바인딩했습니다.
:nohl
커서를 움직이지 않고 단어를 강조 표시하려면 plop
" highlight reg. ex. in @/ register
set hlsearch
" remap `*`/`#` to search forwards/backwards (resp.)
" w/o moving cursor
nnoremap <silent> * :execute "normal! *N"<cr>
nnoremap <silent> # :execute "normal! #n"<cr>
vimrc에.
이것에 대해 무엇의 좋은입니다 g*
및 g#
것이다 여전히 "정상"처럼 작동 *
하고 #
.
시작하려면 hlsearch
"짧은 형식"을 사용할 수 있습니다 (명령 모드에서 "noh"로 시작하는 다른 기능이없는 경우) :noh
.. 또는 긴 버전을 사용할 수 있습니다.:nohlsearch
극도의 편의를 위해 ( hlsearch
하루에 20 번 정도 토글하는 경우가 있음) 다음 hlsearch
과 같이 토글 할 항목을 매핑 할 수 있습니다 .
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
. :. 만약 당신 <leader>
이 \(기본적으로), 당신은 전환하기 위해 일반 모드 \st에서 (빠르게)를 누를 수 있습니다 .hlsearch
아니면 그냥 :noh
매핑 하고 싶을 수도 있습니다 .
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
위의 내용은 단순히 실행 :nohlsearch
되므로 (와 달리 :set hlsearch!
) 다음에 *또는 일반 모드 #에서 를 누를 때 여전히 단어를 강조 표시 합니다.
건배
사용하다 autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
IncSearch
무언가를 설정 했는지 확인하십시오 . 예 : call s:Attr('IncSearch', 'reverse')
. 또는 대신 다른 하이라이트 그룹을 사용할 수 있습니다.
이렇게하면 지연없이 커서 아래에있는 모든 단어가 강조 표시됩니다. 코드를 살펴볼 때 지연으로 인해 속도가 느려집니다. 강조 색상은 단어의 색상과 일치하므로 구성표와 일관성을 유지합니다.
예를 들어이 플러그인은 다음과 같습니다.
그냥 검색 커서 아래 에 vimawesome.com
clagccs가 언급했듯이 핵심 은 강조 표시가 검색과 충돌 하지 않는다는 것입니다 . https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
왜 안 되는가 : z /
그러면 커서 아래에있는 현재 단어와 다른 모든 항목이 강조 표시됩니다. 검색하려는 각 항목에 대해 별도의 명령을 제공 할 필요가 없습니다. 아마도 그것은 부정한 gvim에서 사용할 수 없습니까? 기본적으로 vim에 있습니다.
* 커서를 다음 항목으로 이동하려는 경우에만 좋습니다. 두 가지를 시각적으로 비교할 때 커서가 움직이는 것을 원하지 않는 경우가 많으며 매번 * 키를 누르는 것이 귀찮습니다.
~/.vimrc
파일에 해당 줄 추가
" highlight the searched items
set hlsearch
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
정상적인 모델에서 단어를 살펴보십시오.
* 키를 눌러 F8을 눌러 전체 프로젝트에서 단어를 반복적으로 검색합니다.
hlsearch
많은 당신은 매핑 할 수 있습니다:set hlsearch!
대신:set nohlsearch
. 이것은 항상 설정을 끄지 않고 토글합니다.