Vim:在标签中包含单词

时间:2012-04-24 21:03:09

标签: vim

我想在Vim中包含一个带有封闭标记的单词,例如从word'word'或从word(word)

4 个答案:

答案 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}世界!

     

现在用yssbyes)将整行括在括号中。

     

({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次罢工:

  • qm开始在字母m
  • 中记录宏
  • cw只更改一个单词并使您进入插入模式
  • '写下第一句话
  • &lt; c-r&gt;“粘贴我们在体育场2时擦除的单词 插入模式
  • '是另一个引用
  • &LT; ESC&GT;回到编辑词
  • q结束宏。

回想一下@m:现在我们只用两次罢工围绕......