Manter o código dos outros? Inferno Space-Tab? Sem problemas, eu uso o Vim

Às vezes preciso trabalhar na base de código de outro. Ok, isso acontece um pouco mais do que às vezes. Alguns desenvolvedores usam tabulações para recuar, outros usam 3 ou 4 espaços. Eu uso 2 espaços.

Ao abrir a base de código, preciso alterar minhas configurações. Mas posso lidar com isso. Estas linhas ficam no final do meu .vimrc:

" Maintain other's code (shit happening sometimes)
fun MaintainOthersCode(tab, isSoft)

if a:isSoft

set expandtab

else

set noexpandtab

endif

let &tabstop=a:tab

let &shiftwidth=a:tab

let &softtabstop=a:tab

endfun


command! -nargs=* MaintainOthersCode call MaintainOthersCode(<f-args>)

O que isso faz por mim? Quando eu preciso mudar o recuo para tab, então eu apenas digito :MaintainOthersCode 2 0que significa que eu quero mudar meu recuo para 2 espaços, mas com tabulação. O primeiro parâmetro define o comprimento da indentação e o segundo é um booleano como “Deseja usar soft-tabs?”

Alguns exemplos:

" this is my default: 2 spaces
:MaintainOthersCode 2 1

"
3 spaces
:MaintainOthersCode 3 1
" 4 spaces
:MaintainOthersCode 4 1

"
2 characters length tab
:MaintainOthersCode 2 0
" 3 characters length tab
:MaintainOthersCode 3 0

"
4 characters length tab
:MaintainOthersCode 4 0

Essas mudanças não são permanentes. Quando fecho o vim ou abro um novo, recupero as minhas preferências.