如何将Vim的vnoremap设为行尾分号添加/移除的切换功能?
实现Vim可视化模式行尾分号切换功能
完全可以实现这个切换需求,把你原来的映射替换成下面这段即可:
vnoremap ; :<C-U>s/\%V\(;\)\?$/\=submatch(1) == '' ? ';' : ''/g<CR>
简单解释下逻辑:
<C-U>:清除Vim自动补全的可视化范围标记(<,'>),确保替换只作用于你选中的内容区域\%V:限定替换操作仅在当前可视化选中的范围内生效\(;\)\?$:匹配行尾的可选分号(要么行尾有一个分号,要么没有)\=submatch(1) == '' ? ';' : '':用Vim的表达式判断——如果没匹配到分号(submatch(1)为空),就在行尾加;;如果匹配到了,就把分号替换成空(也就是移除)
这样每次在可视化模式选中行后按;,就能在“添加分号”和“移除分号”之间来回切换了。
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

