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

如何在(n)vim中翻转光标所在位置的比特位?

Vim光标位比特翻转快捷方案
  • 单次翻转(普通模式)
    不用手动输入目标比特,直接借助Vim的表达式寄存器实现:把光标停在目标0/1上,按r,接着按Ctrl+R,输入1 - getline('.')[col('.')-1]后回车,就能自动翻转当前位。

    嫌步骤繁琐的话,直接在.vimrc里配置快捷键映射:

    nnoremap <leader>x r<C-R>=1 - getline('.')[col('.')-1]<CR>
    

    之后在普通模式下按<leader>x(默认leader键是\),一键完成翻转操作。

  • 批量翻转(可视模式)
    如果要选中一段区域翻转所有0/1,选中目标区域后执行命令:

    :s/[01]/\=1 - submatch(0)/g
    

    同样可以映射成快捷键简化操作:

    vnoremap <leader>x :s/[01]/\=1 - submatch(0)/g<CR>
    

原理说明:getline('.')获取当前行文本,col('.')-1将Vim的列数(从1开始)转换为字符串索引(从0开始),通过1 - 字符值实现0和1的互转,再通过寄存器替换对应位置的字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:44:56