Если вы хотите выделить слово под курсором как *
, но не хотите переместить курсор, тогда я предлагаю следующее:
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
В основном эта командаустанавливает регистр поиска (@/
) на текущее слово и включает 'hlsearch'
, чтобы результаты подсвечивались.При установке @/
курсор не перемещается, как при использовании *
или #
.
Объяснение:
<silent>
- чтобы не показывать команду после выполнения <2-LeftMouse>
- Двойной щелчок левой кнопкой мыши @/
- регистр, используемый для поиска с /
и ?
expand('<cword>')
получить текущее слово под курсором escape(pattern, '\')
экранировать регулярное выражение в случае метасимволов \V
использовать очень немагический режим, поэтому все метасимволы должны быть экранированы с помощью /
\<
и \>
, чтобы гарантировать, что текущее слово находится на границе слова set hls
установить 'hlsearch'
, чтобы подсветка появилась
Если настройка регистра @/
не является вашей чашкой чая, вы можете использовать :match
вместо этого следующим образом:
nnoremap <silent> <2-leftMouse> :exe 'highlight DoubleClick ctermbg=green guibg=green<bar>match DoubleClick /\V\<'.escape(expand('<cword>'), '\').'\>/'<cr>
Чтобы очистить совпадения, просто используйте:
:match none