Podświetl zmienną pod kursorem w Vimie tak jak w NetBeans
Pracowałem w NetBeans i spodobała mi się Ta funkcja: gdy umieścisz kursor w nazwie zmiennej, wszystkie jej wystąpienia są podświetlone. Jest to bardzo przydatne do szybkiego przeszukiwania wszystkich wystąpień zmiennej. Czy można dodać to zachowanie do Vima?
9 answers
Ten autocommand zrobi to, co chcesz:
:autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Edit: użyłem grupy podświetlenia IncSearch
w moim przykładzie, ale możesz znaleźć inne kolory do użycia, uruchamiając to polecenie:
:so $VIMRUNTIME/syntax/hitest.vim
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 13:37:00
Jeśli ustawisz
:set hlsearch
Aby podświetlić wszystkie wystąpienia wzorca wyszukiwania, a następnie użyć *
lub #
, aby znaleźć wystąpienie słowa pod kursorem, które zapewni Ci jakiś sposób na to, co chcesz. Myślę jednak, że podświetlanie zmiennych świadomych składni wykracza poza zakres Vima.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-11 17:45:06
To polecenie pozwoli zmiennej włączyć / wyłączyć podświetlanie wszystkich wystąpień słowa pod kursorem:
:autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')):'match none':""
Można aktywować podświetlenie za pomocą:
:let HlUnderCursor=1
I wyłącz go za pomocą:
:let HlUnderCursor=0
Można łatwo zdefiniować klawisz skrótu do włączania / wyłączania podświetlania:
:nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(\"HlUnderCursor\")?HlUnderCursor*-1+1:1"<CR>
Usunięcie zmiennej uniemożliwiłoby wykonanie polecenia match i nie wyczyściłoby bieżącego podświetlenia:
:unlet HlUnderCursor
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-17 10:02:29
Jeśli nie chcesz wyróżniać słów językowych (wypowiedzi / preprocesy takie jak if
, #define
) gdy kursor znajduje się na tych słowach, możesz umieścić tę funkcję w swoim .vimrc
na podstawie odpowiedzi @too_much_php:
let g:no_highlight_group_for_current_word=["Statement", "Comment", "Type", "PreProc"]
function s:HighlightWordUnderCursor()
let l:syntaxgroup = synIDattr(synIDtrans(synID(line("."), stridx(getline("."), expand('<cword>')) + 1, 1)), "name")
if (index(g:no_highlight_group_for_current_word, l:syntaxgroup) == -1)
exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
else
exe 'match IncSearch /\V\<\>/'
endif
endfunction
autocmd CursorMoved * call s:HighlightWordUnderCursor()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 16:35:41
Myślę, że to, czego naprawdę chcesz, to następujący plugin Shuhei Kubota:
Http://www.vim.org/scripts/script.php?script_id=4306
Zgodnie z opisem: 'ten skrypt podświetla słowa pod kursorem jak wiele IDE.'
Zdrówko.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-25 16:04:18
vim_current_word
działa po wyjęciu z pudełka, jest świadomy składni i umożliwia konfigurowanie kolorów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 12:28:46
Aby odwzorować F2, aby przełączyć podświetlenie:
map <F2> :set hlsearch!<CR> * #
To z pewnością nie jest idealne. '* #'skacze trochę...Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-16 12:53:09
Ten wariant jest zoptymalizowany pod kątem szybkości (używa CursorHold zamiast CursorMoved)i kompatybilności z hlsearch
. Bieżące podświetlanie słowa wyszukiwania nie zostanie przerwane.
" autosave delay, cursorhold trigger, default: 4000ms
setl updatetime=300
" highlight the word under cursor (CursorMoved is inperformant)
highlight WordUnderCursor cterm=underline gui=underline
autocmd CursorHold * call HighlightCursorWord()
function! HighlightCursorWord()
" if hlsearch is active, don't overwrite it!
let search = getreg('/')
let cword = expand('<cword>')
if match(cword, search) == -1
exe printf('match WordUnderCursor /\V\<%s\>/', escape(cword, '/\'))
endif
endfunction
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-22 16:51:40
Podobne do zaakceptowanej odpowiedzi, ale w ten sposób można ustawić czas opóźnienia po przytrzymaniu kursora nad Słowem, zanim pojawi się podświetlenie. 1000
jest w milisekundach i oznacza, że podświetli się po 1 sekundzie.
set updatetime=1000
autocmd CursorHold * exe
\ printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Zobacz :h CursorHold
aby uzyskać więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-17 23:22:26