我想在 Vim 中用封闭标签包装一个单词,例如 from word
to'word'
或 from word
to (word)
。
4 回答
使用 Tim Pope 的vim-surround,可以使用:ysw'
用“`”ysw(
包围单词,用“(”包围单词。如果你想用 HTML 标签等实际标签包围单词<code>
,可以使用yswt
,然后在提示中输入您的标签。如果您想更改现有的环绕元素,请使用csw
,输入您要替换的环绕元素并点击<CR> (enter)
,然后输入新的环绕元素。
请注意,要使上述命令起作用,您必须将光标放在要包围的单词的开头。
从其官方页面:
按
cs"'
(即c、s、双引号、单引号)里面“你好世界!”
将其更改为
'你好世界!'
现在按
cs'<q>
将其更改为你好世界!
要转一圈,请按
cat"
获取“你好世界!”
要完全删除分隔符,请按
ds"
。你好世界!
现在将光标放在“Hello”上,按
ysiw]
(iw
是一个文本对象)。[你好世界!
让我们制作大括号并添加一些空格(使用“}”而不是“{”表示没有空格):
cs]{
{ 你好世界!
yssb
现在用or将整行括在括号中yes)
。({ 你好世界!)
还原为原文:
ds{ds)
你好世界!
强调你好:
ysiw<em>
你好世界!
最后,让我们试试视觉模式。按大写
你好世界!V
字母(用于线性视觉模式),然后按S<p class="important">
。
有关更详细的使用信息,请安装vim-surround
,然后使用:help surround
来调用文档。
看看 Tim Pope 的round.vim。
<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+(
将当前单词或视觉选择包含在双引号中。
映射的内容是“改变内词|选中文本,插入引号,插入单词,插入引号,退出插入模式”。
我第一次使用这个片段将宏记录到字母 M 中: qmcw'<cr>" '<esc>q 然后用@m 重做
解释,首先需要 10 次打击:
- qm 开始记录字母 m 中的宏
- cw 只更改一个单词并让您进入插入模式
- ' 写第一个引号
- <cr>" 粘贴我们在 stade 2 删除的单词,同时保持插入模式
- ' 是另一个周围的报价
- <esc> 返回编辑字
- q 结束宏。
用@m 回忆一下:现在我们只使用两个罢工来包围......