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

|| 我想模仿Textmates CTRL + ALT + w,它在同一行上创建一对新的打开和关闭HTML标签。 在VIM Surround中,我为此在编辑模式下使用CTRL + st,但是在设置标签后,它总是缩进并创建新行,因此它看起来像这样(* =光标位置):
<p>
  *
</p>
有没有办法做到这一点? :
<p>*</p>
    
已邀请:
我想您的问题是所选区域是“逐行”。例如,如果您选择一些带有
V
的生物并用标签将其包围,则标签将被放置在所选行的上方一行和下方。 您可能希望创建一个“按字符排列”的选择,并在包围它之前用
v
。 无论如何,请发布您创建的地图,以便我们进行调试。 更新资料 在评论中进行了澄清后,我会告诉您,环绕声插件不是最佳选择。顾名思义,它是为处理周围的内容而创建的。因此,您可能需要围绕内容。 根据您的情况,我建议您看一下HTML AutoCloseTag。键入
>
后,此插件将关闭html标签。它肯定更合适,并且比环绕声使用更少的击键。
<p         <--- Now when you type \">\", if becomes:
<p>|</p>   <--- Where \"|\" is the cursor.
显然,您将在每个标签上获得这种行为。但是,如果您喜欢它,那可能会很方便。     
在正常模式下,键入
vstp>
进入可视模式,并在当前光标位置的同一行上输出一个打开和关闭
<p>
标签。使用大写字母S来保持当前的缩进级别。 这不会像您所描述的那样将光标置于标签之间,但是Textmate的CtrlW快捷方式也没有(我认为您的意思是CTRL + Shift + w,而不是CTRL + ALT + w,因为后者只是输出菱形标志。)     
我的答案可能来晚了,但我会尽力提供帮助。 我对Vimsurround插件有类似的问题。每次我使用ctrl + V选择句子(一行)并尝试将其包围起来时,都会得到以下信息:
{
var myVar
}
代替这个:
{ var myVar } // what I wanted
我找到了简单的解决方案:从正常模式下,使用vis命令选择一行,然后键入大写字母C(我的vim环绕声映射)并选择方括号将其包围起来,然后将一行很好地包围起来。     
根据作者的实际需求,该问题的标题在技术上被误贴了标签,但是由于我实际上是在寻找标题中所提问题的答案,因此我认为我也应该提供答案。 要在不使用自动缩进的情况下在元素周围创建新标签,Vim Surround在使用逐块选择(即:VysS)时不会使用自动缩进,您可以执行以下操作: ^ ys $ 该命令会将光标移动到该行的第一个非空白字符,发出您要使用“环绕”的命令,然后移至该行的末尾。然后,只需开始输入标签。 结果是这样的:
<input type=\"email\" name=\"email\">
可能会变成这样:
<li><input type=\"email\" name=\"email\"></li>
该命令也可以重复使用。以及所有其他正常的Vim优点。     
偶然发现了这个问题,因为我也很想知道-我认为最简单的方法是:
yss<p>
yss
包围一行,但不缩进-参见此处:http://www.catonmat.net/blog/vim-plugins-surround-vim/)     

要回复问题请先登录注册