You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Vim的vnoremap设为行尾分号添加/移除的切换功能?

实现Vim可视化模式行尾分号切换功能

完全可以实现这个切换需求,把你原来的映射替换成下面这段即可:

vnoremap ; :<C-U>s/\%V\(;\)\?$/\=submatch(1) == '' ? ';' : ''/g<CR>

简单解释下逻辑:

  • <C-U>:清除Vim自动补全的可视化范围标记(<,'>),确保替换只作用于你选中的内容区域
  • \%V:限定替换操作仅在当前可视化选中的范围内生效
  • \(;\)\?$:匹配行尾的可选分号(要么行尾有一个分号,要么没有)
  • \=submatch(1) == '' ? ';' : '':用Vim的表达式判断——如果没匹配到分号(submatch(1)为空),就在行尾加;;如果匹配到了,就把分号替换成空(也就是移除)

这样每次在可视化模式选中行后按;,就能在“添加分号”和“移除分号”之间来回切换了。

内容的提问来源于stack exchange,提问作者patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:54:52