我在Stack Overflow上看了几个关于如何将空格转换为制表符而没有找到我需要的问题。关于如何将制表符转换为空格,似乎有更多的问题,但我正试图做相反的事情。
在Vim中,我尝试过:retab和:retab!没有运气,但我相信这些实际上是用来从制表符到空格的。
我在命令提示符下尝试了展开和取消展开,但没有任何运气。
以下是该文件:
http://gdata-python-client.googlecode.com/hg-history/a9ed9edefd61a0ba0e18c43e448472051821003a/samples/docs/docs_v3_example.py
如何使用Vim或shell将前导空格转换为制表符?
使用Vim扩展所有前导空格(比'tabstop'更宽),使用retab是正确的,但首先确保'expandtab'被重置(:verbose set ts?外星人吗?是你的朋友)。retab需要一个范围,所以我通常指定%表示“整个文件”。
:set tabstop=2 " To match the sample file
:set noexpandtab " Use tabs, not spaces
:%retab! " Retabulate the whole file
在做这样的事情之前(特别是Python文件!),我通常设置“list”,这样我就可以看到空白和更改。
我在我的.vimrc中有以下映射:
nnoremap <F2> :<C-U>setlocal lcs=tab:>-,trail:-,eol:$ list! list? <CR>