当我在Windows上时,我使用notepad ++,而在Linux上我使用vim.我真的很喜欢vim.但至少有一件事我发现在记事本++中真的很有趣.您可以双击一个单词,它会自动突出显示该单词的所有出现.我想知道我是否可以用vim做那样的事情?所以问题是当你双击vim中的单词时如何突出显示单词的所有出现.
显然,我不想搜索那个单词,或者改变我的光标位置,只是突出显示.我:set hlsearch也在.
可能你可能想在vim中避免鼠标,但我在这里做了一个例外:).
我知道*同样的工作,但鼠标怎么样?
Pet*_*ker 18
如果你想突出光标像下的单词*,但不希望将光标移动话,我建议如下:
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
Run Code Online (Sandbox Code Playgroud)
基本上,此命令将搜索寄存器(@/)设置为当前字并打开,'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>
Run Code Online (Sandbox Code Playgroud)
要清除匹配,只需使用:
:match none
Run Code Online (Sandbox Code Playgroud)
das*_*zul 14
您可以通过简单映射映射*以双击:
:map <2-LeftMouse> *
Run Code Online (Sandbox Code Playgroud)
如果要在插入模式下使用所述功能,可以使用此映射:
:imap <2-LeftMouse> <c-o>*
Run Code Online (Sandbox Code Playgroud)
如果没有(Ctrl-o),*将被打印
[编辑]
正如ZyX指出的那样,如果你想确保if 或将被映射到其他东西,noremap分别使用它总是一个好主意,这个递归映射将不会被扩展.inoremap*<c-o>
| 归档时间: |
|
| 查看次数: |
3880 次 |
| 最近记录: |