如何在Vim中选取整行作为操作对象?

12

我最近开始使用“surround”插件。我发现我不知道如何包围当前行。我的意思是,ysap<p>用于包围段落,ysaw<p> 用于包围单词。显然,dw删除一个单词,而 das删除一整个句子。 dd 删除一整行,但是,我担心第二个 d 选项并非我想要的。那么,ys?<p> 如何包围一整行?


1
注意:这个问题似乎是关于 surround.vim 插件的。 - Amadan
2个回答

29

重复syss),如ccddyy


25
你需要寻找的是下划线(_)命令。 Ryan 的答案也是正确的,ddd_ 更简单的输入方式,许多命令都有此优化。正如你在 :h _ 中看到的那样,它实际上并不是指当前行,而是向下第一个非空字符所在的行。这就是 dd 等命令使用的行为。但这并不是你在这种情况下想要的。使用 ys_ 命令实际上会给你想要的结果:
"
line
"

不要这样做:

"line"

因此,插件“surround.vim”通过实现一个“yss”命令来“欺骗”,该命令的工作方式不像“dd”、“cc”或“yy”那样工作,但适用于它所具有的用例。
因此,回答标题中的问题:“_”是通用解决方案。
如果您只是寻找“surround.vim”的使用,请参考Ryan的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接