我想在 Vim 中用封闭标签包装一个单词,例如 from wordto'word'或 from wordto (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 回忆一下:现在我们只使用两个罢工来包围......