我想模仿在游戏Vim Adventures中发现的一个很好的效果:当一个 yank 命令完成时,我希望被拉出的区域被突出显示(比如说红色)一秒钟,以表明我的选择是正确的。
例如,yy
将当前行以红色突出显示一秒钟,然后我就会知道选择了什么。
我想模仿在游戏Vim Adventures中发现的一个很好的效果:当一个 yank 命令完成时,我希望被拉出的区域被突出显示(比如说红色)一秒钟,以表明我的选择是正确的。
例如,yy
将当前行以红色突出显示一秒钟,然后我就会知道选择了什么。
为此有一个名为vim-highlightedyank的插件,它适用于 Vim 和 Neovim。安装它,它就可以工作了。您还可以通过添加以下配置来设置突出显示持续时间:
" set highlight to 1000 ms
let g:highlightedyank_highlight_duration = 1000
如果你使用的是 nvim 0.5+,他们已经在这个 pull request中内置了这个小功能。
在这种情况下不需要插件。只需安装 nvim 0.5+ 并将以下配置添加到您的init.vim
:
augroup highlight_yank
autocmd!
au TextYankPost * silent! lua vim.highlight.on_yank({higroup="IncSearch", timeout=700})
augroup END
有关此功能的更多信息,请参阅Neovim 的文档。
一位 vimer(不是我)看到了这个问题,并为此编写了一个插件。请注意,这不是一个简单的解决方案,可能不适合那些喜欢将 vim 保持在最低限度的人,但它就像一个魅力。另请注意,这并不是一项严肃的工作,因此您不一定会寻求稳定的支持。
使用您喜欢的方式安装这些插件。
假设您想使用 Meta+y 来“拉动和突出显示”。在您的.vimrc
.
noremap <expr> <Plug>(yank-highlight) operator#sequence#map("y", "\<Plug>(operator-highlight)")
nmap <A-y> <Plug>(yank-highlight)
vmap <A-y> <Plug>(yank-highlight)
例如,更改为您想要使用<A-y>
的任何键盘映射(可能无法正常工作):可能会很好。y
<Leader>y
高亮可以自动清除。写下以下内容:
let g:operator#highlight#clear_time=2.0
这将在大约 2 秒内清除该突出显示。间隔还取决于:set updatetime?
默认为4000
(ms),因此如果这似乎无法清除突出显示,请尝试设置updatetime
为较小的值。
我使用 markonm 的名为hlyank.vim的插件。
我打开插件并更改了时间,因为它只在屏幕上闪烁颜色,因此将其从 200 更改为 800。在自动加载文件夹中,我打开hlyank.vim
并编辑了以下行:
call timer_start(800, {-> matchdelete(id, winid)})
else
call timer_start(800, {-> matchdelete(id)})