Answers:
这是一个粗略的“行”文本对象:
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
的o
视觉模式。
o
onoremap中的(操作员暂挂模式)?什么是o
视觉模式呢?我想这是“另一面”,因为它似乎跳到了选择的另一面...我如何找到:h
它?我无法使用:h x_o
或找到它:h o
。
我建议使用^而不是0(因此,该行从第一个字符的开头开始):
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
这样,如果我们“在线更改”,它将尊重缩进级别。