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.
It gets reset by the Python filetype plugin; from
" 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.
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
.vimrc and the code would not execute at all, because the plugin is usually executed after
Another solution is to create
~/.vim/after/ftplugin/python.vim hook as suggested in https://vi.stackexchange.com/a/13538/41302