11

我想在 Vim 中用封闭标签包装一个单词,例如 from wordto'word'或 from wordto (word)

4

4 回答 4

21

使用 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来调用文档。

于 2012-04-24T21:11:49.290 回答
4

看看 Tim Pope 的round.vim

于 2012-04-24T21:07:18.450 回答
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+(将当前单词或视觉选择包含在双引号中。

映射的内容是“改变内词|选中文本,插入引号,插入单词,插入引号,退出插入模式”。

于 2012-04-24T22:18:15.047 回答
3

我第一次使用这个片段将宏记录到字母 M 中: qmcw'<cr>" '<esc>q 然后用@m 重做

解释,首先需要 10 次打击:

  • qm 开始记录字母 m 中的宏
  • cw 只更改一个单词并让您进入插入模式
  • ' 写第一个引号
  • <cr>" 粘贴我们在 stade 2 删除的单词,同时保持插入模式
  • ' 是另一个周围的报价
  • <esc> 返回编辑字
  • q 结束宏。

用@m 回忆一下:现在我们只使用两个罢工来包围......

于 2013-08-19T22:19:44.587 回答