vim - 如何在执行映射时防止搜索突出显示
问题描述
在 中编写映射时nvim
,我有时会使用搜索/替换,例如在此映射中创建与当前行长度相同的标题(用于降价等):
nnoremap <leader>= 0Vyp0v$:s/./=/g<cr>:nohls<cr>
虽然这会清除搜索突出显示:nohls
,但它仍然会创建搜索/替换的“闪光”。
解决方案
一般解决方案
我会利用:help function-search-undo
这些命令并将其提取到:function
. 这不会破坏当前的搜索模式,因此也不会影响搜索突出显示。要完全中立,您只需从搜索历史记录中删除使用的替换模式(通过histdel()
):
function! MakeHeading()
normal! Vyp
s/./=/g
call histdel('search', -1)
endfunction
nnoremap <leader>= :call MakeHeading()<CR>
请注意,我还简化了视觉选择处理:V
一如既往地选择整行,您不需要转到第一列 ( ^
),也不需要重新选择;我们可以让:substitute
工作在当前(粘贴的)行上。
替代实施
这让我想起了这个功能的规范实现使用:help v_r
命令,这确实需要重新选择:
nnoremap <leader>= Vyp0v$r=
由于此处不涉及任何模式,因此搜索突出显示完全不受它的影响 :-)
推荐阅读
- c# - 在 C# 中用一行写一个列表
- azure - 使用 Terrafrom 获取 Azure Databricks URL
- amazon-web-services - 在 Terraform 中仅将 AWS Aurora 引擎版本指定为主要版本号
- javascript - if 语句中的错误消息不显示
- python - 如何在 seaborn catplot 中旋转 xticklabels
- php - Laravel 7 绑定路由
- python - 如何从熊猫中的最后一个值的每一天中选择一个ID
- list - 无法将字符串列表传递给 Web API 端点。为什么?
- c++ - 从 CGAL Mesh_complex_3_in_triangulation_3 获取点和单元格
- c++ - 如何将 C++ 中的计算推迟到需要时?