I have encountered something that I have never seen before in Vim. While I was tentatively modifying some of the source code for software I've been planning to work on, I noticed vim was displaying incorrect spacing for the line of code that I added. Gedit shows the code with the correct spacing. I know Gedit has the correct spacing because the Python code delivers errors if I change the code in Vim to be where it appears to belong within the Vim window. I have attached the Images below. The line that I added is the line that says: print "I am about to evaluate a factorial". I have included my short .vimrc file as well. Has anyone seen this? I have been using vim for months now and can't recall anything like this ever occuring.

  • Vim (Incorrect):

    Vim wrong

  • Gedit (Correct):

    Gedit right

  • Vimrc:

    Vimrc file

  • 3
    I know this might be a bit of a hassle, but could you turn on set list listchars=tab:>- and re-upload the first (Vim) picture? I think it would help us see what's going on with the tabs. – Tumbler41 Jun 22 '16 at 21:50
  • It looks to me like your vimrc is working just fine. The tab is 4 spaces as desired. However, the rest of the document is using only spaces. I would just use spaces on this line to fix the issue. Or at any rate, stay consistent between using tabs and spaces for indentation. – Tumbler41 Jun 22 '16 at 21:59
  • Using all spaces worked, thank you. I am surprised however as I would expect the tab to not be interpreted differently. – BenB Jun 22 '16 at 22:03

It gets reset by the Python filetype plugin; from /usr/share/vim/vim74/ftplugin/python.vim:

" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8

This file is loaded every time a Python file is loaded. Personally I find adding indentation settings here a bit surprising though.

At any rate, to override this use this in your vimrc:

augroup python
    autocmd FileType python setlocal noet ts=4
augroup end

This will get loaded after the ftplugin file, overriding the settings set there.

Personally, I would recommend against using tabs in Python files, as the community standard is to use spaces.

  • Yeah so make sure you have filetype plugin on in your vimrc. I wouldn't override the set tabstop=8 though. The reason is here – Antony Jun 22 '16 at 22:28

Solution for me was to add this line after the filetype plugin on into my ~/.vimrc file

filetype plugin on
autocmd FileType python setlocal noexpandtab shiftwidth=4 softtabstop=4

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.