我已经知道我可以:read !ls将 的输出附加ls到我的缓冲区中。如果我想为输出获得正确的缩进呢?
示例:我的缓冲区看起来像
def foo
# run :read !ls here
end
我已经知道我可以:read !ls将 的输出附加ls到我的缓冲区中。如果我想为输出获得正确的缩进呢?
示例:我的缓冲区看起来像
def foo
# run :read !ls here
end
最常见的方法是使用>后跟一些动作来缩进该区域,然后通过.命令简单地重复缩进。
:r!ls读入lsshell 命令的输出。`[。>`] .命令重复缩进,直到正确为止。和标记分别设置在最后更改的文本的开头和结尾[。]在这种情况下,输出:r!ls命令。
如需更多帮助,请参阅:
:h `[
:h .
<C-R>=可以通过在插入模式中与结合来做到这一点system()。
将光标移动到目标位置。然后进入插入模式并输入:
<C-R><C-P>=system('ls')<Enter>
<C-R><C-P>表示两个键组合CtrlR,CtrlP一个接一个。一旦您使用=,光标就会下降到您输入system('ls')以完成命令的提示。
那应该这样做。
这里的技巧是使用system()代替:read!:system()是一个函数,因此是一个表达式,因此我们可以在插入模式下将它与表达式寄存器结合起来。有关此特殊寄存器的更多信息,请参阅:h @=。
您可能已经熟悉<C-R>在插入模式下插入某些寄存器的内容。<C-R><C-P>就像它一样,但此外它还为您“修复”了缩进。文档位于:h i_CTRL-R_CTRL-P.