在vim可视块中移动光标以将块宽度更改为一个char宽度的最佳方法

时间:2013-12-04 12:17:31

标签: vim

在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'是为了方便解释,它们可能是随机字符)

3 个答案:

答案 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