我想在Vim中包含一个带有封闭标记的单词,例如从word
到'word'
或从word
到(word)
。
答案 0 :(得分:20)
使用Tim Pope的vim-surround,您可以使用:ysw'
用“`”括起一个单词,ysw(
用“(”)围绕单词。如果你想围绕带有实际标记的字词,例如HTML标记<code>
,您可以使用yswt
,然后在提示中输入您的标记。如果您想要更改现有的环绕元素,请使用csw
,键入要替换的环绕元素,然后单击<CR> (enter)
,然后键入新的周围元素。
请注意,要使上述命令起作用,您必须将光标放在要包围的单词的开头。
从官方网页:
在
中按cs"'
(即c,s,双引号,单引号)“Hello world!”
将其更改为
'Hello world!'
现在按
cs'<q>
将其更改为你好世界!
要完整循环,请按
cat"
以获取“Hello world!”
要完全删除分隔符,请按
ds"
。你好世界!
现在光标位于“Hello”,按
ysiw]
(iw
是文本对象)。[你好]世界!
让我们制作大括号并添加一些空格(使用“}”而不是“{”表示没有空格):
cs]{
{Hello}世界!
现在用
yssb
或yes)
将整行括在括号中。({Hello} world!)
还原为原始文字:
ds{ds)
你好世界!
强调你好:
ysiw<em>
您好世界!
最后,让我们尝试一下视觉模式。按下大写
你好世界!V
(对于线性可视模式) 然后是S<p class="important">
。
有关更详细的使用信息,请安装vim-surround
,然后使用:help surround
调用文档。
答案 1 :(得分:4)
看看Tim Pope的surround.vim。
答案 2 :(得分:4)
<c-r>
非常方便,允许您插入寄存器的内容,剪贴板,光标下的单词(<c-r><c-a>
)等。例如:
nmap <space>' ciw'<c-r>"'<esc>
vmap <space>' c'<c-r>"'<esc>
nmap <space>( ciw(<c-r>")<esc>
vmap <space>( c(<c-r>")<esc>
将space+'
映射到单引号中包装当前单词或视觉选择,或space+(
将当前单词或视觉选择包装在双引号中。
映射的内容意味着“更改内部单词|选择文本,插入引号,插入单词,插入引号,退出插入模式”。
答案 3 :(得分:2)
我首次使用此代码段将宏录制到字母M中: qmcw'&lt; c-r&gt;“'&lt; esc&gt; q 然后用@m
重做它解释,最初需要10次罢工:
回想一下@m:现在我们只用两次罢工围绕......