Vim:更改行时始终导航到设置列

Vim:更改行时始终导航到设置列

Vim 中是否存在与 Emacs 中的“目标列”概念相当的东西?

我想设置一个目标列,这样每当我在插入模式下导航到新行时,光标就会自动定位在给定的列上。

例如我有以下文字:

foo bar
foo bar
foo bar

我在第一行之间123<space>输入,然后有(管道符号显示我的光标所在的位置):foo bar

foo 123 |bar
foo bar
foo bar

我按下向下的箭头...然后我到达这里:

foo 123 bar
foo bar|
foo bar

但我想在这里结束:

foo 123 bar
foo |bar
foo bar

用例是,我正在输入一个数字列表以插入到一些现有文本中,并且我只想通过输入一个数字,然后按下,然后按下下一个数字,向下,数字,向下,数字,向下等来快速浏览,而不必每次都重新定位我的光标。

答案1

您可以使用宏将位置定位到列然后:

:map ,1 i123 <Esc>bj

...继续输入,1;或者你可以使用 Vim 的宏录制功能(:help recording):

qai123 ^[bjq

(将宏存储在寄存器‘a’中,最后q结束录制)。

然后,您可以使用重复计数(来自相应的列)并使用以下命令调用录制的宏@a

100@a

如果您希望每次输入不同的文本,并且只想拥有更智能的下一行功能,则可以为此创建一个宏:

:imap ,, <Esc>j5^V|i

^V 是文字Control-V,通过两次输入ControlV;下一个字符是管道,它将光标移动到第 5 列。

您可以在输入模式下使用此宏,输入数字,然后输入空格,然后,,这会将您移至第 5 列的下一行,仍处于输入模式。然后当您完成后::iunmap ,,

相关内容