在 vim 中为 python 文件创建块时在新行中引入 <Tab>

introduce <Tab> in new line while creating a block for python files in vim

我想在新行中引入一个 tab 字符,以便在 vim 中为 python 个文件。

示例

当我写作时

if(a < 5): 

然后按Enter,光标应该会出现在下一行tab after if 从上面的行垂直对齐。像这样

if(a < 5):  
    a = 5 

我已经像这样配置了我的 .vimrc 文件

set nu
set autoindent
set tabstop=4
syntax enable
set showmatch
colorscheme gruvbox 
set bg=dark

"automatically creates a block after :
autocmd FileType python inoremap :<CR> :<CR><Tab>  

注:
1) 最后一行,我写的是为了我问题中提到的预期目的。
2) 设置了自动缩进。
3) 我不想使用任何插件。

我面临的问题:

当我在 : 之后按 Enter 时,除了 tab,还会创建一个额外的 space,这会造成错误的缩进。

在此先感谢您的帮助

您尝试执行此操作的方法很困难。有一个文件类型插件和一个 Python 语法类型,它已经知道要做什么。

filetype plugin indent on

并且不要使用 set autoindent。它不是很智能,它只是复制上一行的缩进。这与你想要做的相反。

.py 结尾的文件应该会自动获得正确的设置。如果需要在缓冲区中强制使用当前语法类型,可以使用

:set filetype=python

如果您想使用制表符而不是空格,

" Globally
set noexpandtab

" Python only
autocmd FileType python set noexpandtab

但是,我会注意到,不推荐在 Python 中使用制表符,这违背了已发布的最佳实践(参见 PEP 8)。

最后我会提到 "plugin" 只是一个 Vim 术语。默认情况下,所有这些都附带 Vim,这不会创建第三方依赖项。