Vim环绕:创建新标签,但不缩进/换行

Vim环绕:创建新标签,但不缩进/换行,vim,surround,Vim,Surround,我想模仿Textmates CTRL+ALT+w,它在同一行上创建一对新的开始和结束HTML标记 在VIM Surround中,我在编辑模式下使用CTRL+st进行此操作,但它总是在设置标记后缩进并创建新行,因此看起来像这样*=光标位置: <p> * </p> 有没有办法做到这一点 <p>*</p> 我猜你的问题是所选区域是直线方向的。例如,如果选择几个带有V的生命并用标记将其环绕,则标记将放置在选定行的上方一行和下方一行 您可能希望创建一

我想模仿Textmates CTRL+ALT+w,它在同一行上创建一对新的开始和结束HTML标记

在VIM Surround中,我在编辑模式下使用CTRL+st进行此操作,但它总是在设置标记后缩进并创建新行,因此看起来像这样*=光标位置:

<p>
  *
</p>
有没有办法做到这一点

<p>*</p>

我猜你的问题是所选区域是直线方向的。例如,如果选择几个带有V的生命并用标记将其环绕,则标记将放置在选定行的上方一行和下方一行

您可能希望创建一个按角色的选择,在其周围使用v

无论如何,请发布您创建的地图,以便我们可以帮助调试

使现代化 在评论中做了一些澄清之后,我想告诉你,环绕插件并不是最好的选择。正如其名称所描述的,创建它是为了处理周围的内容。因此,您可能需要围绕内容

<p         <--- Now when you type ">", if becomes:
<p>|</p>   <--- Where "|" is the cursor.
就你的情况而言,我建议你去看看。输入>后,此插件将关闭html标记。它当然更合适,并且比环绕使用更少的按键

<p         <--- Now when you type ">", if becomes:
<p>|</p>   <--- Where "|" is the cursor.
显然,您会将此行为应用于每个标记。但如果您喜欢,这可能很方便。

在正常模式下,键入vstp>进入视觉模式,并在当前光标位置的同一行上输出打开和关闭标记。使用大写字母S保持当前缩进级别


这不会像您描述的那样将光标放在标记之间,但Textmate的CtrlW快捷方式也不会。我想您指的是CTRL+Shift+w,而不是CTRL+ALT+w,因为后者只是输出一个菱形符号。

我的答案可能会很晚,但我会尽力提供帮助。 我对Vimsurround插件也有类似的问题。每次我使用ctrl+V选择一行句子,并尝试用一些东西将其环绕,我得到如下结果:

{
var myVar
}
与此相反:

{ var myVar } // what I wanted

我找到了简单的解决方案:从正常模式下,我用vis命令选择一行,然后键入大写字母C我的vim环绕贴图并选择括号环绕。然后我得到一行很好的环绕。

根据作者实际寻找的内容,问题标题在技术上是错误的,但由于我实际上是在寻找标题中所问问题的答案,我想我也应该提供一个答案

要在使用分块选择ie:VysS时在元素周围创建一个新标记,而不使用Vim Surround使用的自动缩进,您可以执行以下操作:

^ys$

此命令将光标移动到行的第一个非空字符处,发出要环绕的命令,并移动到行的末尾。然后,只需开始输入您的标签

结果是:

<input type="email" name="email">
可能会变成这样:

<li><input type="email" name="email"></li>

该命令也可在中重复。还有所有正常的Vim善良。

偶然发现了这个问题,因为我也想知道这个问题-我相信最简单的方法就是:

yss<p>

yss用没有缩进的东西包围一条线-请参见此处:

Afaik我描述的行为是标准的Vim包围-意味着我自己没有创建任何贴图。我不想将现有内容包装到标记中,只想创建一个空的对来写入。@Thomas:对不起,我不知道任何名为CTRL st的Vim命令,所以我认为这是您创建的映射。总之,现在我正确地理解了你的问题,并更新了答案。sparkup[1]使用Ctrl-e quiet关闭标记,并执行除1之外的其他操作-也很高兴知道,谢谢,但我认为sidylls的建议更接近我想要的。