当前行有文本对象吗?
^$
有文本对象吗?#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>
---编辑---
“运算符”是本身不会执行任何操作的命令:
d
,y
等。按下这些键,您将进入“操作者待命模式”,Vim等待您通过“操作者待命动作”告诉它要在什么操作上进行操作。
您可以使用
:omap
或:onoremap
定义自定义的操作员待定动作。此处使用的技术受:help omap-info
的启发:您定义了覆盖所需区域的可视模式映射,
在操作员待定的映射中使用了该映射。 />
请注意,我使用
:onoremap
是因为il
,al
和i%
不存在。如果要覆盖现有的运动或文本对象(例如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
评论
有一个插件