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

如何让Vim的c/、d/、y/命令操作包含目标字符?

哈哈,这个需求太戳我了!刚用Vim的时候我也吐槽过c/的设计——明明c$连行尾都包含,怎么c/xxx就偏偏停在xxx前面,完全反直觉啊!

其实解决起来很简单,利用Vim的可视模式就能完美实现你要的“包含目标字符”的效果,而且能直接适配d和y命令。只需要在你的.vimrc(或者Neovim的init.vim/init.lua里嵌入Vimscript片段)里加几行映射:

nnoremap c/ v/<CR>c
nnoremap d/ v/<CR>d
nnoremap y/ v/<CR>y

原理解释:

  • v/xxx<CR>会进入可视模式,自动选中从当前光标位置到**第一个匹配的xxx字符(包含xxx本身)**的所有内容
  • 紧接着的c/d/y就会对选中的内容执行修改/删除/复制操作,正好贴合你想要的逻辑

举个你提到的JavaScript例子:假设光标在const foo = bar; console.log(foo);的开头,按c/;,会直接选中const foo = bar;这整段(包括最后的分号),然后立刻进入插入模式让你修改,完全不用额外按键!

如果你还需要支持反向查找(比如向前找某个字符并操作),可以再加对应的反向映射:

nnoremap c? v?<CR>c
nnoremap d? v?<CR>d
nnoremap y? v?<CR>y

小提示:

要是偶尔需要用原生的“不包含目标字符”的c/行为,只需要先按<C-v>(Ctrl+V),再按c/,就能跳过自定义映射,执行Vim默认的命令啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:59:14