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

标签 python vim vi

我想在新行中引入一个 制表符 字符,以便在 vim 中为 python 文件创建新 block 。

示例

当我写作时

if(a < 5): 

并按Enter,光标应进入下一行,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 之外,还会创建一个额外的空格,创建错误的缩进。

提前感谢您的帮助

最佳答案

你尝试做到这一点的方式是困难的。有一个文件类型插件和一个 Python 语法类型,它已经知道要做什么。

filetype plugin indent on

并且不要使用设置自动缩进。它不是很智能,它只是复制前一行的缩进。这与您想要做的相反。

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

:set filetype=python

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

" Globally
set noexpandtab

" Python only
autocmd FileType python set noexpandtab

但是,我会注意到,不建议在 Python 中使用选项卡,这违背了已发布的最佳实践(请参阅 PEP 8 )。

最后我要提一下,“插件”只是一个 Vim 术语。默认情况下,所有这些都随 Vim 一起提供,这不会创建第三方依赖项。

关于python - 在 vim 中为 python 文件创建 block 时在新行中引入 <Tab>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108986/

相关文章:

python - 使用 Python 访问不断变化的网页元素

python - 如何从路径字符串中获取文件夹名称并将其添加到 pandas 数据框中的新列?

python - 从文件中提取字符串列表

python - 如何使用 python 按位置计算字符串中相同字符的数量?

xml - Vim 中的模式感知 XML 编辑

vim - 从 vi/Vim 调用键序列上的共享对象

vim - 安装 vscodevim 扩展时如何在 vim-emulation 和 no-vim-emulation 之间切换?

vim - 强制 vim 覆盖外部更改

windows - Vim 错误 E510 : Can't make backup file (add ! 覆盖)

Vim/vi 生存指南