我喜欢使用制表符,而不是空格来进行缩进。
但是在保存文件时,我希望将制表符转换为4个空格的组。(因为文件可能会被打开和编辑在其他环境中)当然,如果我再次打开该文件,则应将这些生成的空格转换回制表符。(假设原始文本中没有连续4个空格)
我喜欢使用制表符,而不是空格来进行缩进。
但是在保存文件时,我希望将制表符转换为4个空格的组。(因为文件可能会被打开和编辑在其他环境中)当然,如果我再次打开该文件,则应将这些生成的空格转换回制表符。(假设原始文本中没有连续4个空格)
.vimrc
文件中:set noexpandtab
set tabstop=4
set shiftwidth=4
fun MyRetab()
set expandtab
retab
set noexpandtab
endfun
au FileWritePre *.YOURFILEEXTENSION call MyRetab()
但是我不知道你所说的"如果我再次打开文件,那些空格仍然应该被识别为制表符"是什么意思。
如果您在文件中写入空格而不是制表符,则很难撤消。 编辑:请参阅super retab wiki页面以撤消它!
注意如果您的源字符串内容中有制表符,则这也将替换该字符!
retab!
,它会尝试在适当的位置将空格替换为制表符。当我刚刚尝试时,这似乎效果很好,但我得到了一些错误的制表符。我想这取决于您假设没有其他4个空格序列而不是扩展制表符的好坏。
然而...这一切似乎都是一个冒险。根据我的经验,当有编码标准时,从一开始就遵守它们总是最容易的。以这种方式“修复”文件只会带来麻烦。smarttab
和expandtab
吗?