0

我已经知道我可以:read !ls将 的输出附加ls到我的缓冲区中。如果我想为输出获得正确的缩进呢?

示例:我的缓冲区看起来像

def foo
  # run :read !ls here
end
4

2 回答 2

4

最常见的方法是使用>后跟一些动作来缩进该区域,然后通过.命令简单地重复缩进。

  • :r!ls读入lsshell 命令的输出。
  • 通过 移动到输出的顶部`[
  • 通过缩进输出>`]
  • 只需使用.命令重复缩进,直到正确为止。

和标记分别设置在最后更改的文本的开头和结尾[]在这种情况下,输出:r!ls命令。

如需更多帮助,请参阅:

:h `[
:h .
于 2013-08-14T19:11:26.917 回答
1

<C-R>=可以通过在插入模式中与结合来做到这一点system()

将光标移动到目标位置。然后进入插入模式并输入:

<C-R><C-P>=system('ls')<Enter>

<C-R><C-P>表示两个键组合CtrlRCtrlP一个接一个。一旦您使用=,光标就会下降到您输入system('ls')以完成命令的提示。

那应该这样做。

这里的技巧是使用system()代替:read!:system()是一个函数,因此是一个表达式,因此我们可以在插入模式下将它与表达式寄存器结合起来。有关此特殊寄存器的更多信息,请参阅:h @=

您可能已经熟悉<C-R>在插入模式下插入某些寄存器的内容。<C-R><C-P>就像它一样,但此外它还为您“修复”了缩进。文档位于:h i_CTRL-R_CTRL-P.

于 2013-08-14T19:38:25.920 回答