如何编写Vim自定义命令实现选中文本剪切后放入引号?
Vim自定义命令实现选中文本包裹双引号
直接使用以下命令定义即可:
command! -range -visual Wq <line1>,<line2>normal! c""<Esc>P
关键说明:
-visual:必须添加这个参数,确保命令能正确识别视觉选中的文本范围,在选中文本后执行命令时生效。<line1>,<line2>:指定命令作用的行范围,配合normal!将普通模式按键序列应用到该范围。normal!:强制执行普通模式命令,忽略用户的映射,确保按键序列c""<Esc>P被准确执行——c剪切选中内容,输入""后按<Esc>回到普通模式,再P把剪切的内容粘贴到双引号之间。
原写法的问题:
- 缺少
-visual参数,视觉选中状态下无法正确关联范围。 - 使用
execute的方式冗余且转义错误,直接用normal!更简洁可靠,不需要对引号做额外转义。 - 语法结构错误,自定义命令中范围后应直接跟
normal!而非execute。
内容的提问来源于stack exchange,提问作者hilbor
相关产品推荐
相关产品推荐

