当前行有文本对象吗?
^$有文本对象吗?


评论

有一个插件

#1 楼

这是一个粗略的“行”文本对象:

xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>


和一个粗略的“缓冲区”文本对象:

xnoremap i% GoggV
onoremap i% :normal vi%<CR>


---编辑---

“运算符”是本身不会执行任何操作的命令:dy等。

按下这些键,您将进入“操作者待命模式”,Vim等待您通过“操作者待命动作”告诉它要在什么操作上进行操作。

您可以使用:omap:onoremap定义自定义的操作员待定动作。此处使用的技术受:help omap-info的启发:


您定义了覆盖所需区域的可视模式映射,
在操作员待定的映射中使用了该映射。 />
请注意,我使用:onoremap是因为ilali%不存在。如果要覆盖现有的运动或文本对象(例如ip),则必须使用递归映射::omap

:help :map-operator描述了一种稍微高级的方法。适用于可视模式下的:help v_o

评论


凉。您介意解释一下吗?什么是onoremap中的o(操作员暂挂模式)?视觉模式下的o有什么作用?我想这是“另一面”,因为它似乎跳到了选择的另一面...我如何找到:hon它?我用:h x_o或:h o找不到它。

–林德
16年1月14日在18:14



#2 楼

我建议使用另一种解决方案,使用^而不是0(因此该行从第一个字符的开头开始:

一致”将尊重缩进级别。

评论


还有一个插件由vim master kana提供此功能:github.com/kana/vim-textobj-line/blob/master/doc/…

–布拉斯科
19-09-25在17:24