我喜欢标签,并喜欢缩进空格。
但是我想在保存文件时将标签转换为4空格组。 (因为该文件可能在其他环境中打开和编辑)当然,如果我再次打开文件,那些生成的空格应该转换回标签。 (假设原文中没有4个连续的空格)
答案 0 :(得分:2)
好.vimrc
:
set noexpandtab
set tabstop=4
set shiftwidth=4
fun MyRetab()
set expandtab
retab
set noexpandtab
endfun
au FileWritePre *.YOURFILEEXTENSION call MyRetab()
但我不知道你的意思“如果再次打开文件,那些空格应该仍被识别为标签。”
如果你写一个文件空格而不是标签,那么它就不能轻易撤消AFAIK。 编辑:请参阅super retab wiki page进行撤消!
注意如果您的来源的字符串内容中有标签,那么它也会替换它!
答案 1 :(得分:1)
除了Zsolt Botykai的答案之外,您可以尝试使用retab!
,它会尝试在适当的位置使用制表符替换空格。当我尝试它时,这似乎工作得很好,但我有一些错误的标签。我想这取决于你的假设有多好,除了扩展标签之外没有其他4个空格序列。
然而...... 这一切似乎都是冒险的事情。根据我的经验,当存在诸如此类的编码/编码标准时,从一开始就始终最容易遵守它们。以这种方式“修复”文件是在寻找麻烦。
我认为Vim在仅使用空格时可以很好地模拟类似于Tab的行为。您是否尝试过使用smarttab
和expandtab
?