当前位置:  开发笔记 > Android > 正文

vim - 如何读取文件到当前缓冲区的行范围

如何解决《vim-如何读取文件到当前缓冲区的行范围》经验,为你挑选了4个好方法。

我想从文件foo.c读取行n1-> n2到当前缓冲区.

我试过了: 147,227r /path/to/foo/foo.c

但我得到:"E16:无效范围",但我确定foo.c包含超过1000行.



1> 小智..:
:r! sed -n 147,227p /path/to/foo/foo.c



2> joeytwiddle..:

你可以在纯Vimscript中完成它,而不必使用像sed这样的外部工具:

:put =readfile('/path/to/foo/foo.c')[146:226]

请注意,我们必须从行号中减少一个,因为数组从0开始,而行号从1开始.

缺点:此解决方案比接受的答案长7个字符,并且它将暂时消耗相对于其他文件大小的内存.



3> Stewart John..:

{range}指的是当前文件中的目标,而不是源文件中的行范围.

经过一些实验,似乎

:147,227r /path/to/foo/foo.c

表示在此文件中插入第/path/to/foo/foo.c227行之后的内容.即:它忽略了147.



4> 小智..:

发布的其他解决方案非常适合特定的行号。通常,您想从另一个文件的顶部或底部读取。在这种情况下,读取头或尾的输出非常快。例如 -

:r !head -20 xyz.xml

将从xyz.xml的前20行读取到当前缓冲区中的光标所在的位置

:r !tail -10 xyz.xml 

将从xyz.xml中的最后10行读入当前光标所在的缓冲区

head和tail命令的速度非常快,因此,对于大型文件,甚至将它们组合起来也比其他方法要快得多。

:r !head -700030 xyz.xml| tail -30

将从文件xyz.xml中读取700000到700030的行号到当前缓冲区

即使对于相当大的文件,此操作也应该立即完成。

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有