移动到空行中的特定列

移动到空行中的特定列

我正在尝试使用 VIM 进行文字处理,例如,我可能需要将日期放在没有其他文本的行的第 70 列。因此,例如,如果第 1 行当前没有文本,而我想在第 70 列插入一些内容,我所知道的唯一到达第 70 列的方法是在插入模式下按空格键,这是一个非常缓慢的过程。

有没有办法在 VIM 中实现我想要实现的功能?即跳转到空白行中的特定列。即使我可以执行类似70l(向右移动 70 个空格)的操作,效果也很棒,但它在没有任何文本的行上不起作用。

答案1

您还可以考虑虚拟编辑,它允许您将光标移动到任何位置,无论那里是否有字符。

使用(简称set ve=all

:set virtualedit=all

启用它。然后使用70|转到 70 列。:help 'virtual edit'

要关闭它,请使用:set virtualedit=(简短形式set ve=

答案2

您可以70i先执行esc(那是70ispacebarEsc)。

对于您提到的具体情况-在第70列添加日期:

  • 69ispacebarEsc$

    这将创建69个空格,光标位于第69列;

  • :r !date Enter

    这会将命令的输出复制date到编辑缓冲区(下一行);

  • backspaceJ

完成此步骤后,您将获得从第 70 列开始的日期。

可能还有更简单的方法,但至少这个方法肯定有效。

答案3

虽然这不是最优雅的方法,但您可以修改shiftwidth,即单个制表符的大小。在命令模式下输入:set shiftwidth=1,然后在第 70 列输入您想要的内容,然后使用命令:(V大写 'v')突出显示当前行,然后输入70>。这样应该会将您的文本制表符放在 70 列上。

然后,将shiftwidth背部设置为 4 可能是一个好主意,以使制表符更加一致。除非这是你经常执行的任务,并且你不需要制表符。

答案4

另一种方法是设置tabstop为 70,并将expandtab制表符扩展为空格:

:se ts=70
:se et

然后您可以按 Tab 键到达第 70 列。

相关内容