双vim环绕*

Geo*_*rge 4 vim

假设我的光标在单词内word.使用vim-surround,键入序列ysiw*将替换word*word*.

问题:我可以输入一个单独的序列来生成**word**(即,用于字粗体的公共降价方法)?这反对键入ysiw*两次,这感觉很麻烦.

Pet*_*ker 8

@Dan Lowe关于使用repeat.vim的答案,并且.是现货.但是,您也可以创建自定义环境以使常见操作更快一些.

将以下内容添加到您的~/.vim/after/ftplugin/markdown.vim文件中:

let b:surround_{char2nr('b')} = "**\r**"
Run Code Online (Sandbox Code Playgroud)

现在你可以ysiwb使用double *(b粗体)来包围.

有关定制环境的更多帮助请参阅:h surround-customizing.


Dan*_*owe 5

安装vim-repeat插件,然后你可以用.(repeat 操作符)来做到这一点。

您可能需要在ysiw*l.这里使用,因为(至少,当我测试时)围绕。vim 将光标留在第一个周围字符上,因此您必须移回单词以重复最后一个环绕。否则你最终会得到***word*.

更新:有趣的是,在阅读了提到这个答案的 Peter Rincker 的答案后,我发现他的建议是在我自己的 Vim 设置中。但是我没有把它放在 after 文件中,我的直接放在 . 中.vimrc,如下所示:

autocmd FileType markdown,octopress let b:surround_{char2nr('i')} = "*\r*"
autocmd FileType markdown,octopress let b:surround_{char2nr('b')} = "**\r**"
Run Code Online (Sandbox Code Playgroud)