我已经知道我可以:read !ls
将ls
的输出附加到我的缓冲区中。如果我想为输出得到正确的缩进怎么样?
示例:我的缓冲区看起来像
def foo
# run :read !ls here
end
答案 0 :(得分:4)
最常见的方法是使用>
后跟一些动作缩进区域,然后通过.
命令重复缩进。
:r!ls
以读取ls
shell命令的输出。`[
移至输出顶部。>`]
.
命令重复缩进,直到更正。 [
和]
标记分别设置在上次更改文本的开头和结尾。在这种情况下,输出:r!ls
命令。
如需更多帮助,请参阅:
:h `[
:h .
答案 1 :(得分:1)
可以通过在插入模式下将<C-R>=
与system()
相结合来实现此目的。
将光标移动到目标位置。然后输入插入模式并输入:
<C-R><C-P>=system('ls')<Enter>
<C-R><C-P>
表示两个关键组合 Ctrl R 和 Ctrl P ,一个在其他。只要您使用=
进行此操作,光标就会下拉到提示符,您可以在其中输入system('ls')
来完成命令。
应该这样做。
这里的技巧是用system()
代替:read!
:system()
是一个函数,因此是一个表达式,所以我们可以在插入模式下将它与表达式寄存器结合起来。有关此特殊寄存器的更多信息,请参阅:h @=
。
您可能已经在插入模式下熟悉<C-R>
以插入某些寄存器的内容。 <C-R><C-P>
就像它一样,但另外它“修复”缩进给你。文档位于:h i_CTRL-R_CTRL-P
。