我正在尝试使用 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 列。