假设我的光标在单词word
内。使用vim-surround,输入序列ysiw*
会将word
替换为*word*
。
问题:我可以输入单个序列来代替生成**word**
(即字粗体的常用降价方法)吗?这反对两次输入ysiw*
,这感觉很麻烦。
答案 0 :(得分:8)
@Dan Lowe关于使用repeat.vim和.
的回答是现货。但是,您也可以创建自定义环境,以便更快地执行常见操作。
将以下内容添加到~/.vim/after/ftplugin/markdown.vim
文件中:
let b:surround_{char2nr('b')} = "**\r**"
现在,您可以ysiwb
围绕双*
个(b
为粗体)。
有关自定义环境的更多帮助,请参阅:h surround-customizing
。
答案 1 :(得分:4)
安装Laravel's source插件,然后您可以使用.
(重复运算符)执行此操作。
你可能需要在这里使用ysiw*l.
,因为(至少,当我测试时)surround.vim将光标留在第一个周围的角色上,所以你必须回到单词中进行重复最后一个环绕声。否则,您最终会得到***word*
。
更新:有趣的是,在阅读了Peter Rincker提到这个答案的答案之后,我发现他建议的是我自己的Vim设置。但是我没有将它放在一个后续文件中,我的文件直接在.vimrc
中,就像这样:
autocmd FileType markdown,octopress let b:surround_{char2nr('i')} = "*\r*"
autocmd FileType markdown,octopress let b:surround_{char2nr('b')} = "**\r**"
答案 2 :(得分:1)
如果你想进行任意操作并重复它们,最好的方法是使用vim宏。
例如,要重复问题中的操作,假设它一般是可重复的,可以执行以下操作将宏记录在寄存器q
中。
qqysiw*q
然后使用以下内容重播第二个实例。
@q
或者,如果你想让一个宏做双重环绕,一种可能的方法就是在一个宏中记录两次序列。
qqysiw*ysiw*q
答案 3 :(得分:0)
使用lh-brackets,在降价文档中,您可以在正常模式下在当前单词上键入_
两次 - 这会在渲染时产生相同的降价结果。你也可以输入\*
两次,但这有点麻烦。
答案 4 :(得分:0)
作为一种稍微不同的方法,我们可以定义新命令:
1)可视区域加粗命令,例如:
:vmap \q di****<ESC>hP
(删除视觉区域,插入&#34; ****&#34;,将其放回中间)。像ve\q
一样使用它。
2)insert-mode命令用于加粗最后写的字:
:imap \q <ESC>diwi****<ESC>hPlla
3)光标下的正常模式加粗词:
:map \q diwi****<ESC>hP