Notepad ++ gibi, GVim'de seçilen bir kelimenin tüm oluşumunu nasıl vurgulayabilirim?
Notepad ++ gibi, GVim'de seçilen bir kelimenin tüm oluşumunu nasıl vurgulayabilirim?
Yanıtlar:
Normal modda:
:set hlsearch
Ardından /
, Normal modda veya <Ctrl>o
ardından /
Ekle modunda komutla bir desen arayın . *
Normal modda, imlecin altındaki kelimenin bir sonraki tekrarını arayacaktır. hlsearch
Ayarlarsanız seçenek tümü vurgulanacaktır.#
sözcüğün önceki oluşumunu arayacaktır.
Önceki aramanın vurgulamasını kaldırmak için:
:nohlsearch
:nohlsearch<CR>
Uygun bir anahtarla eşlemek isteyebilirsiniz .
*
ya #
göre <Ctrl>o
normal modda.
:nohlsearch
kullanabilirsiniz:noh
.vimrc
: noremap <F4> :set hlsearch! hlsearch?<CR>
açıkton arasında geçiş yapmak ve açıktonu kaldırmak için <F4>
.
*
Anahtar imlecin altında kelimenin tüm tekrarlarını vurgulayacaktır.
&hlsearch
.
#
.
Gerçekten eski bir soru olduğunu biliyorum, ama birisi bu özellik ile ilgilenen varsa, bu kodu kontrol edebilirsiniz 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
en basit yol, normal modda yazın *
Ayrıca etkinleştirmek ve devre dışı bırakmak için bu eşlemelerim var
"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
Üzerine tıklayarak kelimeyi seçin
set mouse=a "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
Bonus: 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>
Fare ile sözcük seçme ve bir kerede tekrarlama sayısı: OBS: Bu sürümde sonunda "CountWord" komutunun bulunduğuna dikkat edin
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
nnoremap * *``cgn
vennoremap # #``cgN
*
peki yazdıktan sonra , vurgulamayı nasıl kapatabilirim?
:noh
veya:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
ve nnoremap <silent> # :execute "normal! #n"<cr>
? Bunlar sadece imlecin altındaki kelimeyi vurgular, ancak bir sonraki olaya taşıma.
Arama tabanlı çözümler ( *, /...) talihsiz olabilecek imleci hareket ettirir.
Bir alternatif gelişmiş mark.vim eklentisini kullanmaktır , ardından .vimrc
tetikleyici vurgulamayı çift tıklatmanıza izin vermek için tamamlayın (bir klavye seçiminin bir komutu nasıl tetikleyebileceğini bilmiyorum):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
Birden fazla vurgu, kalıcılık vb. Sağlar.
Vurgulamayı kaldırmak için:
:Mark
(bir sonraki seçime kadar kapanır):MarkClear
:set noincsearch
. Bence Vim'deki en can sıkıcı özelliklerden biri ve yeni yüklemeler için devre dışı bıraktığım ilk şeylerden biri.
*
imleci koşulsuz hareket ettirecek. Ve nasıl incsearch
can sıkıcı olabileceğini göremiyorum , çünkü sadece 'ileriye bak', konumunuzu değiştirmeden geçerli arama gerçekleştiriyor.
incsearch
hareketi engelleyeceğini varsaydım , ancak hızlı bir test doğru olduğunuzu doğruladı. Özür dilerim. Ancak, bu engeller hareketi bir eşleme oluşturmak için süper kolay: :nnoremap * *N
. Sana inanamıyorum yok bir arama gerçekleştirmek gibi imleci ekran üzerinde tüm atlar o can sıkıcı bulmak. Ama ... bunlar tamamen öznel. Vive la différence ;-)
:let @/='hilight_this'
varsayarak da yapabilirsiniz hlsearch
. Atlamadan metni vurgular ve mevcut ayarları değiştirmeniz gerekmez. Bu, o anda arama kaydında depolanan değeri değiştirir.
İlk olarak (veya .vimrc dosyanızda):
:set hlsearch
Ardından imlecinizi vurgulanmasını istediğiniz sözcüğün üzerine getirin ve tuşuna basın *
.
hlsearch
geçerli aramanın tüm örneklerini vurgulamak *
ve imlecin altındaki kelimeyi aramak anlamına gelir.
Önce aşağıdaki komutu vererek hlsearch'ün etkinleştirildiğinden emin olun
:set hlsearch
Bunu ayrıca .vimrc dosyanıza küme olarak ekleyebilirsiniz
set hlsearch
şimdi hızlı arama mekanizmasını komut modunda veya normal bir arama komutunda kullandığınızda, tüm sonuçlar vurgulanacaktır. Sonuçlar arasında ilerlemek için 'n' tuşuna, geriye gitmek için 'N' tuşuna basın
Normal modda, imlecin altındaki kelimeyi hızlıca aramak ve bir komutta '*' tuşuna basarak bir sonraki tekrarlamaya atlamak için, imleç altındaki kelimeyi arayabilir ve '#' a basarak bir önceki tekrarlamaya geçebilirsiniz. '
Normal modda, hızlı arama
/searchterm<Enter>
ocuurences kullanım vurguları kaldırmak için, bu benim .vimrc bir kısayola bağladım
:nohl
Arama vurgulamayı etkinleştir:
:set hlsearch
Ardından kelimeyi arayın:
/word<Enter>
Bunu yapmak için en sevdiğim mark.vim eklentisidir. Aynı anda farklı renklerde birkaç kelimeyi vurgulamayı sağlar.
imleci hareket ettirmeden sözcüğü vurgulamak için
" 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>
senin vimrc içine.
Bu konuda güzel olan g*
ve g#
hala "normal" gibi çalışacak *
ve #
.
Ayarlamak için hlsearch
(başka bir işlevi yoksa o komut modunda "Noh" ile başlar) kapalı, sen "kısa formunu" kullanabilirsiniz: :noh
. Veya uzun sürümü kullanabilirsiniz::nohlsearch
Aşırı rahatlık için (kendimi hlsearch
günde 20 kez değiştiriyorum ), geçiş yapmak için bir şey eşleyebilirsiniz hlsearch
:
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
.:. senin eğer <leader>
is \(varsayılan olarak ise) tuşlarına basabilirsiniz \stiçinde (hızlı) Normal geçiş için modhlsearch
.
Ya da belki sadece :noh
haritaya sahip olmak istersiniz :
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
Yukarıda basitçe çalışır :nohlsearch
(benzemiyor :set hlsearch!
hala tuşuna kelime dahaki sefere vurgular) *veya #içinde , normal modda.
şerefe
kullanım autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Bir IncSearch
şeye ayarladığınızdan emin olun . örn call s:Attr('IncSearch', 'reverse')
. Alternatif olarak, yerine başka bir vurgulama grubu da kullanabilirsiniz.
Bu, imlecinizin altındaki kelimelerin tüm tekrarlarını gecikmeksizin vurgulayacaktır. Ben kod aracılığıyla wizzing zaman bir gecikme beni yavaşlatıyor buluyorum. Vurgu rengi, kelimenin rengiyle eşleşeceğinden, düzeninizle tutarlı kalır.
Neden sadece: z /
Bu, imlecin altındaki geçerli sözcüğü ve diğer tüm olayları vurgulayacaktır. Ayrıca, aradığınız her öğe için ayrı bir komut vermek zorunda değilsiniz. Belki de bu kutsal olmayan gvim'de mevcut değildir? Varsayılan olarak vim'dir.
* yalnızca imlecin bir sonraki tekrarlamaya geçmesini istiyorsanız iyidir. İki şeyi görsel olarak karşılaştırırken genellikle imlecin hareket etmesini istemezsiniz ve her seferinde * tuşuna basmak can sıkıcıdır.
~/.vimrc
dosyanıza ekleyin
" 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%
Normal modelde kelimenin üzerine gidin.
Tüm projenizi kelime üzerinde yinelemeli olarak aramak için * F8 tuşuna basın
Örneğin bu eklenti:
Sadece aramak imlecin altındaki içinde vimawesome.com
Anahtar clagccs belirtildiği gibi , vurgu vurgulamak aramanızla çelişmez : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Arama ile nasıl ÇATIŞMADIĞININ ekran görüntüsü: Notlar:
hlsearch
eşlemek isteyebilirsiniz . Bu, ayarı her zaman kapatmak yerine değiştirir.:set hlsearch!
:set nohlsearch