Vim配置:如何仅在保存时展开选项卡?

时间:2012-02-01 09:06:02

标签: vim

我喜欢标签,并喜欢缩进空格。

但是我想在保存文件时将标签转换为4空格组。 (因为该文件可能在其他环境中打开和编辑)当然,如果我再次打开文件,那些生成的空格应该转换回标签。 (假设原文中没有4个连续的空格)

2 个答案:

答案 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的行为。您是否尝试过使用smarttabexpandtab