使用Emacs replace regexp保留制表位到制表位止动块
我有一个非常大的文本文件,有将近20列。不幸的是,生成该文件的程序没有正确地处理以-10开头的列(它只正确地处理总共有5个字符的数据,而不是6个字符)。基本上,我的结局是这样的:使用Emacs replace regexp保留制表位到制表位止动块,emacs,Emacs,我有一个非常大的文本文件,有将近20列。不幸的是,生成该文件的程序没有正确地处理以-10开头的列(它只正确地处理总共有5个字符的数据,而不是6个字符)。基本上,我的结局是这样的: -10.072-10.179-10.2190.002 我希望它看起来像: -10.072 -10.179 -10.219 0.002 并且几乎可以通过以下方式实现: M-xreplace regexpRET-10\..RET\&TAB RET 然而,当我使用TAB时,它只替换为一个空格而不是
-10.072-10.179-10.2190.002
我希望它看起来像:
-10.072 -10.179 -10.219 0.002
并且几乎可以通过以下方式实现:
M-xreplace regexp
RET-10\..
RET\&
TAB RET
然而,当我使用TAB时,它只替换为一个空格而不是TAB,理想情况下是一个TAB-to-TAB-stop。如果我在文件中手动转到其中一种情况并键入TAB,它会正确地执行一个TAB-to-TAB-stop以将数据与正确的列对齐。如何在replace regexp中保留tab to stop功能?搜索和替换当然应该插入一个选项卡。当然,标签的外观大小可能会有所不同,这是我能想到的它看起来是一个空间的唯一原因。您可以使用
空白模式
使差异更加明显
至于制表符到制表符的停止
,这是一个动态函数,而不是一种特殊的制表符,因此不能通过搜索和替换1来完成。我建议改为使用键盘宏,以获得与手动键入相同的动态行为
- F3
- M-C-s
RET-10..
- M-x
RETtab-to-tab-stop
- F4
-10..
RETTABF4
然后,您可以运行宏,直到使用C-0F4失败为止
(如果您只想在缓冲区的一部分上运行它,只需先缩小到相关区域即可。)
1不完全正确,因为Emacs允许您将任意elisp作为替换模式的一部分进行评估;但这不仅仅是调用tab-to-tab-stop函数的情况,因此宏实际上要简单得多