Ame*_*ina 10 emacs large-files
本着与另一个问题相同的精神:cat line X to line Y on a large file:
有没有办法从 Emacs 中打开(并在缓冲区上显示)来自巨大文本文件的一组给定的行(例如 lineX
和之间的所有行Y
)?
例如,打开并在缓冲区中显示文件中第 57890000 行和 57890010 行之间的所有行 huge.txt
更新: 我对至少可以以只读方式打开行(仅用于显示目的)的解决方案感兴趣,尽管如果我也可以编辑行(并保存到原始文件)会很棒。
如果要打开整个文件(需要 ),但在编辑器窗口中仅显示其中的一部分,请使用缩小。选择要处理的缓冲区部分,然后按C-x n n
( narrow-to-region
)。如果您收到有关禁用命令的提示,请说“是”。按C-x n w
( widen
) 再次查看整个缓冲区。如果您保存缓冲区,则会选择完整的文件:所有数据仍然存在,缩小范围只会限制您看到的内容。
如果要查看文件的一部分,可以shell-command
使用前缀参数 ( M-1 M-!
)将其插入当前缓冲区;运行适当的命令来提取所需的行,例如<huge.txt tail -n +57890001 | head -n 11
。
还有一个 Lisp 函数insert-file-contents
可以接受一个字节范围。您可以使用M-:
( eval-expression
)调用它:
(insert-file-contents "huge.txt" nil 456789000 456791000)
Run Code Online (Sandbox Code Playgroud)
请注意,您可能会遇到整数大小限制(取决于版本和平台,请检查 的值most-positive-fixnum
)。
理论上,可以编写一种 Emacs 模式,根据需要透明地加载和保存部分文件(尽管整数大小的限制会使在 32 位机器上无法使用实际文件偏移量)。我所知道的在这个方向上的唯一努力是VLF(这里是GitHub 链接)。
归档时间: |
|
查看次数: |
2043 次 |
最近记录: |