我有一个非常大的文本文件,有近20列。不幸的是,生成该文件的程序没有正确处理以-10开头的列(它只有正确间隔的数据,总共有5个字符,而不是6个字符)。基本上我最终得到了这样的东西:
-10.072-10.179-10.2190.002
我希望它看起来像:
-10.072 -10.179 -10.219 0.002
并且几乎能够这样做:
Mx replace-regexp
RET -10\....
RET \&
TAB RET
但是,当我使用 TAB 时,它只替换为空格而不是制表符 - 理想情况下是制表符到制表符。如果我在文件中手动转到其中一种情况并键入 TAB ,它会正确执行制表符到制表符停止以将数据与正确的列对齐。如何在replace-regexp中保留制表符到停止功能?
答案 0 :(得分:1)
搜索和替换肯定应该插入一个标签。当然,标签的外观尺寸可能会有所不同,这是我能想到它看起来像是一个空间的唯一原因。您可以使用whitespace-mode
来改善差异。
至于tab-to-tab-stop
,这是一个动态函数,而不是一种特殊的制表符,所以你不能用搜索来替换 1 。我建议使用键盘宏来获得与手动输入相同的动态行为。
-10....
RET tab-to-tab-stop
RET 或者只是: F3 MCs -10....
RET TAB F4
然后你可以运行宏,直到失败为 C-0 F4
(如果你只想在缓冲区的一部分上运行它,你可以先缩小到相关区域。)
1 不完全正确,因为Emacs允许您评估任意elisp作为替换模式的一部分;但这不仅仅是调用tab-to-tab-stop函数的情况,因此宏更简单。