这是我的.vimrc 文件的一部分。
" when opening a Python file, use spaces instead of tabs (et, expandtabs),
" use 4 spaces as tabulation (ts=4, tabstop), use 4 spaces when adding
" a tabulation automatically (sw=4, shiftwidth) and thread 4 spaces as
" a tabulation when deleting (softtabstop=4)
au FileType python set et ts=4 sw=4 softtabstop=4
autocmd BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
autocmd BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
autocmd BufRead *.py nmap <F5> :!python %<CR>
它非常适合编辑 Python。但是,当我需要将预缩进的 Python 代码从剪贴板缓冲区粘贴到 Python 文件中时,我最终得到的结果是这样的:
class GlobalOptions:
def __init__(self):
self.DebugLevel = 0
def __repr__(self):
return "<GO>"
即使我使用 ':set noautoindent' 也会发生这种情况。
有没有一种简单的方法可以在 python 文件的智能自动缩进和可用于粘贴代码的原始输入模式之间切换?
如果可以避免这个问题,我很乐意尝试其他人的 .vimrc 文件。
我在分别运行于 Debian、RedHat 和 Ubuntu 上的 vim 6.3、7.0、7.1 上都遇到了这个问题。
答案1
您需要:set paste!
在将系统剪贴板中的内容粘贴到 vim 之前和之后进行。