VIM原生操作:如何用单命令为指定单词组首尾添加**(无需替换)
Vim原生为多单词首尾添加**的方法
不用surround插件,原生Vim可以通过单个命令实现需求,以下是两种实用方案:
方案1:基于普通模式命令的直接实现
如果光标位于目标单词组(比如foo bar baz)的任意位置,执行以下单个命令即可完成:
:normal! 2bi**<Esc>3ea**<Esc>
命令拆解:
2b:连续回退两次,跳转到第一个单词的开头(适配光标在目标单词组任意位置的情况)i**<Esc>:在第一个单词开头插入**并退出插入模式3e:连续跳三次到单词末尾,定位到第三个单词的结尾a**<Esc>:在第三个单词末尾插入**并退出插入模式
如果光标固定在第一个单词的开头,命令可以简化为:
:normal! i**<Esc>3ea**<Esc>
方案2:结合寄存器与可视化的命令实现
如果需要更灵活处理任意长度的文本块,也可以用这条单个命令(以选中3个单词为例):
:execute "normal! v3w\"=** . @\" . \"**\"\\<CR>P"
命令拆解:
v3w:进入字符可视化模式,选中3个单词"=** . @\" . \"**\":利用表达式寄存器拼接出带**的新文本<CR>P:将拼接后的文本替换掉选中的内容
内容的提问来源于stack exchange,提问作者Marcel
相关产品推荐
相关产品推荐

