當我安裝了Vundle後,我的vim不再服從我的expandtab設置。我的標籤設置爲2個空格,但現在在python文件中不再那麼做了。問題被稱爲這條線:爲什麼vim不遵守python文件中的expandtab?
filetype plugin on
這條線做什麼(這是vundle要求)?另外,我能做些什麼來確保我的設置得到遵守?
謝謝!
的vimrc:pastebin.com/tGmfCi78
當我安裝了Vundle後,我的vim不再服從我的expandtab設置。我的標籤設置爲2個空格,但現在在python文件中不再那麼做了。問題被稱爲這條線:爲什麼vim不遵守python文件中的expandtab?
filetype plugin on
這條線做什麼(這是vundle要求)?另外,我能做些什麼來確保我的設置得到遵守?
謝謝!
的vimrc:pastebin.com/tGmfCi78
的問題是,你的設置是由一個插件這是覆蓋Vim的一部分。問題是在ftplugin/python.vim
:
" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
蟒蛇插件嘗試設置你的源代碼是PEP8兼容默認情況下,所以它的調整製表位。你會想要一些這些插件所提供的,但是你可能需要設置你自己的自動命令來修復你不喜歡的任何東西。
有兩種方法可以做到這一點。如果你有一個~/.vim
文件夾,最簡單的方法是添加文件~/.vim/after/ftplugin/python.vim
:
" Here, you can set the setting directly, or call a command or function
" to help you. We'll call a command, and then implement that command in
" your top-level vimrc to help keep things in one place.
SetupPython
在你.vimrc
,添加:
function! SetupPython()
" Here, you can have the final say on what is set. So
" fixup any settings you don't like.
setlocal softtabstop=2
setlocal tabstop=2
setlocal shiftwidth=2
endfunction
command! -bar SetupPython call SetupPython()
後者位只允許你調用該函數爲SetupPython
,而在後文件中比call SetupPython()
。
另一種方法是將所有內容保存在.vimrc
中,但是使用VimEnter
自動命令爲python設置FileType自動命令以設置您的首選項。通過等待直到VimEnter
被觸發,其他所有的插件都將有足夠的時間來建立自己的自動命令,這樣你的將被添加到列表的末尾。這允許你在python插件的FileType
自動命令之後運行並設置你自己的設置。這是有點亂的,雖然,上面的after/
機構是這樣做的優選方式。
FWIW,我保留在SetupSource()
函數中的許多常見設置可以從多個不同的FileType
s中調用。然後我會有SetupPython()
致電SetupSource()
。這有助於保持特定功能的清潔並減少一些重複。如果有幫助,看看功能在我這裏vimfiles:https://github.com/jszakmeister/vimfiles/blob/master/vimrc#L5328
重寫設置
這可能是因爲這些設置是由特定語言的設置覆蓋。有關更多信息,請參見http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean:
快速的入門方法是從你的.vimrc文件裏將所有的特定語言的東西到一個命名的.vim /文件類型插件/ language.vim(或$ HOME/vimfiles文件Windows上的/ftplugin/language.vim)。
檢查這些位置是否爲python特定的.vim
文件。
文件類型上
Vundle似乎需要filetype off
,我不知道你是否應該重新打開它。 Vundle的github issues page上有一個線索,解釋了爲什麼需要filetype on
。也許這將提供一些見解。
我也認爲有filetype plugin indent on
其次是filetype on
是重新編號。按照vim help docs,前者變成檢測,插件和縮進,並在後者的旋轉檢測和葉插件和縮進不變:
Overview: *:filetype-overview*
command detection plugin indent
:filetype on on unchanged unchanged
:filetype off off unchanged unchanged
:filetype plugin on on on unchanged
:filetype plugin off unchanged off unchanged
:filetype indent on on unchanged on
:filetype indent off unchanged unchanged off
:filetype plugin indent on on on on
:filetype plugin indent off unchanged off off
繼承人我的vimrc:http://pastebin.com/tGmfCi78。我真的沒有任何朗特定的東西。任何想法什麼是錯的? –
通常編輯問題以包含.vimrc的內容會更好。 – Jon
好的!謝謝 –
我會推薦使用setlocal而不是set爲ftplugins。 – FDinoff
注意python.vim'的'最新版本,您可以通過設置來關閉PEP-8風格: '讓G:python_recommended_style = 0'。 另見:https://github.com/sullyj3/vim-ftplugin-python/blob/73bf4ed079b50f6c7259f81e02b6cca42fdc4ca3/python.vim#L59 – Maarten