我已经知道我可以:read !ls
将 的输出附加ls
到我的缓冲区中。如果我想为输出获得正确的缩进呢?
示例:我的缓冲区看起来像
def foo
# run :read !ls here
end
我已经知道我可以:read !ls
将 的输出附加ls
到我的缓冲区中。如果我想为输出获得正确的缩进呢?
示例:我的缓冲区看起来像
def foo
# run :read !ls here
end
最常见的方法是使用>
后跟一些动作来缩进该区域,然后通过.
命令简单地重复缩进。
:r!ls
读入ls
shell 命令的输出。`[
。>`]
.
命令重复缩进,直到正确为止。和标记分别设置在最后更改的文本的开头和结尾[
。]
在这种情况下,输出: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
.