2014-12-30 29 views
1

運行作爲解決的問題Why does vim not obey my expandtab in python files?描述的問題,我已經加入這個我的vimrc:自動命令在VimEnter不受的MacVim

let g:use_tabs = 1 
let g:indent_width = 4 
let g:tab_width = 4 

function! SetIndent() 
    if g:use_tabs 
     set noexpandtab 
     set softtabstop=0 
     let &shiftwidth = g:indent_width 
     let &tabstop = g:tab_width 
    else 
     set expandtab 
     let &softtabstop = g:indent_width 
     let &shiftwidth = g:indent_width 
     let &tabstop = g:tab_width 
    endif 
endfunction 

autocmd VimEnter * call SetIndent() 

在終端運行VIM時,這完美的作品,但它似乎MacVim根本不運行call SetIndent()命令。

這是因爲忽略的MacVim或VimEnter它運行在其他時間比VIM? 我該如何修復我的vimrc,以便它也可以在MacVim中使用?


編輯:鏈接到我的全部的vimrc:https://ghostbin.com/paste/3xnw7

+0

該功能是毫無意義的。你只需要把你的設置放在'〜/ .vim/after/ftplugin/python.vim'中。 – romainl

+1

@romainl我寧願沒有重複的代碼一般和python縮進。 – Tyilo

+1

1.您的函數中已經有重複的代碼。 2.我建議的解決方案是事實上的Vim標準:使用正確的ftplugins進行文件類型特定的設置。 – romainl

回答

2

爲Python的默認設置是:

setlocal tabstop=8 
setlocal softtabstop=4 
setlocal shiftwidth=4 
setlocal expandtab 

如果你想改變,說... 'expandtab',你只需要將下面的行放在~/.vim/after/ftplugin/python.vim中:

setlocal noexpandtab 

是的,您需要爲每個不喜歡默認設置的文件類型執行此操作。它比使用一個函數更簡單,更快,更可靠,更易維護。

KISS。