Vim中括号、括号onoremap映射正常,字符串映射失效求助
Vim字符串内文本选择映射失效的解决方法
问题原因
你写的onoremap s i\"|存在两个问题:
- 转义逻辑错误:在Vim映射定义中,若直接编写映射动作,双引号无需额外转义;用双引号包裹映射内容时,内部转义写法会被异常解析。
- 多余的
|符号:该符号用于标记光标最终位置,但i"本身已会将光标定位在引号内,额外添加会干扰映射的正常逻辑。
正确的映射写法
使用以下任意一种方式即可实现需求:
方式1:直接定义映射(推荐)
在.vimrc或Vim命令行中输入:
onoremap s i"
在操作模式(如v可视化模式、d删除模式、y复制模式)下,按下s即可选中当前光标所在双引号内的所有内容。
方式2:用单引号包裹映射体
若需明确区分映射内容,可将右侧动作用单引号括起:
onoremap s 'i"'
验证方法
- 打开包含字符串的文件,例如
echo "hello world"; - 将光标移至引号内任意位置
- 按下
v进入可视化模式后按s,应选中hello world;或直接按ds删除引号内内容,验证功能是否生效
内容的提问来源于stack exchange,提问作者Ciko
相关产品推荐
相关产品推荐

