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.
- 62,054
- 25
- 192
- 271
- 193
- 1
- 5
3 Answers
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.
To override it add this in your vimrc:
augroup python
autocmd!
" Add shiftwidth and/or softtabstop if you want to override those too.
autocmd FileType python setlocal noexpandtab tabstop=4
augroup end
This will get loaded after the ftplugin file, overriding the settings from there.
I would recommend against using tabs in Python files, as the community standard is to use spaces.
- 62,054
- 25
- 192
- 271
-
Yeah so make sure you have
filetype plugin onin your vimrc. I wouldn't override theset tabstop=8though. 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
- 131
- 3
Because the file python.vim, path in Debian 9 /usr/share/vim/vim81/ftplugin/python.vim, contains the following code
if !exists("g:python_recommended_style") || g:python_recommended_style != 0
" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
endif
the best to turn it off is to put
let g:python_recommended_style=0
into .vimrc and the code would not execute at all, because the plugin is usually executed after .vimrc.
Another solution is to create ~/.vim/after/ftplugin/python.vim hook as suggested in https://vi.stackexchange.com/a/13538/41302
- 111
- 1
-
I don't have enough reputation to link to this answer in the comment to https://vi.stackexchange.com/questions/13537/why-is-set-noexpandtab-in-my-vimrc-ignored-when-i-open-a-file/13538 – VojtaK Mar 11 '22 at 17:14



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