在vim可视块中移动光标以将块宽度更改为一个char宽度的最佳方法是什么?
例如:
这是我的文字:
ooo1xxxxx2oo
oooxxxxxxxoo
oooxxxxxxxooooooooooo
oooxxxxxxxooooooooooo
ooo4xxxxx3ooooooooooo
ooooooooooooooooooooo
现在处于视觉 - 阻止模式 - ,我的光标位于'3',所选的块是:
1xxxxx2
xxxxxxx
xxxxxxx
xxxxxxx
4xxxxx3
我想将上面选定的块更改为
1
x
x
x
4
现在我如何使用较少的键快速将光标从3移动到4? (不使用'F4'或'?4')('1','2','3','4','x','o'是为了方便解释,它们可能是随机字符)
答案 0 :(得分:1)
当光标位于3
时,按O
中的visual mode
(大O),会将光标移至4
您可能也想知道,当光标在3
上时,按o
(小o)会将光标移动到1
:h v_o
:h v_O
答案 1 :(得分:1)
离开当前选择后(使用 Esc ),'<
和'>
标记将有所帮助。不幸的是,没有内置动作只考虑它们的行/列(并忽略其他坐标)。
我要做的是观察选择的大小(在示例的右下角5x7
),将选择保留为<Esc>
,转到开头`<
,重新进入逐块可视模式<C-V>
,并将之前提到的行数(5
),减1,向下移动:4j
。
答案 2 :(得分:1)
我能做的最好的是这一系列命令:
<Esc>gvoO`<o
即 Escape 离开可视模式, gv
重新选择。这对于正确设置<
和>
标记是必要的(它们仅在离开可视模式后设置)。
oO
将光标移动到所选内容的右上角。
`<
将所选内容缩小为单个列。
o
将光标移动到选区的底部。
如果您经常需要,请考虑自定义映射:
:xnoremap <Leader>O <Esc>gvoO`<o